Wie kann ein Lastdurchschnitt von 0,00 vorliegen?


12

Ich verstehe, dass der Lastausgleich eine Methode ist, um zu messen, wie beschäftigt die CPU ist. Ich verstehe jedoch nicht, wie ein Lastdurchschnitt von 0.00existieren kann. Läuft der Kernel nicht immer? Nimmt das nicht an der CPU-Auslastung teil?


6
Beachten Sie, dass in den meisten Fällen, was Sie als 0,00 sehen, wirklich 0,0001 oder so ist
PlasmaHH

1
Früher war es die durchschnittliche Länge der Laufwarteschlange. Mit anderen Worten, wie viele Prozesse waren zur Ausführung bereit (und warteten nicht auf E / A usw.). Wenn es keine gibt, ist es 0,00. Heutzutage ist dies meiner Erfahrung nach nur möglich, wenn Sie keinen grafischen Desktop, sondern nur einen GUI-freien Server ausführen.
Thorbjørn Ravn Andersen

Der Vollständigkeit halber glaube ich, dass es eine der BSDs war, die für eine Weile einen Kernel-Fehler hatten, bei dem der Kernel-Leerlauf-Thread in den Lastdurchschnitt einbezogen wurde, was einen Lastdurchschnitt von 1,00 verursachte, wenn das System überhaupt nichts tat. Das wurde ziemlich schnell behoben.
ein Lebenslauf

Antworten:


16

Der Lastdurchschnitt über einen Zeitraum ist die durchschnittliche Anzahl von Prozessen, die in diesem Zeitraum um die CPU konkurrierten. Der "Kernel" läuft nicht, wenn nichts zu tun ist. Genauer gesagt, wenn nichts zu tun ist, wird der CPU ein spezieller "Leerlauf" -Thread zugewiesen, der nicht gezählt wird (und der möglicherweise den Status "Setzen" hat, in dem die CPU auf einen Interrupt wartet).

So bedeutet beispielsweise ein Lastdurchschnitt von 0,6 über 5 Minuten in der Regel, dass die CPU während dieser 5 Minuten von einigen Prozessen (oder vom Kernel) insgesamt 3 Minuten und von einigen Prozessen (oder vom Kernel) insgesamt 2 Minuten lang verwendet wurde war untätig. Wie @UKMonkey jedoch feststellt, bedeutet dies möglicherweise, dass nach viereinhalb Minuten Nichtstun in den letzten 30 Sekunden 6 Prozesse um die CPU kämpften ...

Die CPU befindet sich im Leerlauf, wenn kein Prozess zum Ausführen von Code verwendet werden soll, da alle Prozesse entweder auf den Abschluss einer Eingabe- oder Ausgabeoperation warten oder auf den Ruhezustand warten, um zu einem bestimmten zukünftigen Zeitpunkt geweckt zu werden.

@ Panthers Links bieten ausführlichere Informationen zu Lastdurchschnitten.


1
Der Lastdurchschnitt von 0,6 für 5 Minuten könnte auch bedeuten, dass viereinhalb Minuten lang nichts getan wurde - und dann warteten in den letzten 30 Sekunden eine erhebliche Anzahl von Prozessen auf die CPU-Zeit CPU hat getan - aber wie viele Prozesse haben darauf gewartet, es zu verwenden.
UKMonkey

@ UKMonkey: Völlig richtig ... Durchschnittswerte sind Durchschnittswerte und derselbe Durchschnitt kann auf viele Arten erhalten werden. Bearbeitet die Antwort, um zu erklären, dass ein moderater Durchschnitt nicht bedeutet, dass Spitzen auch vernünftig sind.
AlexP

13

Ein Lastdurchschnitt ist ein Maß dafür, wie überlastet ein CPU-Kern in Bezug auf die Anzahl der Prozesse ist, die ihn gleichzeitig verwenden möchten.

