fragen stichworte

kswap verwendet 100% der CPU, auch wenn mehr als 100 GB RAM verfügbar sind

Ich verwalte eine Centos 7 ESXi VM mit fast 300 GB RAM und 24 vCPUs.

Die durchschnittliche Last beträgt 3 und für Apps wird fast nie mehr als 150 GB RAM benötigt. Der Rest des verfügbaren Speichers wird von Linux für den Cache verwendet.

Das Problem ist, dass, wenn der Cache den verfügbaren RAM auffüllt, zwei kswapd-Prozesse anfangen werden, 100% der CPU zu verwenden, und plötzlich sehe ich, dass alle CPUs auch 99% der sys-Auslastung anzeigen (es handelt sich nicht um Wartezeit oder Benutzer, sondern um sys ).

Dies führt zu einer hohen Last (100+) für einige Minuten, bis sich das System erholt und die Last wieder auf 3 sinkt.

In diesem Moment habe ich keine Swap-Partition, aber selbst wenn ich eine hatte, ist dieses Problem aufgetreten.

Eine "Lösung", die ich gefunden habe, ist, den folgenden Befehl jeden Tag auszuführen:

echo 3 >/proc/sys/vm/drop_caches

, der Puffer/Caches ablegt. Dadurch wird das Problem "behoben", da die Cache-Nutzung niemals 100% erreicht.

Meine Fragen sind:

  • Gibt es eine echte Lösung für dieses Problem?

  • Sollte der Linux-Kernel nicht klug genug sein, alte Cache-Seiten einfach aus dem Speicher zu löschen, anstatt kswap zu starten?

Nach allem, was ich verstehe, soll die Hauptfunktion des RAM-Speichers von Apps genutzt werden. Caching ist nur eine sekundäre Funktion, die verworfen/ignoriert werden kann, wenn Sie nicht über genügend Speicher verfügen.

Meine Kernelversion ist 3.10.0-229.14.1.el7.x86_64.

antworten

Das klingt so, als ob Ihnen der RAM-Speicher auf einem NUMA-Knoten ausgeht und das System versucht, Speicher auf diesem Knoten freizugeben. Dies kann passieren, wenn Sie einen einzelnen Prozess mit großen Speichermengen verwenden, der (standardmäßig) vorzugsweise auf dem Knoten zugewiesen ist, auf dem der Prozess ausgeführt wird.

Sehen Sie, ob das hilft:

sysctl -w vm.zone_reclaim_mode=0

Eine ausführlichere Beschreibung der Probleme, die bei der Standard-NUMA-Richtlinie auf den meisten Systemen auftreten können, finden Sie unter https://engineering.linkedin.com/performance/optimizing-linux-memory-management-low-latency- Hochdurchsatz-Datenbanken