kswapd0 beansprucht 99,9% meiner CPU, wie ich oben gesehen habe. Das Problem trat heute beim Spielen auf und das erste Mal verschwand es nach 6 Minuten, und jetzt macht es das seit ungefähr 20 Minuten. Wie ist das reparabel und was verursacht das?
45
Antworten:
Der Prozess kswapd0 ist der Prozess, der den virtuellen Speicher verwaltet. Ihr Computer sollte über RAM, SWAP und EXT4 auf Ihrer Festplatte / SSD verfügen. In ext4 ist alles gespeichert und der Zugriff ist immer langsamer als im RAM. RAM ist wie ein halbwegs laufender Bereich, in dem Programme schnell auf Informationen zugreifen können. Die meisten Computer haben mindestens 4 GB RAM, was unter normalen Bedingungen ausreichend ist. Wenn Sie ein Spiel spielen, kann es jedoch sein, dass Ihnen der RAM-Speicherplatz ausgeht. Hier kommt SWAP ins Spiel.
SWAP ist ein gefälschter RAM, der sich auf Ihrer Festplatte / SSD neben Ihrem EXT4 befindet. Der Zugriff ist schneller als beim EXT4, aber viel langsamer als beim eigentlichen RAM. Wenn Ihnen der Speicher ausgeht, verschiebt kswapd0 Programme, die Sie nicht oder nicht so oft verwenden wie andere Programme, in den SWAP, was zu extremen Verzögerungen bei diesen Prozessen führt. Wenn Ihr Spiel 5 GB RAM benötigt, ist mindestens 1 GB in SWAP enthalten. Das heißt, wenn es versucht, auf diese Informationen zuzugreifen, muss es länger warten, um sie abzurufen.
Dieser gesamte Prozess führt zu einer extremen CPU-Auslastung, zum Verschieben von Informationen von und zu SWAP und RAM sowie zur gleichzeitigen Verarbeitung der Informationsanforderung. Wie kann man dieses Problem lösen?
Weisen Sie kswapd0 an, nur dann Daten nach SWAP zu verschieben, wenn der Arbeitsspeicher voll ist. Dies ist die effektivste Methode zur Lösung von SWAP-Problemen. Lauf
echo vm.swappiness=0 | sudo tee -a /etc/sysctl.conf
Wo
0
bleibt der Prozentsatz übrig,100
bei dem SWAP verwendet werden soll (wenn Sie 0% RAM übrig haben, beginnt SWAP mit der Datenerfassung). Sie können auch einfach /etc/sysctl.conf nach Ihren Wünschen bearbeiten, anstatt diesen Befehl jedes Mal mit gedit oder nano oder einem anderen Befehl an das Ende des Befehls anzufügen. Neustart und fertig!Das ist das Beste, was Sie tun können. Andere mögen sagen, Swap komplett deaktivieren, aber das ist gefährlich und ich würde das NICHT empfehlen. Dies kann dazu führen, dass ganze Systeme einfrieren, wenn ein Speicherverlust vorliegt oder zu viele Anwendungen ausgeführt werden. Beachten Sie, dass der SWAP ausfallsicher für den Arbeitsspeicher ist. Es ist definitiv nicht so schnell oder effizient wie RAM, aber es ist besser als Window's Pagefile! (was den gleichen Zweck erfüllt)
EDIT: Wenn Sie mehr über SWAP erfahren möchten, lesen Sie hier .
quelle
kwapd0
vorbei. Vielen Dank.kswapd0 läuft mit 99,9% einer CPU, tauscht aber tatsächlich überhaupt nicht aus
Mir passiert es manchmal unter Ubuntu 14.04 mit Kernel 3.19.0-50-generic (und früher), der in einer VMware vm läuft. Ich habe keine Ahnung, was es erscheinen ließ, aber es kommt während der Leerlaufzeit.
top
zeigt an:Vorübergehende Lösung
Ein Neustart löste das Problem - vorübergehend.
nach der antwort auf serverfault (kswapd verwendet oft 100% CPU wenn swap verwendet wird) gibt es die gleichen einstellungen auf meinem system:
Die Lösung war eigentlich
# echo 1 > /proc/sys/vm/drop_caches
:jetzt ist es gut:
Dauerhafte Lösung (zu finden)?
aber da der eigentliche grund noch nicht bekannt ist und ich keine passende erklärung im netz fein habe, ist dies keine dauerhafte lösung. Tatsächlich könnte die ausgewählte Antwort die dauerhafte Lösung sein. Ich wollte dies nur zum späteren Nachschlagen hinzufügen, da ein Neustart (damit sysctl wirksam wird) nicht immer möglich ist.
Eine andere Lösung könnte darin bestehen, THP auf entweder
madvice
oder zu setzennever
(siehe den Kommentar von poige zu seiner Antwort : Wie ändere ich „/ sys / kernel / mm / transparent_hugepage / enabled“ und das MongoDB-Handbuch, auf das verwiesen wird, auf Disable Transparent Huge Pages (THP) ).Cron-Job
Ich habe den folgenden Batch als Cron-Job als "permanente" Lösung eingerichtet:
aufgerufen mit
16.04 14.04 Swap
quelle