Ich beobachte die prozentuale Auslastung meiner CPU durch einen Prozess. Wie verbraucht ein Prozess nur 50% der CPU? Verwendet ein Prozess nicht 100%, dann 0%, dann 100%? Es ist nicht wie bei jeder anderen Anweisung ein anderes Programm.
performance
cpu
.net-framework
Anthony D.
quelle
quelle
Antworten:
Es werden nur ungefähr einmal pro Sekunde Summen abgefragt. Sie sehen, wie viel von der letzten Sekunde verwendet wurde.
Wenn Sie eine CPU sehen, die für eine Weile bei 50% sitzt, ist es wahrscheinlich, dass sie 100% einer CPU in einem Dual-CPU-System verwendet.
quelle
Technisch sind Sie richtig. Zu jedem Zeitpunkt wird die CPU entweder verwendet oder nicht verwendet. Die Anzeige in einem Diagramm wäre jedoch nicht sehr hilfreich, sodass das Diagramm die durchschnittliche CPU-Auslastung über einen bestimmten Zeitraum, wahrscheinlich jede Sekunde, ermittelt.
quelle
Das Betriebssystem plant den Prozess für einen bestimmten Zeitraum. Wenn der Prozess also für (sagen wir) 1 ms von 10 ms geplant ist, wird 10% CPU verwendet.
Dies ist ein wenig eingängig, da der Prozess (in einem Single-Threaded-Single-CPU-System) entweder ausgeführt wird oder nicht. dh es verwendet 100% oder 0%. Der Prozentsatz, den Sie sehen, wird über ein Zeitfenster gemessen und ist ein Maß für das Betriebssystem, das Ihrem Prozess Zeitschlitze für die Ausführung zuweist.
Beachten Sie, dass Ihr Prozess nicht dazu beiträgt, wenn Sie auf E / A zugreifen. Wenn Sie also eine große Berechnung durchführen, registrieren Sie 100% (vorausgesetzt, es wird nichts anderes ausgeführt). Wenn Sie dann auf einen Netzwerkpaket- / Festplattenzugriff usw. warten, sinkt Ihre CPU-Zahl, obwohl Ihr Prozess noch ausgeführt wird.
quelle
Auf einem sehr niedrigen Niveau haben Sie im Grunde Recht. Zu jedem Zeitpunkt führt der Prozessor entweder eine Anweisung für einen bestimmten Prozess aus oder nicht.
Ihr Betriebssystem befindet sich jedoch zwischen Ihren Prozessen und dem Prozessor, sodass diese Zeit gemeinsam nutzen. Der angezeigte Prozentsatz ist der Prozentsatz der letzten Verarbeitungszeit, die das Betriebssystem diesem Prozess gewährt hat.
quelle
Es basiert auf der durchschnittlichen Zeit. Obwohl alle Threads dieselbe CPU-Zeit haben können (basierend auf der Priorität), können die Threads einfach "Danke, aber ich bin untätig" sagen und an den nächsten Thread übergeben. Aus diesem Grund verbrauchen Programme nicht immer dieselbe% Zeit, und die meisten Programme verbrauchen 0% CPU, und Programme, die wirklich CPU benötigen, können fast 100% der Zeit für sich selbst in Anspruch nehmen.
Warum ist es auf 50% begrenzt? Sie haben wahrscheinlich zwei CPU-Kerne und es wird nur einer verwendet.
Oder, wie vorgeschlagen, wird Hyperthreading verwendet, aber ich weiß nicht, wie sich dieses genau verhält.
quelle
Ihr Programm führt möglicherweise viele E / A-Vorgänge aus (Lese- / Schreibvorgänge auf der Festplatte oder im Netzwerk). Das würde das Programm beschäftigen, aber wenig bis gar keine CPU-Zeit benötigen.
quelle
Die Systemauslastung wird abgetastet und gemittelt, was nur sinnvoll ist.
ZB wird aufgezeichnet, wie viel Zeit ein Prozess / Thread während einer Sekunde ausgeführt hat. Wenn es 1 Sekunde auf der CPU verbracht hat, sind das 100% CPU (oder 50%, wenn Sie 2 CPUs haben usw.), wenn es 100 ms verbraucht hat, sind das 10% CPU-Auslastung.
quelle