Wie kann mein Computer 300% PC-Rechenleistung nutzen?

14529
Frankenmint

Ich spiele mit einem Skript herum und nun habe ich mich mitreißen lassen (es läuft immer 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 anschaue, sehe ich, dass jeder Python-Prozess eine eindeutige PID hat und dass er jeweils etwa 17-20% meiner Prozessorleistung in Anspruch zu nehmen scheint. Wie ist das möglich? Ist mein Computer magisch um 200% gewachsen und hat die Gesetze der Thermodynamik irgendwo gebrochen?

Wie kann mein Computer 300% PC-Rechenleistung nutzen?

64
300% einer CPU = 3 CPUs. user20574 vor 8 Jahren 28
"Leistungsstufen sind 400%" Nitish vor 8 Jahren 7
Erinnert mich an all die Star Trek-Episoden, bei denen die Warp-Engines außer Kontrolle geraten ... Daniel vor 8 Jahren 0
Das ist eine ernsthafte Übertaktung !! Andrew Grimm vor 8 Jahren 0

4 Antworten auf die Frage

101
Vasfed

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

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

Diese Antwort ist nur für einige Plattformen genau! Beispielsweise meldet Windows die Gesamtlast der CPU und nicht den prozentualen Anteil eines einzelnen Kerns. fabspro vor 8 Jahren 21
Es ist erwähnenswert, dass die Dezimallastdarstellung (z. B. 0,5 oder 2,4), wie sie beispielsweise vom Uptime-Befehl gemeldet wird, _nicht_ die Summe jedes Kernauslastungsprozentsatzes ist, sondern eher eine Schätzung der Anzahl der Kerne, die Sie sofort bearbeiten müssen. Ich bin mir nicht sicher, wie sehr diese App die Werte normalisiert. Sebb vor 8 Jahren 2
@Sebb Der Lastdurchschnitt (LA) ist die durchschnittliche Anzahl von Prozessen, die auf die Ausführung warten. Sie warten möglicherweise auf E / A und nicht auf die CPU Vasfed vor 8 Jahren 3
@Vasfed Der gemessene Status "Bereit zur Ausführung" bedeutet, auf CPU warten zu müssen - eine E / A-Wartezeit zählt nicht dazu. _Alle Prozesse warten auf _etwas_ (abgesehen von dem Prozess, der höchstens pro CPU-Kern ausgeführt wird). Random832 vor 8 Jahren 1
@ Random832 scheint systemspezifisch zu sein, in Linux ist io enthalten Vasfed vor 8 Jahren 0
Ich habe keine Ahnung, woher du diese Informationen bekommst. Dies ist ein Konzept, das in Unix-Systemen seit den frühen achtziger Jahren existiert, und Prozesse einzubeziehen, die auf E / A warten, wären verrückt. Random832 vor 8 Jahren 1
@ Random832 von Linux Man - http://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 einem unterbrechungsfreien Zustand befinden. Ein Prozess In einem lauffähigen Zustand wird entweder die CPU verwendet oder wartet auf die Verwendung der CPU. Ein Prozess im unterbrechungsfreien Zustand wartet auf einen E / A-Zugriff, z. B. auf eine Festplatte. " Vasfed vor 8 Jahren 3
@Vasfed: Unter Linux und allen anderen Unixen benötigen Prozesse, die auf E / A warten, keine CPU-Zeit (sie sind nicht für die Ausführung geplant, sie schlafen nicht), sodass sie zum Durchschnittslastwert Null beitragen. Abhängig von der Semantik des Englischen kann der Beitrag von Null als Beitrag zum Nulldurchsatz der Last oder als Beitrag zum Durchschnittsdurchschnitt der Last interpretiert werden. slebetman vor 8 Jahren 1
Bei @slebetman load Average handelt es sich nicht um die CPU-Zeit, sondern um die Länge der Warteschlange (siehe http://serverfault.com/a/524818) Vasfed vor 8 Jahren 4
@Vasfed: Um genauer zu sein, handelt es sich um die Länge der Warteschlange "ready". Die Warteschlange von Aufgaben, die zur Ausführung bereit ist. Prozesse, die auf E / A warten, befinden sich nicht in der Warteschlange. Sie tragen also einen Mittelwert der Nulllast bei. slebetman vor 8 Jahren 1
@slebetman versuchen das Ruby-Beispiel aus dieser Antwort auf Linux - aufgrund von GIL in MRI-Ruby wird jeweils nur ein Thread ausgeführt. Die meisten dieser Threads warten auf IO oder einen Mutex, erzeugen jedoch schnell 30+ LA mit einer fast leeren CPU-CPU (Beachten Sie, dass dies nur für Linux, osx, * bsd usw. gilt, zählen IO in LA nicht.) Vasfed vor 8 Jahren 1
Während der Task-Manager von Windows den CPU-Auslastungswert auf einer Skala von "100% = Volllast über alle Kerne" meldet, wird der CPU * time * -Wert pro Kern angegeben - ein Prozess, der 100 Sekunden lang 100% CPU verwendet Quad-Core-System, meldet dies als 20 Sekunden CPU-Zeit. Quelle: Die CPU-Zeit meines Quad-Core-Windows-PCs für den Leerlaufprozess nähert sich dem 4-fachen meiner Betriebszeit, während die Betriebszeit gegen unendlich geht. Dan Henderson vor 8 Jahren 0
Ich denke du meinst "Mehrfachsteckdosen". Jeder Kern (oder ein Paar logischer Hyper-Threading-Kerne) in einer Intel-CPU * ist * ein separater physischer Prozessor. Sie befinden sich zufällig auf demselben Siliziumstück, eng miteinander verbunden und teilen die unteren Ebenen einer Cache-Hierarchie. Peter Cordes vor 8 Jahren 0
@Vasfed Diese Manpage ist nicht so genau, wie sie sein könnte. Der ununterbrechbare Zustand wird nur für "schnelle" E / A verwendet, normalerweise Festplatten. Diese Prozesse haben den Status ** B ** in 'ps'. Für langsame E / A blockierte Prozesse, wie das Netzwerk und die Terminals, befinden sich im 'S'-Zustand und tragen nicht zum Lastdurchschnitt bei. Barmar vor 8 Jahren 0
81
Daniel B

OS X und Linux sowie möglicherweise andere UNIX-Betriebssysteme (bzw. die auf diesen Systemen am häufigsten verwendeten Tools) zeigen die CPU-Nutzung 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 bis zu (Number of Threads per Core) * (Number of Cores per CPU) * (Number of CPUs)insgesamt reichen .

Obwohl nicht vollständig miteinander verwandt, eine weitere interessante Tatsache: Windows 10 normalisiert die CPU-Nutzung weiter, indem der aktuelle Drosselungszustand der CPU verwendet wird. Eine mit 2 GHz gedrosselte 2-GHz-CPU ist also nur zu 50% ausgelastet.

Interessante Tatsache. :) Hennes vor 8 Jahren 7
Und mit Turbo Boost meldet Windows, dass die CPU über 100% läuft. Martheen Cahya Paulo vor 8 Jahren 7
Ich denke, das ist der BSD-Weg, nicht der * Nix-Weg im Allgemeinen. Ich sehe das gleiche auf meinem Mac und meiner FreeBSD-Box. JDługosz vor 8 Jahren 0
@ JDługosz Ich bin mir ziemlich sicher, dass es auch für Linux gilt, zumindest für einige seiner Tools. Ich bin mir ziemlich sicher, dass sich "top" zum Beispiel so verhält. reirab vor 8 Jahren 1
12
Tetsujin

Wie bereits in mehreren Antworten dargelegt, zeigt Mac den CPU-Prozentsatz jedes Prozesses als "Prozentsatz eines Kerns". Teilen Sie diesen Wert daher durch die Anzahl der Kerne [einschließlich HT als "double"].

Wenn Sie sich nicht sicher sind, wie viele virtuelle Kerne Sie haben, Cmd ⌘ 3 wird der CPU-Verlaufsbereich von Activity Monitor angezeigt, in dem Sie die Streifen einfach zählen können.

Direkt unterhalb des Bildes, an dem Sie das Bild abgehackt haben, befinden sich die Informationen, die Sie benötigen, um die tatsächliche Gesamtnutzung für System schnell zu ermitteln :, Benutzer: & Idle: Darin liegt Ihre einfache Summe zu 100%.

Jedoch im Ernst? 24 kerne ???? Ich habe gerade 4 bekommen :) TIL in der Tat, danke für das Teilen !: http://puu.sh/nNrHU/f2abb55dc7.png Frankenmint vor 8 Jahren 4
ahh ... ja - es ist ein Mac Pro 5.1 - die letzte der "Käsereiben". Duale 6-Kern-Xeons [+ HT];) Tetsujin vor 8 Jahren 5
6
rahuldottech

Der Aktivitätsmonitor misst nicht wirklich die Verarbeitungsleistung, die jede App / jeder Prozess verwendet, sondern schätzt sie einfach mithilfe eines Algorithmus. So kann es ungenau sein ...

Wie @Vasfed darauf hinweist, wird die CPU-Auslastung pro Prozessorkern gemessen. Mehrere Kerne können eine Nutzung von mehr als 100% bedeuten ...

Ein Geek stolpert gelegentlich über dieses Phänomen und ist verblüfft, bis ihm ein Superuser zu Hilfe kommt ...; D

@underscore_d Ja ... aber als ich antwortete, gab es nur eine andere Antwort. Die anderen (zugegebenermaßen besseren) Antworten wurden später gepostet ... rahuldottech vor 8 Jahren 0
Ich hätte die Zeiten nach dem "Days" -Level überprüfen müssen ... es ist nicht so schlimm: p underscore_d vor 8 Jahren 0