Load Average
Die drei Zahlen der "Load" (auch "Load Average") beschreiben die Länge der Run Queue in der letzten 1, 3 und 5 Minuten als exponentiell gewichteten gleitenden Durchschnitt. Die damit einhergehende Glättung vermeidet Ausreißer. Sie soll den Wachstumstrend der Run Queue darstellen und aufgrund ihres Aufbaus nur nur mittelbar zur Bewertung der Systemauslastung geeignet.
Vereinfacht ausgerückt zeigt die Load, wie viele lauffähige Prozesse, dazu zählen auf CPU-Zeit und auf IO wartende Prozesse, sich in der Run Queue befinden und somit auf Abarbeitung warten.
Es gibt keinen 1:1 Zusammenhang zwischen der "Load" und der Systemauslastung. Die "Load" sagt nur, daß eine bestimmte Anzahl von Prozessen in der Vergangenheit auf die Abarbeitung warteten. Sie trifft keine Aussage, in wie weit diese Prozesse die ihnen zur Verfügung gestellte Zeit vollständig genutzt haben oder ob sie ungenutzte Zeit wieder an den Kernel zurückgeben, damit diese Zeit einem weiteren Prozeß zur Verfügung gestellt wird. Die Systemauslastung kann besser über die Metriken "%user", "%system", "%iowait" und "%idle" geurteilt werden. top und sar zeigen diese Metriken an.
Die Aussage, daß ein System zu 100% ausgelastet ist, wenn es pro CPU-Core einen wartenden Prozeß in der Run Queue hat, stimmt aufgrund des soeben beschriebenen lockeren Zusammenhang zwischen Load und Systemauslastung nicht zwangsläufig.
Die Berechnung der drei Load-Werte ist relativ kompliziert und wurde in UNIX Load Average Part 1: How It Works ausführlich beschrieben.
Der Load Average läßt sich mit verschiedenen Kommandos anzeigen:
# cat /proc/loadavg 0.00 0.02 0.00 2/272 17319
# uptime 09:26:01 up 336 days, 44 min, 20 users, load average: 0.00, 0.02, 0.00
# top top - 09:26:07 up 336 days, 44 min, 20 users, load average: 0.00, 0.02, 0.00 Tasks: 261 total, 1 running, 260 sleeping, 0 stopped, 0 zombie Cpu(s): 0.1%us, 0.1%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.1%si, 0.0%st Mem: 3395720k total, 3050984k used, 344736k free, 354012k buffers Swap: 1869132k total, 136k used, 1868996k free, 2226356k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 15 0 10368 764 640 S 0.0 0.0 0:12.88 init 2 root RT -5 0 0 0 S 0.0 0.0 0:00.00 migration/0
Weiterführende Informationen
- /proc/loadavg
- Leistungsdiagnostik - Load Average enträtselt und erweitert
- Der Artikel beschreibt die Bedeutung der 3 Load-Zahlen und deren Hintergrund detailiert.
- Linux-Magazin 2007/08 Seite 84 ff.
- UNIX Load Average Part 1: How It Works
- UNIX Load Average Part 2: Not Your Average Average