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 Speicherverbrauch
  • P - Sortierung nach CPU-Auslastung
  • q - 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

BefehlVerwendungszweck
free -hSchnelle Speicherübersicht
topEchtzeit-Monitoring aller Prozesse
/proc/meminfoDetaillierte Werte, ideal für Skripte
ps_memSpeicherverbrauch 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.