我有以下代码:
PerformanceCounter c = new PerformanceCounter("Processor", "% Processor Time", "_Total");
然后我将其用于:c.NextValue()
我得到的是任务管理器管理器显示的cpu利用率的两倍。虽然我的cpu有2个核心,据我所知that's not supposed to make a difference。那为什么会这样呢?或者我错误的双核导致它? (虽然搜索了一段时间,我找不到任何性能计数器列表的文档。)
修改
正如评论中所建议的,我尝试了perfmon(性能监视器),它显示了我得到的相同结果。为什么会出现这种差异?
答案 0 :(得分:2)
根据this blog,如果要匹配任务管理器的确切值,则应使用“处理器信息”而不是“处理器”。问题是什么价值是正确的,但我认为这是一个设计决定。
对于执行性能测试和分析的人员而言 记录CPU利用率数据是至关重要的。数据收集器 set可以通过logman.exe配置来记录“%Processor 用于此目的的“处理器信息”对象中的“计数器”。
PerformanceCounter c = new PerformanceCounter("Processor Information", "% Processor Time", "_Total");
应该这样做。
答案 1 :(得分:0)
如果使用此选项,则可以通过任务管理器获得相同的结果:
cpuCounter = new PerformanceCounter(
"Processor Information",
"% Processor Utility",
"_Total",
true
);