Die üblichen Verdächtigen: iostat, vmstat und dstat
Beginnen wir mit der heiligen Dreifaltigkeit der Performance-Überwachungstools:
1. iostat: Der I/O-Detektiv
Wenn die Festplatten-I/O Ihnen Kopfschmerzen bereitet, ist iostat
Ihr Aspirin. Dieses praktische Tool gibt Ihnen einen Überblick über die CPU-Auslastung und I/O-Statistiken für alle Ihre Geräte.
$ iostat -xz 1
Linux 5.4.0-42-generic (myserver) 15.06.2023 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
2.43 0.00 1.22 0.31 0.00 96.04
Device r/s w/s rkB/s wkB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util
sda 0.35 2.13 14.44 34.96 0.00 0.57 0.00 21.05 0.57 2.50 0.01 41.54 16.43 0.40 0.10
Was sagt uns das? Nun, wir haben hier ein ziemlich untätiges System. Die CPU langweilt sich 96% der Zeit, und unsere Festplatte (sda) ist mit nur 0,10% Auslastung kaum gefordert.
2. vmstat: Der Speicher-Maestro
vmstat
ist Ihr Fenster in die Seele des Speichersystems. Es zeigt Ihnen alles von der Länge der Warteschlange bis zur Swap-Nutzung.
$ vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 6981496 191268 724132 0 0 3 5 36 79 2 1 97 0 0
0 0 0 6981496 191268 724132 0 0 0 0 209 355 1 0 99 0 0
Schauen Sie sich die free
-Spalte an - wir haben etwa 7GB freien Speicher. Kein Wunder, dass unser System so entspannt ist!
3. dstat: Der Alleskönner
Wenn iostat
und vmstat
ein Kind hätten, wäre es dstat
. Dieses vielseitige Tool kombiniert CPU-, Festplatten-, Netzwerk-, Paging- und Systemstatistiken in einer bunten Ausgabe.
$ dstat -cdngy
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai stl| read writ| recv send| in out | int csw
2 1 97 0 0| 14k 40k| 0 0 | 0 0 | 237 420
1 0 99 0 0| 0 0 | 66B 722B| 0 0 | 206 357
1 0 99 0 0| 0 0 | 60B 722B| 0 0 | 208 355
Das nenne ich eine All-in-One-Lösung für Systemstatistiken!
Tiefer graben: Die unbekannten Helden
Aber warten Sie, es gibt noch mehr! Lassen Sie uns einige weniger bekannte, aber ebenso leistungsstarke Tools erkunden:
4. sar: Der Zeitreisende
sar
(System Activity Reporter) ist wie eine Zeitmaschine für Ihre Systemstatistiken. Es kann historische Daten anzeigen und sogar schicke Grafiken erstellen.
$ sar -u 1 3
Linux 5.4.0-42-generic (myserver) 15.06.2023 _x86_64_ (4 CPU)
13:00:01 CPU %user %nice %system %iowait %steal %idle
13:00:02 all 2.01 0.00 0.75 0.25 0.00 96.98
13:00:03 all 1.75 0.00 0.75 0.00 0.00 97.49
13:00:04 all 1.75 0.00 0.75 0.25 0.00 97.24
Average: all 1.84 0.00 0.75 0.17 0.00 97.24
Profi-Tipp: Verwenden Sie sar -A
, um ALLE Statistiken zu sehen. Aber Vorsicht, es ist wie das Trinken aus einem Feuerwehrschlauch!
5. perf: Das Profiling-Kraftpaket
Wenn Sie tiefer als tief gehen müssen, ist perf
Ihre Ausrüstung. Es kann die CPU-Auslastung profilieren, Systemaufrufe verfolgen und sogar Cache-Fehler analysieren.
$ sudo perf top
Samples: 42K of event 'cpu-clock', 4000 Hz, Event count (approx.): 5250000000 lost: 0/0 drop: 0/0
Overhead Shared Object Symbol
7.89% [kernel] [k] _raw_spin_unlock_irqrestore
4.32% [kernel] [k] finish_task_switch
3.21% [kernel] [k] __schedule
2.96% [kernel] [k] schedule
Schauen Sie sich das an! Die Funktion _raw_spin_unlock_irqrestore
des Kernels beansprucht fast 8% unserer CPU. Vielleicht ist es an der Zeit, in den Kernel-Code einzutauchen?
Die Handlung verdichtet sich: Leistung visualisieren
Manchmal sagt ein Bild mehr als tausend strace
-Ausgaben. Hier kommen diese grafischen Tools ins Spiel:
6. htop: Der interaktive Prozessbetrachter
Denken Sie an top
auf Steroiden. htop
bietet Ihnen eine farbenfrohe, interaktive Ansicht Ihrer Prozesse.

