Ich sehe, dass kswapd 100% der CPU nutzt. Wie kann ich feststellen, in welchem Prozess kswapd so häufig verwendet wird?
Ich sehe, dass kswapd 100% der CPU nutzt. Wie kann ich feststellen, in welchem Prozess kswapd so häufig verwendet wird?
Antworten:
kswapd verwaltet den Swap Space als Reaktion auf Speicheranforderungen, die für alle Prozesse nicht physisch verfügbar sind.
Es ist prozessunabhängig, es interessiert nur, auf welche Seiten wann zugegriffen wird (es ist natürlich komplexer, aber um die Dinge einfach zu halten, können wir es auch so sehen).
Die eigentliche Frage lautet also: "Welche Prozesse haben die größte Belastung für den Speicher, die dazu führen, dass kswapd ständig paginieren muss."
Dies lässt sich am einfachsten mit 'top' beantworten und in den Sortiermodus für die Speichernutzung wechseln.
top
sagt mir, dass keine Zeit für das Warten auf E / A aufgewendet wird und fast 100% Zeit für das System aufgewendet wird. Weitere Informationen: kswapd verwendet häufig 100% CPU, wenn Swap verwendet wird
Sie können es skripten, aber Sie können es auch über top tun
Nach oben laufen, dann O gefolgt von p drücken und dann eingeben
Jetzt sind alle Prozesse nach Swap-Nutzung sortiert und Sie können sehen, welche davon verwendet werden
Wenn Sie mit Ubuntu 15.10 oder höher arbeiten, kann dies auf einen Fehler zurückzuführen sein , insbesondere wenn es sich bei Ihrem System um eine virtuelle Maschine handelt, der eine Swap-Partition fehlt (z. B. AWS EC2). Das Problem besteht bei anderen Distributionen , aber zum Zeitpunkt des Schreibens ist nicht klar, ob das gleiche Update universell funktioniert.
Eine vorübergehende Problemumgehung:
sudo ln -s /dev/null /etc/udev/rules.d/40-vm-hotadd.rules
sudo reboot
Beachten Sie, dass das Hotadding von RAM / CPUs für virtuelle Xen- und Hyper-V-Maschinen deaktiviert wird.
echo 3 > /proc/sys/vm/drop_caches
lindert, sobald es passiert. Ich habe jetzt präventiv das Kommando für einen Cron-Job und es scheint zu helfen oder zumindest die Dauer des OOM-Massakers zu begrenzen, wenn ich nicht am Computer bin.
Es scheint auch kswapd
irgendwo einen Fehler zu geben , hoffentlich nur auf älteren Kerneln.
Fast jeden Tag wird kswapd auf einigen Computern in einem größeren Cluster zufällig ausgeführt (allerdings mit einem nicht aktuellen Kernel). 100% CPU bei beiden kswapd-Prozessen. Keine anderen laufenden Prozesse (außer ssh-Shell), viel freier Arbeitsspeicher (mehr als 700 MB) und überhaupt kein SWAP. Kein Swapin, auch kein Swapout.
Nichts erklärt noch, warum eine bestimmte Maschine getroffen wird und eine andere nicht. Es scheint nicht völlig zufällig zu sein, da es in der Regel innerhalb kurzer Zeit mehr als eine Maschine trifft. Es sieht so aus, als wären Maschinen, die im Leerlauf sind, sowie Maschinen, die unter hohem Druck stehen, weniger (!) Von dem Effekt betroffen. Es hat also etwas mit der Arbeitslast zu tun und trifft nur, wenn die Maschine weder im Leerlauf noch sehr beschäftigt ist.
Wenn das Problem auftritt, hilft nichts mehr. Beenden Sie alle Prozesse (die nicht unbrauchbar geworden sind), entfernen Sie alle Dateisysteme, nichts. kswapd
bleibt immer noch bei 100% CPU. Ich vermute ein Spinlock-Rennen in SMP-Kerneln, aber es ist auch wahrscheinlich, dass ich falsch liege.
Vielleicht finden Sie in meiner Antwort serverfault.com/questions/316995/#493257
Anmerkungen: