Is there a way to see how much CPU usage per core a process is using?

血红的双手。 提交于 2019-12-06 00:34:46

问题


I know in perfmon you can see how much each core is utilized, and how much total CPU a particular process is using. However I can't seem to find a way to see how much CPU a process is using broken down by cores.

Is there a built-in way to see this information? Is there a programmatic way to see this? (C# preferred) Am I demonstrating a misunderstanding of how Windows (Vista) handles core usage and context switching by asking this question?

Edit: More clarification of what I want to find out. Is my process only using 30-40% total CPU (on a quad core) because it's not sufficiently multi-threaded to utilize more or is it because it's too I/O bound and disk access is the bottleneck?

So is there no way to do this at all? (other than make sure there's no other CPU activity going on on the computer)


回答1:


Process Explorer at least can show you the threads of a given process and how much CPU those are using. Maybe you can get the core/cpu on which the threads are running somehow and then just add up. I have not much WinAPI experience, though. So maybe processor affinity can only be queried on processes.




回答2:


You can't directly get the per-processer cycle times for a given process, but you can estimate it over time with QueryIdleProcessorCycleTime (as it returns idle times for all logical processors, i.e., cores) and QueryProcessCycleTime and assuming that it is the only non-idling process running.



来源:https://stackoverflow.com/questions/639277/is-there-a-way-to-see-how-much-cpu-usage-per-core-a-process-is-using

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!