【发布时间】:2012-07-30 15:47:02
【问题描述】:
我正在开发一个大型应用程序,想了解两个时间点之间 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 负载,只查看空闲进程。 (例如我不想计算其他进程的 Total CPU Time 的总和)
我尝试使用 Kernel32.dll OpenProcess。但显然您无法访问空闲进程。它抛出一个 ERROR_ACCESS_DENIED 异常。
这必须是可能的,因为任务管理器会显示空闲进程的总 CPU 时间。
注意:我对进程的瞬时 % CPU 时间不感兴趣。只有 Total CPU Time 才能在以后计算平均值。
【问题讨论】: