Was bedeutet der Prozentsatz der CPU?

11

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.

Anthony D.
quelle
1
Hast du zufällig einen Doppelprozessor?
Auf jeden Fall eine Frage an SuperUser.
Noldorin

Antworten:

16

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.

Joel Coehoorn
quelle
4
"ein Kern eines Dual-Core-Systems" - ... oder sogar eine einzelne CPU mit "Hyperthreading".
@ ChrisW: behoben.
Joel Coehoorn
Der prozentuale Anteil der CPU-Auslastung wird häufig für jede CPU einzeln mit 100% angegeben, sodass die Gesamtmenge der in einem Dual-Core-System zu verwendenden CPU-Leistung 200%, in einem Quad-Core-System 400% usw. beträgt.
David Z
Nicht im Windows Task Manager sind sie nicht.
Joel Coehoorn
11

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.

Eric Petroelje
quelle
3

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.

Brian Agnew
quelle
2

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.

tim
quelle
1

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.

Zufluchtsort
quelle
0

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.

Mike Zwei
quelle
0

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.

nr
quelle