我正在开发一个大型应用程序,想了解两个时间点之间 CPU 的负载情况。我不仅对我自己的流程感兴趣,而且对所有流程感兴趣。
我的想法是在两个时间段之间获取空闲进程的总 CPU 时间。然后将该值与实际时间差进行比较。然后可以计算在空闲进程上花费的平均 CPU 时间百分比,从而计算在实际进程上花费的平均 CPU 百分比。
例如:
- 实时样本:2012/07/30 13:56:1 和 2012/07/30 13:56:21
- 空闲进程总 CPU 时间样本:56:23:10 和 56:23:15
- 实时差异:20s
- 空闲进程总CPU时间的差异:5s
- 空闲进程中的平均 % CPU 时间:25%
- 实际进程中的平均 % CPU 时间:75%
为了尽可能减少对性能的影响,我只想取两个样本。一个在开头,一个在结尾。
我也不想查看其他进程来计算总 CPU 负载,只查看空闲进程。(例如我不想计算其他进程的总 CPU 时间的总和)
我曾尝试使用 Kernel32.dll OpenProcess。但显然您无法访问空闲进程。它抛出一个 ERROR_ACCESS_DENIED 异常。
这必须是可能的,因为任务管理器显示空闲进程的总 CPU 时间。
注意:我对进程的瞬时 % CPU 时间不感兴趣。只有 Total CPU Time 才能在以后计算平均值。