Läuft dein System langsam oder reagiert eine Anwendung träge? Dann prüfe zuerst die Speicherauslastung. Es gibt mehrere Werkzeuge, um den RAM-Verbrauch zu analysieren.
Der Befehl free
Der schnellste Weg zur Speicherübersicht ist free. Mit der Option -h erhältst du eine gut lesbare Ausgabe:
free -h
Die Ausgabe zeigt den physischen Speicher und Swap:
total used free shared buff/cache available
Mem: 3.8Gi 1.1Gi 252Mi 130Mi 2.5Gi 2.4Gi
Swap: 0B 0B 0B
Die Spalten im Detail:
- total - Gesamter physischer Arbeitsspeicher
- used - Aktuell belegter Speicher
- free - Unbelegter Speicher
- shared - Von mehreren Prozessen gemeinsam genutzter Speicher
- buff/cache - Speicher für Kernel-Puffer und Dateicache. Das System gibt diesen Speicher bei Bedarf automatisch frei.
- available - Geschätzt verfügbarer Speicher für neue Anwendungen ohne Swapping
Die Spalte available ist der wichtigste Wert. Sie zeigt, wie viel Speicher tatsächlich für neue Programme bereitsteht.
Der Befehl top
Mit top beobachtest du die Speichernutzung in Echtzeit. Starte das Programm ohne Optionen:
top
Im oberen Bereich siehst du die Gesamtübersicht des Speichers. Die Spalte %MEM zeigt für jeden Prozess den Anteil am physischen Speicher.
Nützliche Tastenkürzel in top:
M- Sortierung nach SpeicherverbrauchP- Sortierung nach CPU-Auslastungq- Beenden
Die Datei /proc/meminfo
Die virtuelle Datei /proc/meminfo enthält detaillierte Speicherinformationen. Befehle wie free und top lesen ihre Daten aus dieser Datei.
cat /proc/meminfo
Die Ausgabe zeigt dutzende Speicherwerte:
MemTotal: 4030592 kB
MemFree: 401804 kB
MemAvailable: 2507504 kB
Buffers: 123456 kB
Cached: 1987654 kB
SwapTotal: 0 kB
SwapFree: 0 kB
...
Diese Datei eignet sich besonders für Shell-Skripte. Einen einzelnen Wert extrahierst du mit grep:
grep MemAvailable /proc/meminfo
Speicherverbrauch pro Programm mit ps_mem
Das Python-Skript ps_mem zeigt den Speicherverbrauch pro Programm an. Das ist nützlich, um Speicherfresser zu identifizieren.
Installation über pip:
sudo pip3 install ps_mem
Die Ausführung erfordert Root-Rechte:
sudo ps_mem
Die Ausgabe listet alle Programme aufsteigend nach Speicherverbrauch:
Private + Shared = RAM used Program
11.9 MiB + 20.2 MiB = 32.1 MiB nginx (4)
8.2 MiB + 42.4 MiB = 50.6 MiB systemd-journald
55.8 MiB + 307.2 MiB = 363.0 MiB php-fpm7.4 (6)
233.9 MiB + 234.0 MiB = 467.9 MiB redis-server
578.2 MiB + 578.6 MiB = 1.1 GiB mysqld
---------------------------------
2.2 GiB
=================================
Die Zahl in Klammern zeigt die Anzahl der Prozesse. Das unterste Programm verbraucht den meisten Speicher.
Zusammenfassung
| Befehl | Verwendungszweck |
|---|---|
free -h | Schnelle Speicherübersicht |
top | Echtzeit-Monitoring aller Prozesse |
/proc/meminfo | Detaillierte Werte, ideal für Skripte |
ps_mem | Speicherverbrauch pro Programm |
Für eine schnelle Prüfung reicht free -h. Um speicherhungrige Programme zu finden, nutze ps_mem oder sortiere top mit der Taste M.