|
|
Zeile 56: |
Zeile 56: |
|
| |
|
| [[Kategorie:Entwurf]] | | [[Kategorie:Entwurf]] |
|
| |
| = Wikipedia =
| |
|
| |
|
| |
| == 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 [[#Der_Load_Average_auf_Unix-Systemen|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 (Logistik)|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]] [[Prozess-Scheduler|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 [[Hauptprozessor|CPU]]s.
| |
| * 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 [[Prozess (Informatik)|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 (Informatik)|Betriebsmittel]] z. B. [[Random Access Memory|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 Window System|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 ===
| |
| [[Bild:Load Average1.svg|thumb|340px|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 <code>0.80, 1.71, 3.35</code> 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 [[Computerprogramm|Programme]] sein, die in den letzten 15 Minuten eine erhebliche Last erzeugt hatten.
| |
|
| |
| [[Bild:Load Average2.svg|thumb|left|340px|Grafische Darstellung eines Load Averages, die Last nimmt zu]]
| |
|
| |
| In der Grafik auf der linken Seite werden die Werte <code>6.51, 5.13, 1.85</code> 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.
| |
|
| |
| [[Bild:Load Average3.svg|thumb|340px|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 [[Systemmonitor]]en braucht ein Unix-[[Administrator (Rolle)|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 (Betriebssystem)|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 [[Leerlaufprozess|Leerlauf]] befindet, der Load Average also sehr niedrig<!-- unter der CPU-Anzahl?! --> ist.
| |
| * Ein Beispiel hierfür ist der Unix-[[at (Unix)|<code>at</code>-Daemon]].
| |
| * Er bietet das <code>batch</code>-Utility, welches man anweisen kann, ein Programm zu starten, sobald der Load unter den Wert von <code>1.5</code> fällt.
| |
|
| |
| === Programme zum Anzeigen des Load Averages ===
| |
| [[Bild:Xload.png|framed|right|Ein [[GUI|GUI-Programm]], um den ''Load Average'' über den Verlauf einer Zeit darzustellen, ist [[xload]].
| |
| * Es ist bei [[X Window System]]s 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 [[exponentiell]]e Abfallen des Graphen nach einer Belastungsspitze.]]
| |
|
| |
| Auf [[POSIX]]-kompatiblen Systemen lässt sich der Load Average üblicherweise mit dem Tool <code>uptime</code> ermitteln.
| |
| * Ein Aufruf aus der [[Betriebssystem-Shell|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 [[Terminalemulation|Konsole]] sind zum Beispiel <span style="font-family:monospace;">[[W (unix)|w]]</span><ref>Manpage {{cite web |url=https://linux.die.net/man/1/w |title=w (1) - man page |accessdate=2020-05-19 }}</ref> und <span style="font-family:monospace;">[[Top (Unix)|top]]</span>.
| |
| * Es existieren auch grafische Tools, zum Beispiel das klassische [[xload]] (siehe rechts).
| |
|
| |
| Das [[unixoides System|unixoide System]] [[Linux]] bietet im [[Procfs|<span style="font-family:monospace;">proc</span>-Dateisystem]] einen Eintrag namens <code>/proc/loadavg</code>, 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 [[Prozessor]]s 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 <code>/proc/stat</code> 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 (Unix)|Nice]]-Wert laufen.
| |
| * Dies ist die unter Unix übliche Technik, um [[Prozess (Informatik)|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)|Linux-Kernel]] verbraucht.
| |
| ; Idle
| |
| : Stellt den Leerlaufanteil des Prozessors dar, in dem keine [[Anweisung (Programmierung)|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 <code>/proc/stat</code>:
| |
|
| |
| 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.
| |
|
| |
| [[Kategorie:Linux:Prozesse]] | | [[Kategorie:Linux:Prozesse]] |
|
| |
|
| {{DEFAULTSORT:load_average}} | | {{DEFAULTSORT:load_average}} |