2009-03-12 5 views
5

Ich weiß in Perfmon können Sie sehen, wie viel jeder Kern verwendet wird, und wie viel CPU insgesamt einen bestimmten Prozess verwendet. Ich kann jedoch keinen Weg finden, um zu sehen, wie viel CPU ein Prozess durch Kerne zerlegt wird.Gibt es eine Möglichkeit zu sehen, wie viel CPU-Nutzung pro Prozessorkern verwendet wird?

Gibt es eine integrierte Möglichkeit, diese Informationen zu sehen? Gibt es einen programmatischen Weg, dies zu sehen? (C# bevorzugt) Bekomme ich ein Missverständnis darüber, wie Windows (Vista) die Kernnutzung und den Kontextwechsel handhabt, indem ich diese Frage stelle?

Bearbeiten: Weitere Klarstellungen dessen, was ich herausfinden will. Verwendet mein Prozess nur 30-40% CPU (auf einem Quad Core), weil er nicht ausreichend multi-threaded ist, um mehr zu nutzen, oder weil er zu I/O-gebunden ist und Festplattenzugriff der Flaschenhals ist?

Also gibt es keine Möglichkeit, das überhaupt zu tun? (abgesehen davon, dass auf dem Computer keine andere CPU-Aktivität aktiv ist)

Antwort

1

Process Explorer kann Ihnen die Threads eines bestimmten Prozesses und die CPU-Auslastung anzeigen. Vielleicht kannst du den Core/CPU, auf dem die Threads laufen, irgendwie bekommen und dann einfach addieren. Ich habe allerdings nicht viel Erfahrung mit WinAPI. Möglicherweise kann die Prozessoraffinität nur in Prozessen abgefragt werden.

2

Sie können nicht direkt erhalten, die pro-processer Zykluszeiten für einen bestimmten Prozess, aber man kann es im Laufe der Zeit schätzen, mit QueryIdleProcessorCycleTime (wie es Ruhezeiten für alle logischen Prozessoren zurückgibt, dh Kerne) und QueryProcessCycleTime und unter der Annahme, dass es ist der einzige Nicht-Leerlaufprozess, der ausgeführt wird.

+0

lol, schwer zu meinem Prozess zu sein, der einzige nicht-Leerlauf-Prozess, wenn in Vista läuft, so viel Hintergrundgeräusche – Davy8