Widzę kswapd używający 100% procesora ... jak mogę stwierdzić, w jakim procesie kswapd jest tak często używany?
Widzę kswapd używający 100% procesora ... jak mogę stwierdzić, w jakim procesie kswapd jest tak często używany?
Odpowiedzi:
kswapd zarządza przestrzenią wymiany w odpowiedzi na zapotrzebowanie pamięci większe niż fizycznie dostępne dla wszystkich procesów.
Jest niezależny od procesu, interesuje go tylko to, do których stron mają dostęp i kiedy (jest to bardziej skomplikowane niż to oczywiście, ale dla uproszczenia możemy równie dobrze spojrzeć w ten sposób).
Tak więc prawdziwe pytanie brzmi: „jakie procesy mają największe obciążenie pamięci, które powodują, że kswapd musi ciągle przeglądać strony”.
Najłatwiej jest na nie odpowiedzieć przy użyciu „góry” i przejścia do trybu sortowania wykorzystania pamięci.
top
mówi mi, że nie spędza się czasu na czekaniu we / wy, a prawie 100% czasu spędza w systemie. Więcej informacji: kswapd często używa 100% procesora, gdy używana jest zamiana
Możesz napisać skrypt .. ale możesz to również zrobić przez górę
Uruchom na górze, a następnie naciśnij O, a następnie p, a następnie Enter
Teraz wszystkie procesy są sortowane według użycia wymiany i możesz zobaczyć, które z nich korzystają
Jeśli korzystasz z systemu Ubuntu 15.10 lub nowszego, może to być rzeczywiście błąd , szczególnie jeśli twój system jest maszyną wirtualną bez partycji wymiany (np. AWS EC2). Problem istnieje w innych dystrybucjach , ale w chwili pisania nie jest jasne, czy ta sama poprawka działa uniwersalnie.
Tymczasowe obejście:
sudo ln -s /dev/null /etc/udev/rules.d/40-vm-hotadd.rules
sudo reboot
Pamiętaj, że spowoduje to wyłączenie hotaddingu pamięci RAM / procesorów dla maszyn wirtualnych Xen i Hyper-V.
echo 3 > /proc/sys/vm/drop_caches
łagodzi, gdy zacznie się dziać. Mam uprzednio polecenie na cronie i wydaje się, że to pomaga, a przynajmniej ogranicza czas trwania masakry OOM, kiedy jestem z dala od komputera.
Wydaje się kswapd
, że gdzieś jest też błąd , mam nadzieję, że tylko w starszych jądrach.
Niemal każdego dnia kswapd losuje się na niektórych komputerach w większym klastrze (jednak z nieprądowym jądrem). 100% procesora dla obu procesów kswapd. Żadnych innych uruchomionych procesów (z wyjątkiem powłoki ssh), dużo wolnej pamięci RAM (ponad 700 MB) i w ogóle nie używany SWAP. Bez zamiany, bez zamiany.
Nic jeszcze nie wyjaśnia, dlaczego konkretna maszyna została trafiona, a inna nie. Wydaje się, że nie jest całkowicie losowy, ponieważ zwykle uderza w więcej niż jedną maszynę w krótkim czasie. Wygląda na to, że maszyny bezczynne, a także maszyny pod wysokim ciśnieniem są mniej (!) Prawdopodobnie dotknięte efektem. Musi więc coś zrobić z obciążeniem roboczym i uderza tylko wtedy, gdy maszyna nie jest bezczynna ani bardzo zajęta.
Jeśli problem się pojawi, nic już nie pomaga. Zabicie wszystkich procesów (które nie stały się nie do zabicia), odmontowanie wszystkich systemów plików, nic. kswapd
wciąż pozostaje na 100% CPU. Podejrzewam, że w jądrach SMP występuje pewien wyścig spinlocków, ale jest też prawdopodobne, że się mylę.
Być może zobacz moją odpowiedź serverfault.com/questions/316995/#493257
Uwagi: