我知道在perfmon中你可以看到每个核心的使用量,以及特定进程使用的CPU总量。但是我似乎无法找到一种方法来查看进程使用内核分解的CPU数量。
是否有内置的方式来查看此信息?是否有程序化的方式来看到这个? (C#首选)我是否通过提出这个问题来展示对Windows(Vista)如何处理核心使用和上下文切换的误解?
编辑:更清楚我想要了解的内容。我的进程是否仅使用30-40%的总CPU(在四核上),因为它没有足够的多线程来利用更多,或者是因为它太I / O限制和磁盘访问是瓶颈?
那么根本没办法做到这一点吗? (除了确保计算机上没有其他CPU活动)
答案 0 :(得分:2)
Process Explorer至少可以显示给定进程的线程以及使用的CPU数量。也许你可以以某种方式获得线程运行的核心/ cpu,然后加起来。不过,我没有太多的WinAPI经验。因此,可能只能在进程上查询处理器关联。
答案 1 :(得分:2)
您不能直接获取给定进程的每个处理器周期时间,但您可以使用QueryIdleProcessorCycleTime
随时间估计它(因为它返回所有逻辑处理器(即核心)的空闲时间)和{ {1}}并假设它是唯一正在运行的非空闲进程。