繁体   English   中英

PerformanceCounter(和性能监视器)显示与任务管理器不同的结果

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM