Linux-Swap-Verhalten einstellen (Swappiness)

Meine persönliche “Spiel”-Docker-VM hat (offenbar unnötig) viel geswappt. Ich habe das zunächst nur an der allgemein sinkenden Performance bemerkt. Erst als mit das so auffiel, dass ich begann, dass mit Hilfe des vSphere-Client (Graphen unter “Leistung”) zu untersuchen, bin ich auf das Swap-Verhalten gestoßen.

Was ich gemacht habe um das zu verbessern:

  • (Natürlich zuerst versucht, unnötigen Speicherverbrauch zu reduzieren, in dem ich manche Container gestoppt habe.)
  • swapoff -a -> erstmal Swap komplett abschalten. (Das könnte man natürlich so lassen, ich hätte Swap aber gerne als “doppelten Boden”, damit ich erst sehe, dass er swappt, bevor Prozesse aus Speichermangel abgeschossen werden.)
  • swapon -a -> swappen wieder an.
  • cat /proc/sys/vm/swappiness -> Nachschauen, wie die Swappiness gerade eingestellt ist.
  • sysctl vm.swappiness=1 -> Minimales Swappen (swappen, nur wenn “es gar nicht anders geht”). Wirkt sofort.
  • System z.B. im vSphere-Client (Unter “Leistung”), mit vmstat 1 oder mit top beobachten.
  • vi /etc/sysctl.d/60-swappiness.conf um das persistent zu machen (s.a. /etc/sysctl.d/README):
# normalerweise 60. Je kleiner, desto eher wird der Cache verkleinert, bevor geswappt wird
vm.swappiness=1
  • Außerdem interessant: docker stats $(docker ps --format "{{.Names}}")

Details sind hier gut erklärt.

Interessant wäre evtl. noch die Frage nach den Swappiness-Einstellungen je VM (--memory-swappiness – siehe docker run).

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.