De Gebruikelijke Verdachten: iostat, vmstat en dstat
Laten we beginnen met de heilige drie-eenheid van prestatiemonitoring tools:
1. iostat: De I/O Detective
Wanneer schijf I/O je hoofdpijn bezorgt, is iostat
je aspirine. Deze handige tool geeft je een momentopname van CPU-gebruik en I/O-statistieken voor al je apparaten.
$ iostat -xz 1
Linux 5.4.0-42-generic (mijnserver) 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
Wat vertelt dit ons? Nou, we hebben hier een behoorlijk inactief systeem. De CPU verveelt zich 96% van de tijd, en onze schijf (sda) doet nauwelijks iets met slechts 0.10% gebruik.
2. vmstat: De Geheugen Maestro
vmstat
is je venster naar de ziel van het geheugen van je systeem. Het laat je alles zien, van de lengte van de wachtrij tot het gebruik van swap.
$ 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
Kijk naar die free
kolom - we hebben ongeveer 7GB aan vrij geheugen. Geen wonder dat ons systeem zo relaxed is!
3. dstat: De Alleskunner
Als iostat
en vmstat
een kind zouden krijgen, zou het dstat
zijn. Deze veelzijdige tool combineert CPU, schijf, netwerk, paging en systeemstatistieken in één kleurrijke output.
$ 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
Dat noem ik een alles-in-één oplossing voor systeemstatistieken!
Dieper Graven: De Onbezongen Helden
Maar wacht, er is meer! Laten we enkele minder bekende maar even krachtige tools verkennen:
4. sar: De Tijdreiziger
sar
(System Activity Reporter) is als een tijdmachine voor je systeemstatistieken. Het kan je historische data laten zien en zelfs mooie grafieken genereren.
$ sar -u 1 3
Linux 5.4.0-42-generic (mijnserver) 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
Pro tip: Gebruik sar -A
om ALLE statistieken te zien. Maar wees gewaarschuwd, het is als drinken uit een brandweerslang!
5. perf: De Profiling Krachtpatser
Wanneer je dieper moet graven, is perf
je uitrusting. Het kan CPU-gebruik profileren, systeemoproepen traceren en zelfs cache-missers analyseren.
$ 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
Kijk eens aan! De _raw_spin_unlock_irqrestore
functie van de kernel gebruikt bijna 8% van onze CPU. Misschien tijd om in de kernelcode te duiken?
Het Plot Dikt: Prestaties Visualiseren
Soms zegt een afbeelding meer dan duizend strace
outputs. Maak kennis met deze grafische tools:
6. htop: De Interactieve Procesviewer
Denk aan top
met extra's. htop
geeft je een kleurrijk, interactief overzicht van je processen.

7. atop: De Systeem- en Procesmonitor
atop
is als de overijverige neef van top
. Het toont systeemcounters en per-proces statistieken in één overzicht.
$ atop
ATOP - mijnserver 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
Dat noem ik een informatie-overload!
Het Geheime Ingrediënt: Aangepaste Monitoring Scripts
Soms zijn standaardtools niet genoeg. Dan is het tijd om je mouwen op te stropen en je eigen monitoringscripts te schrijven. Hier is een eenvoudig voorbeeld dat iostat
en vmstat
gegevens combineert:
#!/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)
Voer dit script uit, en je hebt je eigen mini-monitoringsysteem!
De Les: Word de Sherlock Holmes van Systeemprestaties
Het monitoren van Linux-systemen op laag niveau is als een detective zijn in een cyberpunk roman. Je hebt je tools (iostat, vmstat, dstat), je vergrootglas (perf), en je Watson (aangepaste scripts). De sleutel is te weten welke tool je wanneer moet gebruiken en hoe je de resultaten moet interpreteren.
Onthoud:
- Begin met de basis (iostat, vmstat, dstat) voor een snel overzicht
- Duik dieper met gespecialiseerde tools zoals perf indien nodig
- Visualiseer data met htop en atop voor een ander perspectief
- Wees niet bang om aangepaste scripts te schrijven voor je specifieke behoeften
En het allerbelangrijkste, oefen, oefen, oefen! Hoe meer systemen je monitort, hoe beter je wordt in het opsporen van afwijkingen en het oplossen van prestatiepuzzels.
Stof tot Nadenken
"De meest effectieve debugtool is nog steeds zorgvuldig nadenken, gecombineerd met strategisch geplaatste printstatements." — Brian Kernighan
Hoewel we al deze geavanceerde tools tot onze beschikking hebben, is soms de beste aanpak om een stap terug te doen, kritisch na te denken over het probleem en misschien een paar strategische echo
statements toe te voegen. Laat de tools je probleemoplossende vaardigheden niet overschaduwen!
Wat Nu?
Nu je gewapend bent met deze kennis, waarom zou je geen testomgeving opzetten en beginnen met experimenteren? Probeer verschillende belastingscenario's te simuleren en kijk hoe deze tools reageren. Of beter nog, pas deze technieken toe op een echt probleem waar je mee te maken hebt. De proef van de pudding is immers in het eten!
Veel plezier met monitoren, en moge je systemen altijd goed presteren!