7. atop: Der System- und Prozessmonitor
atop
ist wie der überambitionierte Cousin von top
. Es zeigt Systemzähler und prozessbezogene Statistiken in einer Ansicht.
$ atop
ATOP - myserver 2023/06/15 13:15:23 ------------------------------
PRC | sys 1.85s | user 3.70s | #proc 213 | #zombie 0 | #exit 0 |
CPU | sys 2% | user 4% | irq 0% | idle 94% | wait 0% |
CPL | avg1 0.02 | avg5 0.05 | avg15 0.05 | csw 53592 | intr 43357 |
MEM | tot 15.5G | free 6.8G | cache 724.7M | buff 191.3M | slab 409.8M |
SWP | tot 15.9G | free 15.9G | | vmcom 4.7G | vmlim 23.7G |
DSK | sda | busy 0% | read 131 | write 644 | avio 2.50 ms |
NET | transport | tcpi 37 | tcpo 36 | udpi 0 | udpo 0 |
NET | network | ipi 37 | ipo 36 | ipfrw 0 | deliv 37 |
NET | eth0 ---- | pcki 19 | pcko 18 | si 1 Kbps | so 1 Kbps |
PID SYSCPU USRCPU VGROW RGROW RDDSK WRDSK ST EXC S CPU CMD 1/600
1829 0.37s 0.73s 0K 0K 0K 0K -- - R 1% atop
1 0.02s 0.03s 0K 0K 0K 0K -- - S 0% systemd
Das nenne ich Informationsüberflutung!
Das Geheimrezept: Eigene Überwachungsskripte
Manchmal reichen Standard-Tools einfach nicht aus. Dann ist es an der Zeit, die Ärmel hochzukrempeln und eigene Überwachungsskripte zu schreiben. Hier ist ein einfaches Beispiel, das iostat
und vmstat
-Daten kombiniert:
#!/usr/bin/env python3
import subprocess
import time
def get_iostat():
output = subprocess.check_output("iostat -c 1 1 | tail -n 2 | head -n 1", shell=True).decode()
cpu_stats = output.split()
return float(cpu_stats[5]) # %idle
def get_vmstat():
output = subprocess.check_output("vmstat 1 2 | tail -n 1", shell=True).decode()
stats = output.split()
return int(stats[3]) # free memory
while True:
cpu_idle = get_iostat()
free_mem = get_vmstat()
print(f"CPU Idle: {cpu_idle}%, Free Memory: {free_mem}K")
time.sleep(5)
Führen Sie dieses Skript aus, und Sie haben Ihr eigenes Mini-Überwachungssystem!
Das Fazit: Werden Sie zum Sherlock Holmes der Systemleistung
Die Überwachung von Linux-Systemen auf niedriger Ebene ist wie ein Detektiv in einem Cyberpunk-Roman zu sein. Sie haben Ihre Werkzeuge (iostat, vmstat, dstat), Ihre Lupe (perf) und Ihren Watson (eigene Skripte). Der Schlüssel liegt darin, zu wissen, welches Tool wann zu verwenden ist und wie man die Ergebnisse interpretiert.
Denken Sie daran:
- Beginnen Sie mit den Grundlagen (iostat, vmstat, dstat) für einen schnellen Überblick
- Gehen Sie bei Bedarf mit spezialisierten Tools wie perf tiefer
- Visualisieren Sie Daten mit htop und atop für eine andere Perspektive
- Haben Sie keine Angst, eigene Skripte für Ihre spezifischen Bedürfnisse zu schreiben
Und am wichtigsten: Üben, üben, üben! Je mehr Systeme Sie überwachen, desto besser werden Sie darin, Anomalien zu erkennen und Leistungsprobleme zu lösen.
Denkanstoß
"Das effektivste Debugging-Tool ist immer noch sorgfältiges Nachdenken, gepaart mit strategisch platzierten Print-Anweisungen." — Brian Kernighan
Auch wenn wir all diese ausgeklügelten Tools zur Verfügung haben, ist manchmal der beste Ansatz, einen Schritt zurückzutreten, kritisch über das Problem nachzudenken und vielleicht ein paar strategische echo
-Anweisungen einzufügen. Lassen Sie nicht zu, dass die Tools Ihre Problemlösungsfähigkeiten überschatten!
Was kommt als Nächstes?
Jetzt, da Sie mit diesem Wissen ausgestattet sind, warum richten Sie nicht eine Testumgebung ein und beginnen mit dem Experimentieren? Versuchen Sie, verschiedene Lastszenarien zu simulieren und sehen Sie, wie diese Tools reagieren. Oder noch besser, wenden Sie diese Techniken auf ein reales Problem an, mit dem Sie konfrontiert sind. Der Beweis des Puddings liegt im Essen, schließlich!
Viel Spaß beim Überwachen, und mögen Ihre Systeme immer leistungsfähig sein!