Wie kann mein Computer 300% der PC-Rechenleistung nutzen?

65

Ich spiele mit einem Skript herum und bin hin und weg (es läuft noch und mein Computer ist noch nicht gestorben). Ich führe 17 Iterationen des Skripts aus (mit der Absicht, meinen Computer zum Absturz zu bringen).

Wenn ich mir den Aktivitätsmonitor ansehe, sehe ich, dass jeder Python-Prozess eine eindeutige PID hat und ungefähr 17-20% meiner Rechenleistung in Anspruch nimmt ... Wie ist das möglich? Hat mein Computer auf magische Weise 200% mehr Strom verbraucht und irgendwo die Gesetze der Thermodynamik gebrochen?

Geben Sie hier eine Bildbeschreibung ein

Frankenmint
quelle
28
300% einer CPU = 3 CPUs.
user253751
7
"Leistungsstufen sind 400%"
Nitish
Erinnert mich an all die Star Trek-Folgen, in denen die Warp-Triebwerke außer Kontrolle geraten ...
Daniel
Das ist ein ernstes Übertakten !!
Andrew Grimm

Antworten:

101

Unter OS X wird die CPU-Auslastung wie bei anderen * Nixen pro virtuellem Prozessorkern gemessen. Wenn Sie mehrere haben, können Sie 200% und mehr unter Volllast kombinieren.

Dies unterscheidet sich von Windows und möglicherweise auch von einigen anderen Systemen, bei denen die CPU-Auslastung für die gesamte CPU berechnet wird (oder CPUs - ich kann mich nicht erinnern, wie sie sich verhält, wenn mehrere physische Prozessoren vorhanden sind).

Vasfed
quelle
21
Diese Antwort ist nur für einige Plattformen zutreffend! Beispielsweise gibt Windows die gesamte CPU-Auslastung an und nicht als Prozentsatz eines einzelnen Kerns.
Fabspro
2
Es ist zu beachten, dass die Dezimallastdarstellung (z. B. 0,5 oder 2,4), wie sie beispielsweise vom Befehl "uptime" angegeben wird, nicht die Summe der prozentualen Kernnutzung ist , sondern eine Schätzung der Anzahl der Kerne, die Sie zur sofortigen Verarbeitung jeder Anforderung benötigen würden. Ich bin nicht sicher, wie stark diese App die Werte normalisiert.
Sebb
3
@Sebb der Load Average (LA) ist die durchschnittliche Anzahl der Prozesse, die auf die Ausführung warten. Möglicherweise warten sie auf
E / A
3
@ Random832 von linux man - man7.org/linux/man-pages/man1/uptime.1.html : "Die durchschnittliche Systemlast ist die durchschnittliche Anzahl von Prozessen, die sich entweder in einem ausführbaren oder in einem unterbrechungsfreien Zustand befinden. Ein Prozess in einem ausführbaren Zustand verwendet entweder die CPU oder wartet auf die CPU. Ein unterbrechungsfreier Prozess wartet auf einen E / A-Zugriff, z.
Vasfed
4
@slebetman load average geht nicht um die CPU-Zeit, sondern um die Warteschlangenlänge, siehe beispielsweise serverfault.com/a/524818
Vasfed
81

OS X und Linux sowie möglicherweise andere UNIX-Betriebssysteme (oder besser gesagt die gängigsten Tools auf diesen Systemen) zeigen die CPU-Auslastung anders an als Windows. Unter Windows bedeutet 100% " alle verwendeten CPU-Ressourcen". Unter Linux bedeutet dies, dass ein "Thread" (wie beim Hyper-Threading) vollständig ausgelastet ist. Als solches kann es (Number of Threads per Core) * (Number of Cores per CPU) * (Number of CPUs)insgesamt bis zu erreichen .

Eine weitere interessante Tatsache ist, dass Windows 10 die CPU-Auslastung unter Verwendung des aktuellen Drosselungszustands der CPU weiter normalisiert, obwohl dies nicht vollständig verwandt ist. Eine mit 1 GHz gedrosselte 2-GHz-CPU ist also nur zu 50% ausgelastet.

Daniel B
quelle
7
Interessante Tatsache. :)
Hennes
7
Und mit Turbo Boost meldet Windows, dass die CPU zu über 100% läuft
Martheen Cahya Paulo,
Ich denke, das ist der BSD-Weg, nicht der * nix-Weg im Allgemeinen. Ich sehe dasselbe auf meinem Mac und meiner FreeBSD-Box.
JDługosz
1
@ JDługosz Ich bin mir ziemlich sicher, dass dies auch für Linux gilt, zumindest für einige seiner Tools. Ich bin mir ziemlich sicher, dass ich mich so topverhalte.
Reirab
12

Wie bereits in mehreren Antworten erwähnt, zeigt Mac den CPU-Prozentsatz jedes Prozesses als "Prozentsatz eines Kerns" an, sodass Sie diesen durch die Anzahl der Kerne dividieren sollten [einschließlich HT als "doppelt"].

Wenn Sie sich nicht sicher sind, über wie viele virtuelle Kerne Sie verfügen, Cmd ⌘ 3 wird der Bereich "CPU-Verlauf" von Activity Monitor geöffnet, in dem Sie einfach die Stripes zählen können.

Bildbeschreibung hier eingeben

Direkt unterhalb der Stelle, an der Sie das Bild abgeschnitten haben, befinden sich die Informationen, die Sie benötigen, um die tatsächliche Gesamtnutzung für System :, User: & Idle: Darin liegt Ihre einfache Summe zu 100%.

Bildbeschreibung hier eingeben

Tetsujin
quelle
4
Jedoch im Ernst? 24 Kerne ???? Ich habe kaum 4 :) Bis in der Tat danke für das Teilen !: puu.sh/nNrHU/f2abb55dc7.png
Frankenmint
5
ahh ... ja - es ist ein Mac Pro 5,1 - die letzte "Käsereibe". Dual 6-Core-Xeons [+ HT];)
Tetsujin
6

Activity Monitor misst nicht die Verarbeitungsleistung, die jede App / jeder Prozess verwendet, sondern schätzt sie nur mithilfe eines Algorithmus. So kann es ungenau sein ...

Wie @Vasfed hervorhebt, wird der CPU-Verbrauch pro Prozessorkern gemessen. Mehrere Kerne können eine Auslastung von mehr als 100% bedeuten ...

Ein Geek stößt gelegentlich auf dieses Phänomen und ist verblüfft, bis ein Superuser zu Hilfe kommt ...; D

rahuldottech
quelle
@underscore_d Ja ... aber als ich antwortete, gab es nur eine andere Antwort. Die anderen (zugegebenermaßen besseren) Antworten wurden später veröffentlicht ...
rahuldottech
fair genug, ich hätte die Zeiten hinter den "Tagen" überprüfen sollen ... es ist nicht so schlimm: p
underscore_d