Load

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
Der Titel dieses Artikels ist mehrdeutig. Weitere Bedeutungen sind unter Load (Begriffsklärung) aufgeführt.

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[Bearbeiten]

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. Die 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. Da 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, die bis zur Unbenutzbarkeit des ganzen Computersystems führen kann, obwohl der Prozessor dabei kaum nennenswert ausgelastet ist.

Die 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). Die 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. Die 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[Bearbeiten]

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 IO 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, d.h. es stehen mehr Ressourcen zur Verfügung. Die untere Grenze beträgt Null. Ein Load Average von 0 sagt zum Beispiel 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, I/O) 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 alles blockiert ist.

Typische Angabe und Auswertung des Load Averages[Bearbeiten]

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 angeben. Daraus kann man ablesen, wie sich die Auslastung des Systems entwickelt. Die drei Nummern nennt man oft auch Load Triplets.

Bei der grafischen Darstellung der Beispielwerte 0.80, 1.71, 3.35 fällt auf, dass die Last zurückgeht (siehe Grafik rechts). Dies kann passieren, weil es zum Beispiel weniger rechenintensive Prozesse gibt – Ursache dafür kann wiederum etwa das Beenden von Programmen sein. Beim Lesen der Zahlentriplets muss darauf geachtet werden, diese nicht falsch herum zu interpretieren. Die erste Zahl zeigt stets den Load Average über den 1-minütigen Zeitraum an, die letzte den Load Average über den 15-minütigen Zeitraum, nicht andersherum.


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 durchschnittlich nachgelassen hat.

Grafische Darstellung eines Load Averages, eine Leistungsspitze fand statt

Im Beispiel auf der rechten kann man anhand der drei Zahlen 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 Systemmonitoren bei anderen Betriebssystemen braucht ein Unix-Administrator lediglich zu jeder vollen Stunde 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-Daemon. 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[Bearbeiten]

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:

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

Neben dem Load Average wird auch Uhrzeit, die Zeit, die der Computer läuft (Uptime) sowie die Anzahl der angemeldeten Benutzer aufgezeichnet.

Weitere Tools zur Anzeige auf der Konsole sind zum Beispiel w[1] und top. Natürlich existieren auch grafische Tools, zum Beispiel das klassische xload (siehe rechts), viele moderne Desktop-Environments bringen auch eigene Tools mit (zum Beispiel KDE mit seinem Perfomancemonitor KSysguard).

Das weit verbreitete Unix-Derivat GNU/Linux bietet im Proc-Dateisystem 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[Bearbeiten]

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[Bearbeiten]

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[Bearbeiten]

Fußnoten[Bearbeiten]

  1. Manpage w