EMZETT.
Login

Swap und Arbeitsspeicher unter Linux: free, top und zram

Kurz: Linux nutzt freien Speicher als Cache und lagert selten genutzte Daten bei Bedarf in Swap aus; mit free, top und vmstat erkennt man echten Speichermangel, zram und swapfile helfen.

Genauer: Ein häufiger Schreck: free zeigt fast keinen freien Speicher. Das ist normal, denn Linux füllt ungenutzten RAM mit Datei-Cache (Page Cache), den es bei Bedarf sofort freigibt. Entscheidend ist verfügbarer Speicher (available).

Im Detail

Speicher lesen

free -h
#               total   used   free  shared  buff/cache  available
# Mem:            15Gi   4.2Gi  800Mi  300Mi   10Gi        10Gi
# Swap:          2.0Gi     0B   2.0Gi

available = was Programme bekommen könnten. Mit top/htop nach RES (tatsächlich belegt) sortieren; ps aux --sort=-%mem | head. vmstat 1 zeigt si/so (Swap-Ein-/Auslagerung): dauerhaft hohe Werte bedeuten Speichermangel (Thrashing). /proc/meminfo und smem liefern Details.

Swap

Swap (Partition oder Datei) nimmt selten genutzte Seiten auf, damit der RAM für aktive Daten bleibt, und ermöglicht Ruhezustand (Hibernate). Einrichten als Datei:

sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile && sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Swappiness (vm.swappiness, Standard 60) steuert die Neigung auszulagern; für Desktops 10 bis 30 üblich. Swap auf SSD erhöht Verschleiß leicht, ist aber meist unkritisch.

zram und OOM

zram komprimiert Swap im RAM (Fedora, Ubuntu-Varianten, ChromeOS): schnell, ideal für kleine Rechner/Raspberry Pi. Ist Speicher und Swap erschöpft, greift der OOM-Killer und beendet Prozesse (Meldung im journalctl -k: „Out of memory: Killed process“). Gegenmittel: mehr RAM, Speicherfresser finden (Browser-Tabs, Speicherlecks), Limits setzen (systemd-run -p MemoryMax=2G, cgroups, Docker --memory), earlyoom/systemd-oomd für sanftes Eingreifen.

Tipps

  • Server: Swap lieber vorhanden (kleine Menge) als gar keiner; Monitoring mit Alarm.
  • Datenbanken vertragen Swapping schlecht (Redis nie auslagern).
  • VMs/Container: Hostspeicher und Limits berücksichtigen.
  • Beim Kauf/Aufrüsten: Mehr RAM bringt oft mehr als Swap.
  • Hohe buff/cache ist kein Problem; echo 3 > /proc/sys/vm/drop_caches ist selten sinnvoll.

Siehe auch: Speicherverwaltung und OOM-Killer, Virtueller Speicher und Paging, Task-Manager und Prozesse, Raspberry Pi