Load

Load (dt. „Last“) bezeichnet die momentan laufenden oder auf bestimmte Ereignisse wartenden Prozesse auf einem Computersystem. Man spricht dabei davon, dass „der Rechner einen Load von X hat“ (wobei X eine positive Zahl ist). Sie wird landläufig mit der Auslastung eines Computersystems gleichgesetzt. In der Unix-Welt, aus der der Begriff kommt, spricht man meistens von Load Average, dem Durchschnitt der Load-Werte über einen Zeitraum.

Load als Maßeinheit

Der Load ist die Anzahl der gerade laufenden oder auf Ereignisse wartenden Prozesse und ist demnach immer ganzzahlig (im Gegensatz zu dem Load Average auf Unix-Systemen). Solche Ereignisse sind sehr häufig das Beenden einer Schreib- oder Leseoperation von oder auf die Festplatte oder anderer Ein-/Ausgabegeräte. Der Load ist demnach ein Maß für auftretende Flaschenhals-Probleme.

So laufen zum Beispiel auf einem durchschnittlichen Computersystem sehr viele Programme im Hintergrund, die im Normalfall so gut wie keine Last erzeugen. Wenn der Speicher des Systems durch Interaktionen des Benutzers vollläuft, lagert das Betriebssystem die Prozesse vom Hauptspeicher auf Festplatte aus (Swapping). Ab und zu muss es jedoch einzelne Prozesse wieder in den Speicher laden, damit es diese ausführen kann. Da die Festplatte im Verhältnis zum Hauptspeicher ein sehr langsamer Datenträger ist, kann sich dies bei akutem Hauptspeichermangel zu einem beachtlichen Load hochschaukeln, der bis zur Unbenutzbarkeit des ganzen Computersystems führen kann, obwohl der Prozessor dabei kaum nennenswert ausgelastet ist.

Der Load ist nicht die Auslastung des Computersystems, im Speziellen nicht die Auslastung der CPU, sondern ein Maß dafür, wie viele gleichartige Systeme in einem Computer arbeiten müssten, um einen möglichen Engpass beseitigen zu können.

Beispielsweise hat ein Computersystem einen Prozessor. Gleichzeitig benötigen zwei Prozesse die volle Rechenleistung (andere Ressourcen werden im Beispiel nicht beachtet). Das Betriebssystem verteilt nun die beiden Prozesse gleichmäßig so, dass Prozess 1 und Prozess 2 gleichmäßig viel Rechenleistung erhalten (Scheduling). Der Load des Systems ist 2, die Auslastung der CPU liegt bei 100 %. Man erweitert das Computersystem auf vier CPUs. Das Betriebssystem verteilt diese Last nun auf die zwei Prozesse, so dass also immer zwei CPUs voll arbeiten können, die beiden anderen liegen brach. Trotzdem rechnen die Prozesse nun doppelt so schnell und der Rechner hat dabei immer noch eine Load von 2, die Auslastung der CPUs ist jedoch nur 50 %. Durch eine Programmverbesserung ist es nun möglich, die Last der zwei Prozesse auf alle vier CPUs zu verteilen. Der Load ist dann immer noch 2, die CPUs werden dabei aber zu 100 % ausgelastet, das heißt, die beiden Programme rechnen nochmal doppelt so schnell.

Der Load Average auf Unix-Systemen

Der Load Average (frei übersetzt durchschnittliche Systemlast) ist per Definition die (durchschnittliche) Länge der Run Queue der CPU sowie die Anzahl der Prozesse, die auf dieser laufen oder auf Ein- oder Ausgabe warten (Status D). Je nach System variiert die Zusammensetzung, genauso wie die üblichen Werte. Generell jedoch gilt: Je niedriger der Load-Wert, desto unbelasteter ist ein System, es stehen also mehr Ressourcen zur Verfügung. Die untere Grenze beträgt 0. Ein Load Average von 0 sagt dabei aus, dass sämtliche Betriebsmittel zur Verfügung stehen und das System die Aufgaben eines Benutzers mit maximaler Geschwindigkeit bearbeiten kann.

Eine obere Grenze für den Load-Wert gibt es nicht. Das System wird jedoch (je nach Anzahl der CPUs und anderer Betriebsmittel z. B. RAM, Eingabe und Ausgabe) mit steigender Systemlast immer schlechter benutzbar, weil alle Ressourcen permanent in Benutzung sind. Möchte man währenddessen zum Beispiel in einer X-Sitzung arbeiten, so macht sich die extreme Systemauslastung dadurch bemerkbar, dass die Oberfläche sehr langsam oder gar nicht reagiert.

Typische Angabe und Auswertung des Load Averages

Grafische Darstellung eines Load Average Zahlentriplets

Üblicherweise werden zur Angabe des Load Averages drei Zahlenwerte angegeben, die jeweils den Load Average der letzten Minute, der letzten fünf Minuten und der letzten 15 Minuten (in dieser Reihenfolge) angeben. Daraus kann man ablesen, wie sich die Auslastung des Systems entwickelt. Die drei Werte nennt man oft auch Load Triplet.

