[英]PerformanceCounter (and Performance Monitor) showing different result than Task Manager
我有以下代码:
PerformanceCounter c = new PerformanceCounter("Processor", "% Processor Time", "_Total");
然后我将它用于: c.NextValue()
我得到的大约是任务管理器管理器显示的 CPU 利用率的两倍。 虽然我的 cpu 有 2 个内核,但据我所知,这不会有什么不同。 那么为什么会发生这种情况呢? 或者我对导致它的双核有什么误解? (虽然搜索了一段时间,但我找不到任何有关性能计数器列表的文档。)
编辑
正如评论中所建议的,我尝试了 perfmon (Performance Monitor),它显示了我得到的相同结果。 为什么会出现差异?
根据此博客,如果您想匹配任务管理器的确切值,您应该使用“处理器信息”而不是“处理器”。 问题是什么价值是正确的,但我猜这是一个设计决定。
对于执行性能测试和分析的人员来说,记录 CPU 利用率数据的能力至关重要。 为此,可以通过 logman.exe 配置数据收集器集,以在“处理器信息”对象中记录“% Processor Time”计数器。
PerformanceCounter c = new PerformanceCounter("Processor Information", "% Processor Time", "_Total");
应该做。
如果您使用它,您可以使用任务管理器获得相同的结果:
cpuCounter = new PerformanceCounter(
"Processor Information",
"% Processor Utility",
"_Total",
true
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.