Frage Wie erkenne ich, welcher Prozess bewirkt, dass kswapd verwendet wird?


Ich sehe kswapd mit 100% CPU ... wie kann ich feststellen, auf welchen Prozess kswapd so viel verwendet wird?


22
2017-09-28 20:21


Ursprung


Ähm. kswapd ist der Prozess. Es läuft im Auftrag des Kernels. - mailq
Sehen serverfault.com/questions/24124/ ... - P.T.
@mailq ... ja, aber tauscht es nicht den Speicher eines User Space aus? und wenn ja, wie kann ich sagen, welchen Prozessspeicher er gerade auswechselt? - Deshawn


Antworten:


kswapd verwaltet den Swap-Space als Antwort auf Speicheranforderungen, die größer sind als die physisch verfügbaren alles Prozesse.

Es ist Prozess-agnostisch, es interessiert nur, welche Seiten Zugang haben und wann (es ist natürlich komplexer als das natürlich, aber um die Dinge einfach zu halten, können wir es genauso gut sehen).

Also die echt Die Frage ist: "Welche Prozesse haben die größte Belastung für das Gedächtnis, die dazu führen, dass kswapd ständig pagen muss".

Dies wird am einfachsten mit 'top' beantwortet und in den Sortiermodus für die Speicherbelegung umgeschaltet.


16
2017-09-29 00:31



Vielen Dank!. Doe skswapd tritt NUR dann ein, wenn die berührten Seiten physisch überschritten werden oder treten sie ein, obwohl ein Prozess den Speicher zugewiesen oder die SHM-Region zugeordnet, aber nicht verwendet hat? Das heißt, ist es nur, wenn das Problem auftritt, oder macht es Buchhaltung und tauscht Dinge ein und aus, obwohl physischer Speicher verfügbar ist, aber nur weil irgendein Prozess im Leerlauf war usw.? - Deshawn
Wie ich es verstehe, wird kswapd unter normalen Umständen Seiten aus dem Hauptspeicher entfernen, die nicht dort sein müssen, da jede Seite, die freigegeben wird, eine Seite ist, die zum Zwischenspeichern oder anderen Prozessen verwendet werden kann. Das heißt, es ist besser, eine alte unbenutzte Seite bereits auf der Festplatte zu haben, anstatt die Langsamkeitskosten zu tragen, um sie als Reaktion auf eine Anforderung von Speicher von einem anderen Prozess zu bewegen. - Paul
Selbst wenn eine Maschine viel Swap-Speicherplatz benötigt, sollte sie nicht 100% CPU benötigen. Etwas ist merkwürdig. - Zaz
@Zaz Es ist nicht so sehr, dass es CPU-Verarbeitungsleistung verwendet, um zu tauschen, es ist, dass die CPU wegen IOWAIT 100% verwendet wird. Jedes Mal, wenn Speicher von der Platte eingelagert werden muss, muss die CPU dort sitzen und darauf warten - IOWAIT, und tut nichts (im Durchschnitt). - Paul
@Paul: Bist du sicher? top sagt mir, dass keine Zeit in IO warten wird, und fast 100% Zeit wird im System verbracht. Mehr Info: kswapd verwendet oft 100% CPU, wenn Swap verwendet wird - Zaz


Sie können es skript .. aber Sie können es auch über Top tun

Run top und dann drücken O gefolgt von p dann eingeben

Jetzt sind alle Prozesse nach Swap-Nutzung sortiert und Sie können sehen, welche sie verwenden


10
2017-09-29 01:12





Wenn Sie auf Ubuntu 15.10 oder höher sind, kann dies tatsächlich das Ergebnis von sein ein Käfer, insbesondere wenn es sich bei Ihrem System um eine virtuelle Maschine ohne Swap-Partition handelt (z. B. AWS EC2). Das Problem existiert auf anderen Distributionen, aber zum Zeitpunkt des Schreibens ist unklar, ob derselbe Fix universell funktioniert.

Eine temporäre Problemumgehung:

sudo ln -s /dev/null /etc/udev/rules.d/40-vm-hotadd.rules
sudo reboot

Beachten Sie, dass dadurch die Hot-Access-RAMs / CPUs für virtuelle Xen- und Hyper-V-Maschinen deaktiviert werden.


8
2017-09-17 23:22



Hatte das aus dem Nichts auf meinem System auf Kubuntu 16.10 mit dem Workaround schon vor einiger Zeit aktiviert. - jeteon
@jeteon Es gibt mehrere Probleme, die dieses Verhalten verursachen können; Dies ist zufällig ein besonders häufiger. - Zenexer
Ja. Ich habe das gefunden echo 3 > /proc/sys/vm/drop_caches lindert es, sobald es beginnt. Ich habe jetzt präventiv den Befehl für einen Cron-Job und es scheint mir zu helfen oder zumindest die Dauer des OOM-Massakers zu begrenzen, wenn ich nicht am Computer bin. - jeteon


Es scheint auch einen Bug zu geben kswapd irgendwo, hoffentlich nur auf älteren Kernen.

Fast jeden Tag wird kswapd nun zufällig auf einigen Maschinen in einem größeren Cluster (mit einem nicht aktuellen Kernel). 100% CPU auf beiden kswapd-Prozessen. Keine anderen laufenden Prozesse (außer SSH-Shell), viel freier Arbeitsspeicher (mehr als 700 MB) und überhaupt kein SWAP. Kein Swapping, kein Swap-Out.

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 einer kurzen Zeitspanne mehr als eine Maschine trifft. Es sieht so aus, als ob Maschinen, die im Leerlauf sind, sowie Maschinen, die unter hohem Druck stehen, weniger (!) Wahrscheinlich von dem Effekt getroffen werden. Es muss also etwas mit der Arbeitsbelastung zu tun haben und trifft nur dann, wenn die Maschine weder untätig noch sehr beschäftigt ist.

Wenn das Problem auffällt, hilft nichts mehr. Töte alle Prozesse (die nicht unkalkulierbar wurden), entferne alle Dateisysteme, nichts. kswapd bleibt immer noch bei 100% CPU. Ich vermute ein wenig Spinlock-Rennen in SMP-Kernen, aber es ist auch wahrscheinlich, dass ich falsch liege.

Vielleicht sehe ich meine Antwort serverfault.com/questions/316995/#493257

Anmerkungen:

  • Das Neustarten betroffener Computer schlägt häufig fehl, da der Herunterfahren-Prozess irgendwo zu hängen beginnt.
  • Es besteht keine direkte Verbindung zum Internet. Ausländische Ursachen sind unwahrscheinlich.
  • Es scheint von der Art der Arbeitslast abhängig zu sein, die die Maschinen aus der Sicht eines Ladevorgangs verarbeiten, da wir Maschinen haben, die (noch) nie betroffen waren.
  • Tut mir leid, ich kann nicht genauer sagen, was wir machen und warum.
  • Ja, ich spekuliere. Weil es heute ein extrem rätselhafter Effekt ist.

6
2018-03-28 17:04



Das ist historisch. RedHat bestätigt: Es war ein Problem von Kernel 2.6.18-194.el5 in Kombination mit NFS-Client. Es wurde bereits 2012 festgelegt. Siehe die verknüpfte Antwort in meinem Text für ein wenig mehr Informationen. Wenn Sie dies heute treffen, ist es wahrscheinlich eine andere Ursache. - Tino
Dies ist an einigen Stellen immer noch ein Problem. Ich habe Tonnen davon gesehen. Hier, und Hier sind einige Beispiele. - trueCamelType