Im Folgenden wird von einer Single-Core-CPU (Single-Thread-CPU) ausgegangen:

  • 0.0

    Die CPU macht überhaupt nichts. Wenn ein Prozess anfangen würde, die CPU zu verwenden, dann wäre dies der einzige, der sie verwendet.

    Eine inaktive CPU bedeutet nicht, dass keine Prozesse ausgeführt werden. Beispielsweise werden Hintergrunddienste und der Kernel weiterhin ausgeführt und belegen weiterhin Speicher. Sie verbrauchen einfach keine CPU, weil sie nichts tun.

  • 1,0

    Die CPU ist maximal ausgelastet, es gibt jedoch keine Konflikte zwischen Prozessen zur Nutzung der CPU. Das heißt, es wird nur ein einziger Prozess ausgeführt, sodass 100% der CPU-Zeit für sich beansprucht werden können. Alternativ werden mehrere Prozesse ausgeführt, aber keiner beansprucht 100% CPU und die kombinierte CPU-Auslastung summiert sich auf 100%. Sie laufen alle immer noch so schnell, wie sie laufen würden, selbst wenn sie die CPU für sich hätten.

  • Größer als 1,0

    Die CPU ist maximal ausgelastet, und es gibt mehrere Prozesse, die sie gleichzeitig verwenden möchten, sodass sie effektiv langsamer ausgeführt werden, als dies bei einer inaktiven CPU der Fall wäre. Ein Lastdurchschnitt von 3,0 gibt beispielsweise an, dass Prozesse mit einem Drittel der Geschwindigkeit ausgeführt werden, die sie ausführen möchten. Ein Lastdurchschnitt von 50,0 gibt an, dass Prozesse mit 1/50 der Geschwindigkeit ausgeführt werden, die sie ausführen möchten, da alle anderen Prozesse ausgeführt werden. Das heißt, höhere Werte als 1,0 weisen darauf hin, dass die verfügbare CPU zwischen immer mehr Prozessen ausgelastet ist.

Eine Mehrkern-CPU ändert nichts an der Bedeutung der Zahlen, kann aber ihre Interpretation ändern. Wenn Sie beispielsweise eine 4-Kern-CPU haben, entspricht eine Last von 1,0 immer noch einem Prozess mit 100% CPU auf einem Kern, aber es gibt drei andere Kerne. Auf einer 4-Kern-CPU ist der Punkt maximaler Effizienz also 4,0 und nicht 1,0 - und der Punkt, an dem alles mit 1/3 Effizienz läuft, ist 12,0 und nicht 3,0. Um die Komplexität zu erhöhen, kann ein einzelner Prozess mehr als einen Thread haben, von dem jeder seine eigene CPU beansprucht. Ein einzelner Prozess kann also 100% aller 4 Kerne verwenden, wenn er mehrere Threads hat.

Wichtige Notiz

Die CPU-Auslastung ist nur eine Ressource, die möglicherweise die Leistung eines Prozesses einschränkt. E / A ist eine andere und wird bei der CPU-Auslastung nicht berücksichtigt. Ein Prozess mit einer bestimmten CPU-Auslastung kann auf einem Computer mit geringerer Auslastung nicht unbedingt mehr Leistung erbringen, da andere Engpässe auftreten können.

Was ist der beste Lastdurchschnitt?

Es hängt wirklich davon ab, was Sie tun und ob Sie die Reaktionsfähigkeit bevorzugen oder ob die CPU so hart wie möglich arbeitet.

Für etwas, das so viel wie möglich erledigen muss, sollte der Lastdurchschnitt bei oder geringfügig über der Anzahl der Kerne liegen. Alles, was viel größer ist, weist darauf hin, dass Sie schneller mehr erledigen können, wenn Sie Aufgaben auf mehrere Computer / Server verteilen.

Für etwas, das so reaktionsschnell wie möglich sein muss, sollte der Lastdurchschnitt eine angenehme Spanne sein, die geringer ist als die Anzahl der Kerne, z. B. die Hälfte oder ein Drittel, was eine zeitweilige Variation zulässt, bevor es zu Verzögerungen kommt.

Für einen Virtualisierungsgast (z. B. KVM) ist es umso besser, je niedriger der Lastdurchschnitt ist, da Sie die CPU tatsächlich mit anderen Gästen auf demselben Host teilen.


Ich war überrascht zu sehen, dass manchmal Threads "Warten auf E / A" in der durchschnittlichen Auslastung enthalten sind serverfault.com/a/524818/27813 es scheint ...
Rogerdpack

@rodgerpack Ja, Statusprozesse Dsind unter Linux immer im Lastdurchschnitt enthalten. Ja, das ist verwirrend. Ja, wir sollten uns in erster Linie andere Metriken als load avg ansehen.
Kubanczyk

2

Ein Lastdurchschnitt von 0,00 bedeutet im Grunde, dass Ihr System im Leerlauf ist und dass es über die gemessene Zeit keine Verzögerungen oder Belastungen oder Engpässe für Ihre CPU gibt.

Dies bedeutet nicht, dass Ihre CPU inaktiv ist, sondern nur, dass keine Wartezeit erforderlich ist, wenn ein Prozess CPU-Zeit benötigt.

Es ist schwer zu sagen, wie wenig Sie veröffentlicht haben, da dies davon abhängen kann, wie Sie Ihre Auslastung (System, pro Benutzer?) Und über welchen Zeitraum gemessen haben.

Für einige Details und interessante Lektüre siehe

https://www.tecmint.com/understand-linux-load-averages-and-monitor-performance/

http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages

http://www.brendangregg.com/blog/2017-08-08/linux-load-averages.html

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.