有没有办法查询或计算CPU使用率单一进程 per 每个核心分别地?
例如,
名称 - - - - 核心1 - 核心2 - 核心3 - 核心4
火狐.exe - 0.5% - - 0.1% - - 0.2% - - 0.3%
我知道一个名为“Process Explorer”(由 Mark Russinovich 编写)的程序可以执行此操作,但我如何在 C# 中执行此操作?我已经看过了System.Diagnostics
命名空间,但我找不到任何符合我要求的东西。
这是我想要实现的目标的图片,
有一种方法可以获取该信息,您需要使用内核调试器。
我的怀疑是,如果 Visual Studio Concurrency Visualizer 可以获取此信息来制作精美的报告和可视化,那么您也可以从 Windows 内核获取它以供您使用。
您可以在这里查看一些文档http://msdn.microsoft.com/en-us/library/windows/hardware/ff552961(v=vs.85).aspx http://msdn.microsoft.com/en-us/library/windows/hardware/ff552961(v=vs.85).aspx .
但更有趣的事情可以通过逆向在 Visual Studio 2012 安装目录中找到的 Microsoft.ConcurrencyVisualizer.dll 来发现。
我认为你也可以在你的项目中直接使用这个DLL,尽管你不能按照http://msdn.microsoft.com/en-US/vstudio/hh857605#files http://msdn.microsoft.com/en-US/vstudio/hh857605#files。该 DLL 可以在这里独立使用http://www.microsoft.com/en-us/download/details.aspx?id=41646 http://www.microsoft.com/en-us/download/details.aspx?id=41646.
我们的想法是了解这个 DLL 如何使用内核跟踪来了解哪个线程位于哪个内核上,并复制它以获得准确的统计信息。另外,我认为 ProcessExplorer 确实通过使用内核调试器 API 获取了一些统计信息,因为当我启动 Concurrency Visualizer 工具时,Visual Studio 与它发生冲突。
这将很有趣,也很难做到。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)