| |
|
|
Jac de Lad | Weiß jemand, wie ich von meinem Prozess die Prozessorauslastung auslesen kann, ähnlich Taskmanager?
Jac |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 17.06.2008 ▲ |
|
|
|
|
| onIdle=0%, andernfalls 100%, also vor dem waitInput (oder getMessage) 0% und danach 100%. Zwischen subClassProc Anfang und Ende auch 100%. Das auf die Zeit geglättet ist Deine Prozessauslasung. |
|
|
| |
|
|
|
Jac de Lad | Aha. Aber ich glaube kaum, dass mein Prog meinen Prozi zu 100% ausreizt, zumal der mehrere Kerne hat. Außerdem laufen ja noch andere Programme. Und der Taskmanager gibt immer einen Wert um die 8% raus. |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 17.06.2008 ▲ |
|
|
|
|
Jörg Sellmeyer | Wenn Du mal Dein Programm analysierst , wirst Du feststellen, daß es höchstens für Sekundenbruchteile wirklich den Prozessor belastet. Dann wartet es wieder auf Eingaben. Dieses Programm lastet dagegen Deinen Prozessor voll aus: KompilierenMarkierenSeparieren Ein normales Programm nutzt vielleicht für 1 Sekunde in fünf Minuten den Prozessor wirklich aus - wenn überhaupt. Wenn natürlich Umfangreiche Berechnungen anliegen auch mehr. Also mit iFs Methode kann man schon eine grobe Schätzung hinbekommen.
Vielleicht hilft Dir das weiter: [...] [...] |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 17.06.2008 ▲ |
|
|
|
|
| Es ist wie Jörg sagt!
Zudem, die exakte Last weiss nicht einmal Windows - es tut auch nur ähnlich wie oben beschrieben. Das liegt daran, dass die Prozessoren mittlerweile für verschiedene Aufgaben verschiedene Subprozessoren beauftragen können und nicht für jede Aufgabe exakt die selbe Abarbeitungsgeschwindigkeit haben. Gäbe es in Windows nicht verschiedene Abarbeitungsschichten so würde der Taskmanager keine globale Last anzeigen können, es gäbe dann auch keine PerformanceCounter. Die Messung kann also nur passiv geschehen - das kann man z.B. am Taskmanager auch ganz hervorragend beobachten. Dazu kommt das man eigentlich auch nochmal unterscheiden müsste zwischen CPU-Last und Kernel-Last - hierbei kann man wiederum die Kerneleffiziens (oder damit auch Deine Programmeffiziens) herausrechnen.
Die Performancecounter-Apis (Userebene) beziehen Ihre Daten auch nur aus Herumrechnerei auf Kernelebene.
Hier auch mal interessant: [...] (Denk Dir das Linux dort einfach weg, der Mechanismus ist grob der selbe weil er sich zur Zeit schlichtweg so ergibt.) |
|
|
| |
|
|
|
| Jac
Aha. Aber ich glaube kaum, dass mein Prog meinen Prozi zu 100% ausreizt.
Und ob, wenn es nicht grad onIdle ist, da Windows (grundsätzlich) bemüht ist schnellstmöglich abzuarbeiten...
Natürlich gibt es hierbei (wie immer) X Ausnahmen, aber ein Print 1 verbraucht (grundsätzlich) 100% CPU bis es fertig ist.
Wie Dein Board diese Last wiederum auf Deine Prozessoren verteilt ist eine andere Sache...
Und was der Taskmanager anzeigt ist nur eine windowseigene Durchschnittsschätzung, daher z.B. Deine 8% statt 100% 0% 0% 0%...
Kleiner Beweis: Taskmanager kann 0% und 100% Last anzeigen - weder das Eine noch das Andere kann tatsächlich wahr sein. |
|
|
| |
|
|