linux / proc / loadavg

76

Bei der Ausgabe dieses Befehls unter Linux:

# cat /proc/loadavg
0.75 0.35 0.25 1/25 1747

Was sind die letzten 2 Zahlen?

Der letzte erhöht sich jede Sekunde um 2, sollte ich mir Sorgen machen?

Hintergedanke
quelle

Antworten:

84

/ proc / loadavg

Die ersten drei Felder in dieser Datei sind Durchschnittswerte für das Laden, die die Anzahl der Jobs in der Ausführungswarteschlange (Status R) oder das Warten auf Festplatten-E / A (Status D) angeben, gemittelt über 1, 5 und 15 Minuten . Sie entsprechen den durchschnittlichen Lastzahlen, die durch die Betriebszeit (1) und andere Programme angegeben werden.

Das vierte Feld besteht aus zwei Zahlen, die durch einen Schrägstrich (/) getrennt sind. Die erste davon ist die Anzahl der aktuell ausgeführten Kernel-Scheduling-Entitäten (Prozesse, Threads). Dies ist kleiner oder gleich der Anzahl der CPUs. Der Wert nach dem Schrägstrich ist die Anzahl der Kernel-Scheduling-Entitäten, die derzeit auf dem System vorhanden sind.

Das fünfte Feld ist die PID des Prozesses, der zuletzt auf dem System erstellt wurde.

auselen
quelle
1
Benutzer sollten diese Werte berücksichtigen, während sie GNU makemit dem --load-average=N.NParameter ausführen. Wenn makeder Lastdurchschnitt numerisch höher als die Anzahl der CPU-Kerne ist, makesollte er mit --load-averagereduziert neu gestartet werden . Auf diese Weise wird das System durch die Kompilierung nicht überlastet.
2
Wenn das System vor 5 Minuten gestartet wurde, wie berechnen sie dann den 15-Minuten-Lastdurchschnitt? Werden sie nur 5-Minuten-Daten verwenden?
Shafeeq
3
Zumindest enthält die Handbuchseite derzeit keine Wörter "kleiner oder gleich der Anzahl der CPUs" und es ist mehr als die Anzahl der CPUs, wenn Sie mehr ausführbare Prozesse haben.
Kumpel
1
Das fünfte Feld entspricht nicht der Beschreibung in der Antwort: Dies ist tatsächlich die zuletzt zugewiesene PID .
Mike Aski
19

Ich möchte die akzeptierte Antwort kommentieren.

Das vierte Feld besteht aus zwei Zahlen, die durch einen Schrägstrich (/) getrennt sind. Die erste davon ist die Anzahl der aktuell ausgeführten Kernel-Scheduling-Entitäten (Prozesse, Threads). Dies ist kleiner oder gleich der Anzahl der CPUs.

Ich habe ein Testprogramm durchgeführt, das die Ganzzahl N von der Eingabe liest und dann N Threads erstellt und diese für immer ausführt. Auf RHEL 6.5 habe ich 8 Prozessoren und jeder Prozessor hat Hyper-Threading. Wenn ich meinen Test ausführe und 128 Threads erstellt, werden im vierten Feld Werte angezeigt, die größer als 128 sind, z. B. 135. Er ist deutlich größer als die Anzahl der CPUs. Dieser Beitrag unterstützt meine Beobachtung: http://juliano.info/en/Blog:Memory_Leak/Understanding_the_Linux_load_average

Es ist anzumerken, dass die aktuelle Erklärung in der Handbuchseite von proc (5) (ab Manpages Version 3.21, März 2009) falsch ist. Es gibt die erste Nummer des vierten Felds als Anzahl der aktuell ausgeführten Planungsentitäten an und sagt daher voraus, dass sie nicht größer als die Anzahl der CPUs sein kann. Dies entspricht nicht der tatsächlichen Implementierung, bei der dieser Wert die aktuelle Anzahl ausführbarer Threads angibt.

user184968
quelle
5
Bestätigen kann: kernel / Sched / core.c nr_running () beschreibt sich selbst als Sammel runnable im Gegensatz zu laufenden Aufgaben.
fche
14

Die ersten drei Spalten messen die CPU- und E / A-Auslastung der letzten 1, 5 und 15 Minuten. Die vierte Spalte zeigt die Anzahl der aktuell ausgeführten Prozesse und die Gesamtzahl der Prozesse. In der letzten Spalte wird die zuletzt verwendete Prozess-ID angezeigt.

https://docs.fedoraproject.org/en-US/Fedora/17/html/System_Administrators_Guide/s2-proc-loadavg.html

Piskvor verließ das Gebäude
quelle
6
Ich lehne diese Definition nachdrücklich ab. Die ersten drei Zahlen messen die CPU- und E / A-Auslastung nicht direkt , sondern sind die durchschnittliche Anzahl von Jobs in der Ausführungswarteschlange oder warten auf E / A, wie die Antwort von @auselen besagt.
Jan
1

Auf der folgenden Seite werden diese ausführlich erläutert:

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

Ich interpretiere diese Zahlen, die ich von der obigen Seite erhalten habe, wie folgt:

  • Wenn die Durchschnittswerte 0,0 sind, befindet sich Ihr System im Leerlauf.
  • Wenn der 1-Minuten-Durchschnitt höher als der 5- oder 15-Minuten-Durchschnitt ist, steigt die Last.
  • Wenn der 1-Minuten-Durchschnitt niedriger als der 5- oder 15-Minuten-Durchschnitt ist, nimmt die Last ab. Wenn sie höher als Ihre CPU-Anzahl sind, liegt möglicherweise ein Leistungsproblem vor (dies hängt davon ab).
Validus Oculus
quelle