Verstehen Sie die durchschnittlichen Linux-Lasten und überwachen Sie die Leistung von Linux
In diesem Artikel erklären wir eine der kritischen Aufgaben der Linux-Systemadministration – die Leistungsüberwachung in Bezug auf die System-/CPU-Auslastung und die durchschnittliche Auslastung.
Bevor wir weitermachen, lassen Sie uns diese beiden wichtigen Sätze in allen Unix-ähnlichen Systemen verstehen:
- Systemlast/CPU-Last – ist ein Maß für die Über- oder Unterauslastung der CPU in einem Linux-System; Die Anzahl der Prozesse, die von der CPU ausgeführt werden oder sich im Wartezustand befinden.
- Durchschnittliche Auslastung – ist die durchschnittliche Systemlast, die über einen bestimmten Zeitraum von 1, 5 und 15 Minuten berechnet wird.
Unter Linux wird technisch angenommen, dass der Lastdurchschnitt ein laufender Durchschnitt von Prozessen in seiner (Kernel-)Ausführungswarteschlange ist, die als laufend oder unterbrechungsfrei markiert sind.
Beachten Sie, dass:
- Alle, wenn nicht sogar die meisten Systeme, die mit Linux oder anderen Unix-ähnlichen Systemen betrieben werden, zeigen möglicherweise irgendwo für einen Benutzer die durchschnittlichen Lastwerte an.
- Ein Linux-System, das sich im Leerlauf befindet, kann eine durchschnittliche Auslastung von Null haben, ohne den Leerlaufprozess.
- Fast alle Unix-ähnlichen Systeme zählen nur Prozesse, die sich im laufenden oder wartenden Zustand befinden. Dies ist jedoch bei Linux nicht der Fall, es umfasst Prozesse in ununterbrochenen Ruhezuständen; diejenigen, die auf andere Systemressourcen wie Festplatten-I/O usw. warten.
So überwachen Sie die durchschnittliche Linux-Systemlast
Es gibt zahlreiche Möglichkeiten, die durchschnittliche Systemlast zu überwachen, einschließlich der Verfügbarkeit, die anzeigt, wie lange das System bereits läuft, die Anzahl der Benutzer zusammen mit den durchschnittlichen Lasten:
$ uptime
07:13:53 up 8 days, 19 min, 1 user, load average: 1.98, 2.15, 2.21
Die Zahlen werden von links nach rechts gelesen, und die obige Ausgabe bedeutet, dass:
- Der Lastdurchschnitt der letzten 1 Minute beträgt 1,98
- Der Lastdurchschnitt der letzten 5 Minuten beträgt 2.15
- Der Lastdurchschnitt der letzten 15 Minuten beträgt 2.21
Hohe Lastdurchschnitte bedeuten, dass ein System überlastet ist. Viele Prozesse warten auf CPU-Zeit.
Wir werden dies im nächsten Abschnitt in Bezug auf die Anzahl der CPU-Kerne aufdecken. Darüber hinaus können wir auch andere bekannte Tools wie top und glances verwenden, die einen Echtzeitstatus eines laufenden Linux-Systems anzeigen, sowie viele andere Tools:
Top-Befehl
$ top
top - 12:51:42 up 2:11, 1 user, load average: 1.22, 1.12, 1.26
Tasks: 243 total, 1 running, 242 sleeping, 0 stopped, 0 zombie
%Cpu(s): 17.4 us, 2.9 sy, 0.3 ni, 74.8 id, 4.6 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 8069036 total, 388060 free, 4381184 used, 3299792 buff/cache
KiB Swap: 3906556 total, 3901876 free, 4680 used. 2807464 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6265 tecmint 20 0 1244348 170680 83616 S 13.3 2.1 6:47.72 Headset
2301 tecmint 9 -11 640332 13344 9932 S 6.7 0.2 2:18.96 pulseaudio
2459 tecmint 20 0 1707692 315628 62992 S 6.7 3.9 6:55.45 cinnamon
2957 tecmint 20 0 2644644 1.035g 137968 S 6.7 13.5 50:11.13 firefox
3208 tecmint 20 0 507060 52136 33152 S 6.7 0.6 0:04.34 gnome-terminal-
3272 tecmint 20 0 1521380 391324 178348 S 6.7 4.8 6:21.01 chrome
6220 tecmint 20 0 1595392 106964 76836 S 6.7 1.3 3:31.94 Headset
1 root 20 0 120056 6204 3964 S 0.0 0.1 0:01.83 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.10 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
....
Glances-Tool
$ glances
TecMint (LinuxMint 18 64bit / Linux 4.4.0-21-generic) Uptime: 2:16:06
CPU 16.4% nice: 0.1% LOAD 4-core MEM 60.5% active: 4.90G SWAP 0.1%
user: 10.2% irq: 0.0% 1 min: 1.20 total: 7.70G inactive: 2.07G total: 3.73G
system: 3.4% iowait: 2.7% 5 min: 1.16 used: 4.66G buffers: 242M used: 4.57M
idle: 83.6% steal: 0.0% 15 min: 1.24 free: 3.04G cached: 2.58G free: 3.72G
NETWORK Rx/s Tx/s TASKS 253 (883 thr), 1 run, 252 slp, 0 oth sorted automatically by cpu_percent, flat view
enp1s0 525Kb 31Kb
lo 2Kb 2Kb CPU% MEM% VIRT RES PID USER NI S TIME+ IOR/s IOW/s Command
wlp2s0 0b 0b 14.6 13.3 2.53G 1.03G 2957 tecmint 0 S 51:49.10 0 40K /usr/lib/firefox/firefox
7.4 2.2 1.16G 176M 6265 tecmint 0 S 7:08.18 0 0 /usr/lib/Headset/Headset --type=renderer --no-sandbox --primordial-pipe-token=879B36514C6BEDB183D3E4142774D1DF --lan
DISK I/O R/s W/s 4.9 3.9 1.63G 310M 2459 tecmint 0 R 7:12.18 0 0 cinnamon --replace
ram0 0 0 4.2 0.2 625M 13.0M 2301 tecmint -11 S 2:29.72 0 0 /usr/bin/pulseaudio --start --log-target=syslog
ram1 0 0 4.2 1.3 1.52G 105M 6220 tecmint 0 S 3:42.64 0 0 /usr/lib/Headset/Headset
ram10 0 0 2.9 0.8 409M 66.7M 6240 tecmint 0 S 2:40.44 0 0 /usr/lib/Headset/Headset --type=gpu-process --no-sandbox --supports-dual-gpus=false --gpu-driver-bug-workarounds=7,2
ram11 0 0 2.9 1.8 531M 142M 1690 root 0 S 6:03.79 0 0 /usr/lib/xorg/Xorg :0 -audit 0 -auth /var/lib/mdm/:0.Xauth -nolisten tcp vt8
ram12 0 0 2.6 0.3 79.3M 23.8M 9651 tecmint 0 R 0:00.71 0 0 /usr/bin/python3 /usr/bin/glances
ram13 0 0 1.6 4.8 1.45G 382M 3272 tecmint 0 S 6:25.30 0 4K /opt/google/chrome/chrome
...
Die von diesen Tools angezeigten Lastdurchschnitte sind die gelesene /proc/loadavg-Datei, die Sie mit dem Befehl cat wie folgt anzeigen können:
$ cat /proc/loadavg
2.48 1.69 1.42 5/889 10570
Um die durchschnittliche Auslastung im Diagrammformat zu überwachen, sehen Sie sich an: ttyload – Zeigt ein farbcodiertes Diagramm des Linux-Lastdurchschnitts im Terminal an
Auf Desktop-Computern gibt es Tools für die grafische Benutzeroberfläche, mit denen wir die Durchschnittslast des Systems anzeigen können.
Die durchschnittliche Systemauslastung in Abhängigkeit von der Anzahl der CPUs verstehen
Wir können unmöglich die Systemlast oder die Systemleistung erklären, ohne die Auswirkungen der Anzahl der CPU-Kerne auf die Leistung zu beleuchten.
Multiprozessor vs. Multi-Core
- Multiprozessor – hier werden zwei oder mehr physische CPUs in ein einzelnes Computersystem integriert.
- Multi-Core-Prozessor – ist eine einzelne physische CPU mit mindestens zwei oder mehr separaten Kernen (oder was wir auch als Verarbeitungseinheiten bezeichnen können), die parallel arbeiten. Das bedeutet, dass ein Dual-Core 2 Zwei-Prozessor-Einheiten hat, ein Quad-Core 4 Prozessoreinheiten hat und so weiter.
Darüber hinaus gibt es auch eine Prozessortechnologie, die zuerst von Intel eingeführt wurde, um das parallele Rechnen zu verbessern, das sogenannte Hyper-Threading.
Beim Hyperthreading wird ein einzelner physischer CPU-Kern als zwei logische CPU-Kerne für ein Betriebssystem angezeigt (in Wirklichkeit gibt es jedoch eine physische Hardwarekomponente).
Beachten Sie, dass ein einzelner CPU-Kern jeweils nur eine Aufgabe ausführen kann, sodass Technologien wie mehrere CPUs/Prozessoren, Multi-Core-CPUs und Hyper-Threading zum Leben erweckt wurden.
Mit mehr als einer CPU können mehrere Programme gleichzeitig ausgeführt werden. Heutige Intel-CPUs verwenden eine Kombination aus mehreren Kernen und Hyper-Threading-Technologie.
Um die Anzahl der auf einem System verfügbaren Verarbeitungseinheiten zu ermitteln, können wir die Befehle nproc oder lscpu wie folgt verwenden:
$ nproc
4
OR
lscpu
Eine andere Möglichkeit, die Anzahl der Verarbeitungseinheiten mit dem Befehl grep zu ermitteln, wie gezeigt.
$ grep 'model name' /proc/cpuinfo | wc -l
4
Um die Systemlast besser zu verstehen, werden wir nun einige Annahmen treffen. Nehmen wir an, wir haben die folgenden Lastdurchschnitte:
23:16:49 up 10:49, 5 user, load average: 1.00, 0.40, 3.35
Auf einem Single-Core-System würde dies Folgendes bedeuten:
- Die CPU war im Durchschnitt zu 100 % voll ausgelastet; In der letzten 1 Minute lief 1 Prozess auf der CPU (1,00).
- Die CPU war im Schnitt um 60 % im Leerlauf; In den letzten 5 Minuten haben keine Prozesse auf CPU-Zeit (0,40) gewartet.
- Die CPU war mit durchschnittlich 235 % überlastet; In den letzten 15 Minuten haben 2.35 Prozesse auf CPU-Zeit (3.35) gewartet.
Auf einem Dual-Core-System würde dies Folgendes bedeuten:
- Die eine CPU war im Durchschnitt zu 100 % im Leerlauf, eine CPU wurde verwendet; In der letzten 1 Minute haben keine Prozesse auf die CPU-Zeit (1.00) gewartet.
- Im Leerlauf waren die CPUs durchschnittlich 160 % im Leerlauf; Es warteten keine Prozesse auf CPU-Zeit. (0.40) in den letzten 5 Minuten.
- Die CPUs waren im Schnitt um 135 % überlastet; 1.35 Prozesse warteten auf CPU-Zeit. (3.35) in den letzten 15 Minuten.
Das könnte Sie auch interessieren:
- 20 Befehlszeilentools zur Überwachung der Linux-Leistung – Teil 1
- 13 Tools zur Linux-Leistungsüberwachung – Teil 2
- Perf - Ein Leistungsüberwachungs- und Analysetool für Linux
- Nmon: Analysieren und Überwachen der Linux-Systemleistung
Zusammenfassend lässt sich sagen, dass hohe Lastdurchschnitte für Sie als Systemadministrator ein Grund zur Sorge sind. Wenn sie hoch sind und über der Anzahl der CPU-Kerne liegen, bedeutet dies eine hohe Nachfrage nach den CPUs, und eine durchschnittliche niedrige Last unter der Anzahl der CPU-Kerne sagt uns, dass die CPUs nicht ausgelastet sind.