7

我知道在 perfmon 中,您可以看到每个内核的使用量,以及特定进程使用的总 CPU 量。但是,我似乎无法找到一种方法来查看一个进程正在使用多少 CPU,按内核划分。

是否有内置方法可以查看此信息?有没有一种程序化的方式来查看这个?(首选 C#)我是否通过提出这个问题来证明对 Windows(Vista)如何处理核心使用和上下文切换的误解?

编辑:更多澄清我想知道的内容。我的进程仅使用 30-40% 的总 CPU(在四核上)是因为它没有足够的多线程来利用更多,还是因为它太受 I/O 限制并且磁盘访问是瓶颈?

那么根本就没有办法做到这一点吗?(除了确保计算机上没有其他 CPU 活动)

4

2 回答 2

2

Process Explorer 至少可以向您显示给定进程的线程以及它们正在使用多少 CPU。也许您可以以某种方式获得线程正在运行的核心/cpu,然后加起来。不过,我没有太多 WinAPI 经验。所以也许处理器亲和力只能在进程上查询。

于 2009-03-12T15:58:26.407 回答
2

您无法直接获取给定进程的每个处理器的周期时间,但您可以随着时间的推移估计它QueryIdleProcessorCycleTime(因为它返回所有逻辑处理器(即核心)的空闲时间)QueryProcessCycleTime并假设它是唯一的非空转进程运行。

于 2009-03-12T16:09:37.550 回答