EMZETT.
Login

Speicherverwaltung und OOM-Killer

Kurz: Linux nutzt freien Arbeitsspeicher aktiv als Zwischenspeicher. Geht der Speicher wirklich aus, beendet der OOM-Killer ein Programm, damit das System nicht stehen bleibt.

Was free -h zeigt

              total   used   free  shared  buff/cache  available
Mem:           15Gi   4.1Gi  1.2Gi   300Mi        10Gi      10Gi
Swap:         2.0Gi      0   2.0Gi
  • free ist wirklich ungenutzt. Das ist absichtlich klein.
  • buff/cache sind Dateien im Speicher, die das System bei Bedarf sofort wieder hergibt.
  • available ist das, was für Programme tatsächlich zur Verfügung steht. Diese Zahl zählt.

Swap

Ein Bereich auf der Platte (Partition oder Datei) für selten gebrauchten Speicher. Er verhindert Engpässe, ist aber sehr viel langsamer. Heute gibt es auch zram, komprimierten Swap im RAM. Die Einstellung vm.swappiness bestimmt, wie bereitwillig ausgelagert wird.

Der OOM-Killer

Wenn weder freier Speicher noch Cache noch Swap reichen, wählt der Kernel anhand einer Punktzahl (oom_score) einen Prozess und beendet ihn. In den Logs steht dann Out of memory: Killed process ..., ansehbar mit journalctl -k oder dmesg, siehe Logs und Zeitsteuerung: journald, rsyslog, cron und Timer.

Dienste unter systemd und Container können feste Grenzen bekommen, siehe Container unter Linux: Namespaces und cgroups. Hilfreich: den Speicherfresser mit top oder ps aux --sort=-%mem | head finden, statt nur mehr RAM zu kaufen.

Siehe auch: Stack und Heap, Speicherleck