gpt4 book ai didi

c# - 监控进程对每个 CPU 核心的使用情况

转载 作者:可可西里 更新时间:2023-11-01 03:11:18 31 4
gpt4 key购买 nike

有没有办法分别查询或计算每个每个内核单个进程的CPU使用率?

例如,

Name - - - - Core1 - Core2 - Core3 - Core4
firefox.exe - 0.5% - - 0.1% - - 0.2% - - 0.3%

我知道一个名为“Process Explorer”(由 Mark Russinovich 开发)的程序可以执行此操作,但我如何在 C# 中执行此操作?我查看了 System.Diagnostics 命名空间,但找不到符合我要求的内容。

这是我想要实现的目标的图片,

http://i.stack.imgur.com/XySpQ.png

最佳答案

有一种方法可以获取该信息,您需要使用内核调试器。我怀疑如果 Visual Studio Concurrency Visualizer 可以获取此信息来制作漂亮的报告和可视化效果,那么您也可以从 Windows 内核获取它以供您使用。

您可以在此处查看一些文档 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 重新部署它。 .该 DLL 可在此处独立使用 http://www.microsoft.com/en-us/download/details.aspx?id=41646 .

我们的想法是了解此 DLL 如何使用内核跟踪来了解哪个线程在哪个内核上,并复制它以获得准确的统计信息。此外,我认为 ProcessExplorer 确实通过使用 Kernel Debugger API 获取了一些统计信息,因为当我启动 Concurrency Visualizer 工具时,Visual Studio 会与它发生冲突。

这会很有趣但很难做到。

关于c# - 监控进程对每个 CPU 核心的使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18945029/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com