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 mittop
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).