2009-06-23 8 views
26

Was bedeutet es genau, eine CPU-Auslastung von 350% (durch einen Prozess) auf einer 4-CPU-Box zu haben? Der Prozess ist ein "mysqld", der derzeit von einem simulierten OLTP-Szenario "bombardiert" wird.Verstehen der "höchsten" CPU-Auslastung

Alle Hinweise geschätzt.

+1

Sollte dies nicht zu ServerFault verschoben werden? –

Antwort

40

In * NIX Land, 100% CPU-Nutzung ist 100% einer einzelnen CPU.

Dies gilt für Multi-Core-Prozessoren genauso wie echte Multiprozessor-Computer.

Also, Sie verwenden 7/8 Ihrer gesamten CPU-Zyklen auf MySQL.

+1

Es sei denn, er hat Multithreading-Cores, wie sie sich als einzelne Kerne zeigen. Ich arbeite auf einem Server mit Dual-6-Core-Xeon-Prozessoren und es zeigt sich als 24 Kerne, wenn es wirklich physisch hat 12. – bafromca

4

Es gibt 4 x 100%, also "top" zeigt insgesamt 400% auf einer 4 CPU-Box.

3

Jeder CPU-Prozess wird als 100% betrachtet. Also total 400% von 4 CPU.

28

Drücken Sie bei laufendem Top "1". Dadurch wird die Ansicht umgeschaltet, sodass Sie die Last pro einzelnen Kern/CPU sehen können.

18

Ich habe gerade einen interessanten Artikel zu diesem Thema gestern gelesen: Unix load average. Es erklärt alles, was Sie wissen müssen und mehr.

Extrakt:

Die durchschnittliche Belastung ist die Summe der Laufwarteschlangenlänge und die Anzahl der Jobs derzeit auf den CPUs ausgeführt wird. In Solaris 2.0 und 2.2 enthielt der Lastdurchschnitt nicht die laufenden Jobs, aber dieser Fehler wurde in Solaris 2.3 behoben.

Beachten Sie, dass es zwei grundlegende Modi zum Laden gibt: "IRIX-Modus" und "Solaris-Modus". Im IRIX-Modus (Linux-Standard) bedeutet ein Lastdurchschnitt von 1, dass eine CPU vollständig geladen ist (oder 25% jeder CPU auf einem 4-CPU-System usw.). Im Solaris-Modus bedeutet ein Lastmittelwert von 1, dass alle CPUs vollständig geladen sind (entspricht also tatsächlich "IRIX-Modus" Laden dividiert durch CPU-Anzahl).

+1

Das war ein sehr cooler und informativer Link! Vielen Dank! –

6

Der Lastdurchschnitt zeigt an, wie viele Prozesse in der Warteschlange warten (angepasst an die Anzahl der CPUs). Bei einer CPU bedeutet ein Lastdurchschnitt von 1,0, dass diese CPU in der Lage ist, alle Anforderungen in der Warteschlange optimal zu verarbeiten - kein Prozess wartet auf die CPU und keine CPU-Zyklen werden verschwendet (d. H. Inaktiv). Ein Lastdurchschnitt von 2,0 (auf einem Single-Core-System würde bedeuten, dass die Hälfte der Prozesse auf eine Chance warten würde, auf der CPU zu laufen :-(Ein Lastdurchschnitt von 0,33 würde bedeuten, dass das System so wenig belastet wird 2/3 der Zeit, in der die CPU im Grunde nichts anderes tut, als auf weitere Prozesse zu warten

Der von oben angezeigte CPU-Prozentsatz ist ein Maß dafür, wie oft ein einzelner Prozess vom Kernel geladen wird, um auf der CPU zu laufen. gemittelt über einen Zeitraum, also 350% auf einem 4-Kern-System bedeutet, dass mysqld für eine gewisse Zeit drei volle CPUs und die Hälfte der Zeit der vierten CPU übernehmen würde - dh es müssen so viele Threads laufen dass es die 4 Kerne mit Anfragen ziemlich überschwemmt.CPU-Prozentsatz berücksichtigt nicht wirklich die Wartewarteschlangen (während der Ladedurchschnitt dies tut): es ist eine nachträgliche Tatsache, was in einem bestimmten Zeitraum passiert ist gewiss y zeigt, welche Prozesse die CPU (s) zuletzt verwendet haben.

Ein weiterer gründlicher Artikel zum selben Thema: http://www.linuxjournal.com/article/9001