Wie kann ich feststellen, welcher Prozess dazu führt, dass kswapd verwendet wird?

23

Ich sehe, dass kswapd 100% der CPU nutzt. Wie kann ich feststellen, in welchem ​​Prozess kswapd so häufig verwendet wird?

Deshawn
quelle
1
Ähm. kswapd ist der Prozess. Es läuft im Auftrag des Kernels.
mailq
2
@mailq ... ja, aber tauscht es nicht den Speicherplatz einiger Benutzer aus? und wenn ja, wie kann ich sagen, welcher Prozessspeicher gerade ausgetauscht wird?
Deshawn

Antworten:

18

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.

Paul
quelle
Vielen Dank!. Fällt skswapd NUR ein, wenn die tatsächlich berührten Seiten mehr als physisch sind, oder tritt es ein, obwohl ein Prozess den Speicher zugewiesen oder die SHM-Region zugeordnet hat, ihn aber nicht verwendet hat? Das heißt, ist es nur, wenn das Problem auftritt oder wird Buch geführt und Dinge ein- und ausgelagert, obwohl physischer Speicher verfügbar ist, aber nur, weil ein Prozess inaktiv war usw.?
Deshawn
Soweit ich weiß, entfernt kswapd unter normalen Umständen alle Seiten aus dem Hauptspeicher, die nicht vorhanden sein müssen, da jede Seite, die freigegeben wird, zum Zwischenspeichern oder für andere Prozesse verwendet werden kann. Das heißt, es ist besser, eine alte unbenutzte Seite bereits auf der Festplatte zu haben, als die langsamen Kosten für das Verschieben als Antwort auf eine Speicheranforderung eines anderen Prozesses zu verursachen.
Paul
Selbst wenn ein Computer viel Swap-Speicherplatz benötigt, sollte er nicht zu 100% mit CPU belastet sein. Etwas ist seltsam.
Zaz,
@Zaz Es ist nicht so sehr, dass es CPU-Prozessorleistung zum Austauschen verwendet, sondern dass die CPU aufgrund von IOWAIT zu 100% ausgelastet ist. Jedes Mal, wenn Speicher von der Festplatte ausgelagert werden muss, muss die CPU dort sitzen und darauf warten - IOWAIT - und tut (im Durchschnitt) nichts anderes.
Paul
@ Paul: Bist du sicher? topsagt 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
Zaz
9

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

Mike
quelle
2
O ruft Filteroptionen für mich auf, drückt p und gibt dann "'include' Filterbegrenzer fehlt"
Shadow
@ Shadow Gleiches Problem, hier ein alternativer Befehl unix.stackexchange.com/questions/128953/…
Björn
8

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.

Zenexer
quelle
Wäre dies auf meinem System unter Kubuntu 16.10 aus dem Nichts gekommen und hätte die Problemumgehung bereits vor einiger Zeit aktiviert.
Jeteon
@jeteon Es gibt mehrere Probleme, die dieses Verhalten verursachen können. das ist gerade eine besonders häufige.
Zenexer
Ja. Ich habe herausgefunden, dass es echo 3 > /proc/sys/vm/drop_cacheslindert, 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.
Jeteon
6

Es scheint auch kswapdirgendwo 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. kswapdbleibt 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:

  • Der Neustart betroffener Computer schlägt häufig fehl, da der Herunterfahrvorgang irgendwo hängen bleibt.
  • Es besteht keine direkte Verbindung zum Internet. Ausländische Ursachen sind unwahrscheinlich.
  • Es scheint von der Art der Auslastung abzuhängen, die die Maschine aus Sicht der Auslastung verarbeitet, da es Maschinen gibt, die (noch) nicht betroffen waren.
  • Entschuldigung, ich kann nicht genauer sagen, was wir tun und warum.
  • Ja, ich spekuliere. Weil es heute ein extrem rätselhafter Effekt ist.
Tino
quelle
Das ist historisch. RedHat bestätigte: Es handelte sich um ein Problem des Kernels 2.6.18-194.el5 in Kombination mit dem NFS-Client. Es wurde bereits im Jahr 2012 behoben. Weitere Informationen finden Sie in der verknüpften Antwort in meinem Text. Wenn Sie dies heute treffen, ist es wahrscheinlich eine andere Ursache.
Tino
1
Dies ist an einigen Stellen immer noch ein Problem. Ich habe Tonnen davon auftauchen sehen. hier und hier sind einige Beispiele.
TrueCamelType