Bei der grafischen Darstellung der Beispielwerte 0.80, 1.71, 3.35 fällt auf, dass die Last zurückgeht (siehe Grafik rechts). Dies wird der Fall sein, wenn es weniger rechenintensive Prozesse gibt – Ursache dafür können etwa zuvor beendete Programme sein, die in den letzten 15 Minuten eine erhebliche Last erzeugt hatten.

Grafische Darstellung eines Load Averages, die Last nimmt zu

In der Grafik auf der linken Seite werden die Werte 6.51, 5.13, 1.85 grafisch dargestellt. Man sieht, dass die Last auf dem Computer innerhalb der letzten 15 Minuten erheblich gestiegen ist, wobei in den letzten fünf Minuten der Anstieg nachgelassen hat.

Grafische Darstellung eines Load Averages mit einer Leistungsspitze

Im Beispiel rechts kann man anhand der drei Werte feststellen, dass innerhalb der letzten Viertelstunde eine erhebliche Rechenlast abgearbeitet wurde, denn zum aktuellen Zeitpunkt liegt die Durchschnittslast wesentlich tiefer als vor fünf Minuten.

Aus den Load-Average-Werten kann ein Administrator mit wenig Aufwand feststellen, wie ausgelastet der Computer war. Im Gegensatz zu ressourcenfressenden grafischen Systemmonitoren braucht ein Unix-Administrator lediglich zu jeder vollen Viertelstunde den Load seines Rechners abzufragen und bekommt damit eine umfassende Statistik über den Auslastungswert. Die Auslastung wird vom Kernel automatisch berechnet, es bedarf keiner gesonderten Erfassung von Messwerten in Echtzeit.

Anhand der Systemauslastung kann man zum Beispiel auch bestimmte Programme erst dann starten, wenn der Rechner sich im Leerlauf befindet, der Load Average also sehr niedrig ist. Ein Beispiel hierfür ist der Unix-at. Er bietet das batch-Utility, welches man anweisen kann, ein Programm zu starten, sobald der Load unter den Wert von 1.5 fällt.

Programme zum Anzeigen des Load Averages

Ein GUI-Programm, um den Load Average über den Verlauf einer Zeit darzustellen, ist xload. Es ist bei X Window Systems in der Regel im Standardumfang. Der Screenshot zeigt eine steigende Auslastung, der horizontale Strich auf der Hälfte steht für den Wert 1. Typisch für grafische Darstellungen des Load Averages ist das exponentielle Abfallen des Graphen nach einer Belastungsspitze.

Auf POSIX-kompatiblen Systemen lässt sich der Load Average üblicherweise mit dem Tool uptime ermitteln. Ein Aufruf aus der Shell ergibt zum Beispiel folgendes Ergebnis:

 $ uptime
 00:58:04 up  7:07,  4 users,  load average: 0.55, 0.60, 0.48

Neben der namensentsprechenden Uptime, also der Laufzeit seit dem Booten, gibt uptime im weiteren auch noch die momentane Uhrzeit, die Anzahl der angemeldeten Benutzer und zuletzt das Load Average Tripel aus.

Weitere Tools zur Anzeige auf der Konsole sind zum Beispiel w[1] und top. Es existieren auch grafische Tools, zum Beispiel das klassische xload (siehe rechts).

Das unixoide System Linux bietet im proc einen Eintrag namens /proc/loadavg, welches unter anderem den Load Average wiedergibt:

$ cat /proc/loadavg
0.27 0.47 0.45 1/186 8372

Prozentuale Auslastungswerte

Zwar ist die Benutzung des Load Average sehr praktisch und effizient, doch gibt es bei ihm keine Möglichkeit, die momentane Auslastung des Prozessors herauszufinden. Momentane Auslastungswerte werden zum Beispiel im weit verbreiteten Betriebssystem Microsoft Windows in Prozentzahlen verwendet, um die Auslastung des Systems auszugeben. Einen Load Average kennt Windows nicht.

Prozentuale Auslastungswerte bei Linux

Um in Linux einen prozentualen Auslastungswert zu erhalten, muss die Datei /proc/stat aus dem Proc-Dateisystem ausgelesen werden. Sie enthält in den cpu-Zeilen Werte für User, Nice, System und Idle-Zeiten seit Systemstart. Diese bedeuten:

User
Die CPU-Ressourcen, die durch Benutzerprozesse beansprucht werden.
Nice
Zeit für Benutzerprozesse, die mit einem sehr hohen Nice-Wert laufen. Dies ist die unter Unix übliche Technik, um Prozessen eine niedrigere Priorität zu geben. Prozesse mit sehr niedriger Priorität werden nur ausgeführt, wenn der Rechner sonst unbeschäftigt ist (Prioritätsscheduling).
System
Ressourcen, die das System, d. h. der Linux-Kernel verbraucht.
Idle
Stellt den Leerlaufanteil des Prozessors dar, in dem keine Befehle von ihm abgearbeitet werden. Er befindet sich während einer solchen Phase im Idle-Zustand.

Die CPU-Auslastung entspricht dem invertierten prozentualen Anteil, den Idle in der Gesamtkalkulation einnimmt. Ein Beispiel für die Datei /proc/stat:

cpu  35421 0 4092 158570 3325 408 6 0
cpu0 35421 0 4092 158570 3325 408 6 0
[...]

Relevant sind jeweils die ersten vier Zahlen, die für User, Nice, System und Idle stehen. Zusammengerechnet geben sie im Beispiel 198.083, wovon der Idle-Wert 158.570 ausmacht, was etwa 80 % des Gesamtwerts entspricht. Die effektive CPU-Auslastung seit Systemstart liegt also bei gerade 20 %. Um eine prozentuale CPU-Auslastung über einen bestimmten Zeitraum zu erhalten, muss die Veränderung dieser Werte über diesen Zeitraum durch zweimaliges Auslesen der Datei ermittelt werden.

Weblinks

Fußnoten

  1. Manpage w (1) - man page. Abgerufen am 19. Mai 2020.

Auf dieser Seite verwendete Medien

Load Average1.svg
Autor/Urheber:
This file was made by User:Sven
Nuvola apps locale.svg
Translation

If this image contains text, it can be translated easily into your language. If you need help, contact me

SemiPD-icon.svg
Flexible licenses

If you want to use this picture with another license than stated below, contact me

Nuvola apps email.png
Contact the author

If you need a really fast answer, mail me. If you need only a fast answer, write me here.

, Lizenz: CC-BY-SA-3.0

This is a selfmade diagram that tries to explain what these three numbers from the Load Average want to say. There's almost no text because I wanted to make it usable in other languages than English.

In this Diagram you see any random load. In the time period of 15 minutes it's value is getting smaller and smaller. If you paint a graph (like I did in this picture), you see how it's going down. The background "colors" are painted to show that the values aren't "fix" values from these times but from the whole time period until the "now"-label. E.g. the -15min-Value is the average value from the whole 15minutes and not a "snapshot" value from t = -15 min.

I think these graphics are nice for explaining a bit more demonstrative how the "load average" works. For me it has always been an abstract thing ;-)

There are currently two other selfmade SVG-diagrams which look exactly the same but with different values and graphs:

Xload.png
Autor/Urheber:

Screenshot taken by User:Sven

This file was made by User:Sven
Nuvola apps locale.svg
Translation

If this image contains text, it can be translated easily into your language. If you need help, contact me

SemiPD-icon.svg
Flexible licenses

If you want to use this picture with another license than stated below, contact me

Nuvola apps email.png
Contact the author

If you need a really fast answer, mail me. If you need only a fast answer, write me here.

, Lizenz: GPL

This is a screenshot of en:xload, a small tool for the X Window System that shows you the en:load of your system.

The Window Manager is kwin/KDE with the Keramik' theme
Load Average2.svg
Autor/Urheber:
This file was made by User:Sven
Nuvola apps locale.svg
Translation

If this image contains text, it can be translated easily into your language. If you need help, contact me

SemiPD-icon.svg
Flexible licenses

If you want to use this picture with another license than stated below, contact me

Nuvola apps email.png
Contact the author

If you need a really fast answer, mail me. If you need only a fast answer, write me here.

, Lizenz: CC-BY-SA-3.0

This is a selfmade diagram that tries to explain what these three numbers from the Load Average want to say. There's almost no text because I wanted to make it usable in other languages than English.

In this Diagram you see any random load. In the time period of 15 minutes it's value is getting bigger and bigger. If you paint a graph (like I did in this picture), you see how it's going straight up. The background "colors" are painted to show that the values aren't "fix" values from these times but from the whole time period until the "now"-label. E.g. the -15min-Value is the average value from the whole 15minutes and not a "snapshot" value from t = -15 min.

I think these graphics are nice for explaining a bit more demonstrative how the "load average" works. For me it has always been an abstract thing ;-)

There are currently two other selfmade SVG-diagrams which look exactly the same but with different values and graphs:

Load Average3.svg
Autor/Urheber:
This file was made by User:Sven
Nuvola apps locale.svg
Translation

If this image contains text, it can be translated easily into your language. If you need help, contact me

SemiPD-icon.svg
Flexible licenses

If you want to use this picture with another license than stated below, contact me

Nuvola apps email.png
Contact the author

If you need a really fast answer, mail me. If you need only a fast answer, write me here.

, Lizenz: CC-BY-SA-3.0

This is a selfmade diagram that tries to explain what these three numbers from the Load Average want to say. There's almost no text because I wanted to make it usable in other languages than English.

In this Diagram you see any random load. At t = -15 minutes it's value is quite small, than it's raising and again falling. You can see that very nice with the painted graph. The background "colors" are painted to show that the values aren't "fix" values from these times but from the whole time period until the "now"-label. E.g. the -15min-Value is the average value from the whole 15minutes and not a "snapshot" value from t = -15 min.

I think these graphics are nice for explaining a bit more demonstrative how the "load average" works. For me it has always been an abstract thing ;-)

There are currently two other selfmade SVG-diagrams which look exactly the same but with different values and graphs: