Wie hoch kann die Systemlast sein?

11

Jedes Mal, wenn ich mich über SSH bei meinen Servern anmelde, werden mir einige Serverinformationen angezeigt. IE-IP-Adresse, Swap-Nutzung, Speichernutzung usw. Eines der anderen Dinge, die mir auffallen, ist die Systemlast. Die meiste Zeit ist die Systemlastzahl <0,10, aber manchmal habe ich gesehen, dass sie auf 0,89 gestiegen ist (normalerweise um den Start herum).

Dies wirft die Frage auf, wie hoch die Systemlast sein kann. Ist es zum Beispiel möglich, bis zu 2,00 oder 100,00 zu steigen?

Jäger Dolan
quelle
Der Bruchteil gibt die CPU-Auslastung an, der Dezimalteil die Anzahl der Wartevorgänge. So etwas 100.89wäre wahrscheinlicher als100.00
Lekensteyn
Mögliches Duplikat des zulässigen Lastdurchschnitts
Caleb
@Caleb, ich bin nicht einverstanden, dass es ein Duplikat ist. Es ist möglich , dass der OP bestimmt etwas ähnliches, zu fragen , wie „Wie hoch kann Systemlast unterwegs (und immer noch lief akzeptierbar)?“. Aber wie gesagt, es ist nicht die gleiche Frage.
Cyclops
@Cyclops: Wenn das OP nicht beabsichtigen würde, nach akzeptablen Levels auf Servern zu fragen, und eine rein theoretische Frage zur Funktionsweise von * nix-Systemen stellen würde, wäre das hier kein Thema und ein Kandidat für die Migration auf unix.SE?
Caleb

Antworten:

16

Dies wirft die Frage auf, wie hoch die Systemlast sein kann. Ist es zum Beispiel möglich, bis zu 2,00 oder 100,00 zu steigen?

Absolut. Blick auf die uptimeManpage:

   System load averages is the average number of processes that are either
   in a runnable or uninterruptable state.  A process in a runnable  state
   is  either  using the CPU or waiting to use the CPU. A process in unin‐
   terruptable state is waiting for some I/O access, eg waiting for  disk.
   The  averages  are  taken over the three time intervals.  Load averages
   are not normalized for the number of CPUs in a system, so a load  aver‐
   age  of 1 means a single CPU system is loaded all the time while on a 4
   CPU system it means it was idle 75% of the time.

Wenn also viele Prozesse auf die Ausführung warten (oder viele Prozesse blockiert sind und auf E / A warten), wird der Durchschnitt der hohen Last hoch sein. Dieser Artikel beschreibt dies ausführlicher und enthält nützliche Links zu anderen Ressourcen.

Auf einem entladenen System liegt der Lastdurchschnitt normalerweise im Bereich von 0 <= Lastdurchschnitt <= n , wobei n die Anzahl der Kerne auf Ihrem System ist.

Larsks
quelle
1
Ja, das Warten auf E / A ist eine einfache Möglichkeit, eine Menge Last zu erstellen: Mounten Sie eine NFS-Freigabe, schalten Sie den NFS-Server aus, starten Sie 10.000 Prozesse, die versuchen, etwas auf der NFS-Freigabe zu berühren: Boom, Last von 10.000
Jens Timmerman
5

Ich habe lebendige Systeme gesehen, die Tausende getroffen haben. Last Durchschnittlich ein relatives Maß, das auf Warteprozessen basiert, wie viel Konkurrenz es gibt, um die Aufmerksamkeit des Kernels zu erregen und etwas Zeit auf der CPU zu haben. Wenn die Maschine mit Jobs überfüllt ist oder abstürzt, kann dies lange dauern.

Welche Stufe akzeptabel ist, hängt von der Maschine, der Anzahl der Kerne, der Art des verwendeten Kernel-Jobplaners und den Jobs ab, die Sie erwarten. Ich habe einige Maschinen, die im Bereich von ~ 10 ziemlich glücklich sind, aber festsitzen, wenn sie ~ 40-50 treffen. Andere werden mit 2 merklich verzögert und wären mit 10 unbrauchbar.

Es ist nicht ungewöhnlich, dass die Ladung hoch ist, da viele Dinge gleichzeitig erledigt werden und die Maschine sich aufwickelt. Ich würde ~ 1 als eine ganz normale Last betrachten, um Durring Boot für ein Desktop-Linux zu starten und mich dann auf ~ 0.1 zu beschränken, ohne etwas zu tun.

Caleb
quelle
3
Kleinere Korrektur: Der Lastdurchschnitt ist kein Zeitmaß. Es ist die durchschnittliche Anzahl der wartenden Prozesse. Es gibt keine Möglichkeit, den Unterschied zwischen 1) einem Prozess, der eine CPU überlastet, und einem anderen, der sie nie bekommt, und 2) zwei Prozessen, die sich kontinuierlich austauschen, zu erkennen. Sie wären beide Lasten von 1,0.
Plutor
1
Ich habe 1500+ auf einer ernsthaft beliebten Linux-Box gesehen. Dann starb es.
Tom O'Connor
3

Unter Linux bestehen die Systemlast-Durchschnittswerte aus Prozessen in einem von drei verschiedenen Zuständen. Im Allgemeinen könnte man sagen, dass der Lastdurchschnitt die Anzahl der Prozesse ist, die auf die CPU-Zeit warten oder CPU-Zeit verbrauchen. Die drei Werte in der Lastdurchschnittsübersicht sind der Lastdurchschnitt der letzten Minute, der letzten 5 Minuten und der letzten 15 Minuten.

Die drei verschiedenen Zustände von Prozessen, die zum Lastdurchschnitt gezählt werden, sind: (1) Prozesse, die auf der CPU ausgeführt werden, (2) Prozesse, die auf die CPU-Zeit warten, und (3) Prozesse im unterbrechungsfreien Ruhezustand. Die letzte Kategorie generiert zwar keine CPU-Last, kann jedoch den Durchschnitt der Systemlast erheblich erhöhen.

Beispielsweise generiert ein Dutzend Prozesse, die auf Lesevorgänge von einer Festplatte warten, die sehr ausgelastet oder nicht verfügbar ist, einen Lastdurchschnitt von 12 als Prozesse im unterbrechungsfreien Ruhezustand, aber Ihre CPU kann in der Zwischenzeit vollkommen inaktiv sein.

Ja, der Lastdurchschnitt kann also leicht zweistellig werden. Wie schlimm das ist, hängt eher von Ihrer Hardware ab. Wenn Sie 16 Kerne haben, ist es nicht so schlimm, wenn 16 Prozesse auf die CPU-Zeit warten. Auf einem Single-Core-Computer kann es sehr schlecht sein, wenn 3 Prozesse auf die CPU-Zeit warten.

wzzrd
quelle
2

Ein paar Sekunden nach dem Beenden eines Prozesses, bei dem eine alte 450-MHz-CPU verbraucht wurde:

Geben Sie hier die Bildbeschreibung ein

Petrus
quelle
2

Erstellen Sie einen einfachen C-Prozess, in dem Endlosschleifen in 10000 Threads ausgeführt werden. Geben Sie ihm eine sehr niedrige Priorität (+20). Ihre Last beträgt 10000, während Ihr System weiterhin verwendet werden kann. Es werden nur sehr wenige RAM (höchstens einige Megabyte) benötigt.

Obwohl es sich um eine recht ungewöhnliche Konfiguration handelt, werden Sie diese in realen Systemen nicht finden.

Die Systemlast bedeutet nur die mittlere Anzahl von Prozessen, die auf einen CPU-Zeitschlitz warten, nicht weniger und nicht mehr. Hier ist eine weitere Antwort zur richtigen Interpretation der Systemlast .

In der täglichen Erfahrung bedeutet eine Last über 30+ meistens ein Problem.

Peter - Setzen Sie Monica wieder ein
quelle
1

Wenn Sie wiederholt Prozesse starten, die sofort blockieren, ist die Last so hoch wie die Anzahl der Prozesse, die Sie starten können. Angenommen, Sie haben genügend RAM, damit das System nicht austauscht, reagiert das System sogar, da die Last aufgrund von Blockierungsprozessen nicht wirklich schädlich ist.

Peter G.
quelle
1

Ich habe einen Server gesehen, der mit> 200 ausgelastet ist.

Ich würde Stresstest machen und sehen.

Kedare
quelle