kswapd0 zajmuje 99,9% mojego procesora, jak pokazuje top, problem pojawił się dzisiaj, gdy gra i po raz pierwszy odeszła po 6 minutach, a teraz robi to około 20 minut. Jak to naprawić i co to powoduje?
Proces kswapd0 to proces zarządzający pamięcią wirtualną. Twoje urządzenie powinno mieć pamięć RAM, SWAP i EXT4 na twoim HDD / SSD. Ext4 to miejsce, w którym wszystko jest przechowywane i zawsze jest wolniejszy dostęp niż RAM. Pamięć RAM przypomina przestrzeń do biegania w połowie drogi, dzięki której programy mają szybki dostęp do informacji. Większość komputerów ma co najmniej 4 GB pamięci RAM, co w normalnych warunkach jest wystarczające. Podczas grania możesz jednak zabraknąć miejsca w pamięci RAM, czyli tam, gdzie przychodzi SWAP.
SWAP to fałszywa pamięć RAM znajdująca się na dysku HDD / SSD obok EXT4. Jest szybszy dostęp niż EXT4, ale jest znacznie wolniejszy niż rzeczywista pamięć RAM. Kiedy kończy się mało pamięci, kswapd0 przenosi programy, których nie używasz / nie używasz tak często, jak inne programy do SWAP, co powoduje znaczne opóźnienie tych procesów. Gdyby twoja gra wymagała 5 GB pamięci RAM, 1 GB w LEAST byłby w SWAP. Oznacza to, że kiedy próbuje uzyskać dostęp do tych informacji, musi czekać dłużej, aby je uzyskać.
Cały ten proces powoduje ekstremalne zużycie procesora, przenoszenie informacji zi do SWAP i pamięci RAM oraz obsługę żądania informacji jednocześnie. Jak rozwiązać ten problem?
Powiedz kswapd0, aby przenosił rzeczy do SWAP tylko wtedy, gdy całkowicie brakuje pamięci RAM. Jest to najbardziej skuteczna metoda rozwiązywania problemów SWAP. Biegać
echo vm.swappiness=0 | sudo tee -a /etc/sysctl.conf
gdzie 0jest procent pominięty, 100przy którym należy użyć SWAP (gdy pozostało 0% pamięci RAM, SWAP zacznie pobierać dane). Możesz także edytować /etc/sysctl.conf według własnych upodobań zamiast dodawać to polecenie na końcu za każdym razem, używając gedit lub nano lub cokolwiek innego, pamiętaj jednak, że sudo, ten plik jest własnością root. Uruchom ponownie, a twoje są gotowe!
Zmniejsz zużycie pamięci RAM przez inne procesy lub zamknij inne programy podczas uruchamiania programów o dużej pamięci. Dlatego większość gier mówi, aby zamknąć wszystkie inne okna przed rozpoczęciem gry lub instalacje robią to samo. Rzeczy takie jak usługi synchronizacji plików zwykle zajmują dużo pamięci.
Kup więcej pamięci RAM. Instalowanie pamięci RAM nie jest tak trudne, jak się wydaje. Jedna lub dwie śruby w małej komorze (jeśli jesteś na laptopie) i jedno kliknięcie. Tylko upewnij się, że kupujesz odpowiedni rodzaj!
Obniż procesy procesora tak samo, jak w przypadku pamięci RAM. Pomoże to tym RAMom do przełączania serii SWAP na znacznie płynniejsze.
To najlepsze, co możesz zrobić. Inni mogą powiedzieć całkowicie wyłącz swap, ale jest to niebezpieczne i NIE poleciłbym tego. Może to spowodować zawieszenie się całych systemów w przypadku wycieku pamięci lub uruchomienia zbyt wielu aplikacji. Po prostu zdaj sobie sprawę, że SWAP jest bezpiecznym dla pamięci RAM. Z pewnością nie jest tak szybki ani wydajny jak pamięć RAM, ale jest lepszy niż plik stronicowania Windows! (który spełnia ten sam cel)
EDYCJA: Jeśli chcesz dowiedzieć się więcej o SWAP, zobacz tutaj .
Nie pamiętam dokładnie, co naprawiło dla mnie problem, ale dziękuję za dobrze napisaną odpowiedź, która wiele wyjaśnia.
Kaspar
Zgodnie z twoją odpowiedzią kończę proces, aby użyć mniej swapów. Teraz proces kwapd0się skończył. Dzięki.
mtoloo
28
kswapd0 działa na 99,9% jednego procesora, ale tak naprawdę wcale nie zamienia
Dla mnie zdarza się to czasami na Ubuntu 14.04 z jądrem 3.19.0-50-generic (i wcześniejszym) uruchomionym w VMware vm. Nie mam pojęcia, co sprawiło, że się pojawił, ale pojawia się w czasie bezczynności.
top przedstawia:
# top
top - 09:49:35 up 5 days, 18:35, 1 user, load average: 1.00, 1.00, 0.99
Tasks: 219 total, 2 running, 217 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 25.0 sy, 0.0 ni, 74.7 id, 0.2 wa, 0.0 hi, 0.1 si, 0.0 st
KiB Mem: 3028784 total, 1874468 used, 1154316 free, 1010276 buffers
KiB Swap: 15624188 total, 3032 used, 15621156 free. 234928 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
52 root 20 0 0 0 0 R 99.7 0.0 122:15.21 kswapd0
3 root 20 0 0 0 0 S 0.3 0.0 0:29.86 ksoftirqd/0
7 root 20 0 0 0 0 S 0.3 0.0 9:49.47 rcu_sched
Rozwiązanie tymczasowe
ponowne uruchomienie rozwiązało problem - tymczasowo.
# top
top - 10:08:58 up 5 days, 18:55, 1 user, load average: 0.72, 0.95, 0.98
Tasks: 220 total, 1 running, 219 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.2 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 3028784 total, 681704 used, 2347080 free, 2916 buffers
KiB Swap: 15624188 total, 3032 used, 15621156 free. 81924 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
9 root 20 0 0 0 0 S 0.3 0.0 14:10.40 rcuos/0
1 root 20 0 45652 8124 2888 S 0.0 0.3 1:54.98 init
Stałe rozwiązanie (do znalezienia)?
ale ponieważ faktyczny powód nie jest jeszcze znany, a ja nie podałem żadnego odpowiedniego wyjaśnienia w sieci, nie jest to trwałe rozwiązanie. Właściwie wybrana odpowiedź może być trwałym rozwiązaniem. Chciałem tylko dodać to do przyszłego odwołania, ponieważ ponowne uruchomienie (aby sysctl zadziałało) nie zawsze jest możliwe.
Bardzo ładna odpowiedź, dzięki. Jądro RPi zostało zaktualizowane i to właśnie otrzymuję, berserking kswap.
Paul B
Dzięki, @PaulB. Do mojej odpowiedzi dodałem zadanie crona, którego używam jako stałego rozwiązania w moim systemie.
Martin Rüegg,
Jak słusznie zauważył @Veger , działa to również 16.04. Ponieważ obecnie używam siebie. Więc dodał tag. Dzięki!
Martin Rüegg
Jeszcze raz dziękuję, @Veger ! - Poprawiłem brakujący wykrzyknik w scenariuszu Sha-Bang.
Martin Rüegg,
1
„echo 1> / proc / sys / vm / drop_caches” naprawiło dla mnie wysokie użycie procesora - różnica dnia i nocy! kswapd0 przeszedł ze 100% procesora do 0%. Wyjaśnienie dlaczego i trwałe rozwiązanie byłoby świetne. (Uwaga dodatkowa: Używam jądra Linuksa 4.8.0-36-generic z 16 GB mem i 16 GB swap.)
Odpowiedzi:
Proces kswapd0 to proces zarządzający pamięcią wirtualną. Twoje urządzenie powinno mieć pamięć RAM, SWAP i EXT4 na twoim HDD / SSD. Ext4 to miejsce, w którym wszystko jest przechowywane i zawsze jest wolniejszy dostęp niż RAM. Pamięć RAM przypomina przestrzeń do biegania w połowie drogi, dzięki której programy mają szybki dostęp do informacji. Większość komputerów ma co najmniej 4 GB pamięci RAM, co w normalnych warunkach jest wystarczające. Podczas grania możesz jednak zabraknąć miejsca w pamięci RAM, czyli tam, gdzie przychodzi SWAP.
SWAP to fałszywa pamięć RAM znajdująca się na dysku HDD / SSD obok EXT4. Jest szybszy dostęp niż EXT4, ale jest znacznie wolniejszy niż rzeczywista pamięć RAM. Kiedy kończy się mało pamięci, kswapd0 przenosi programy, których nie używasz / nie używasz tak często, jak inne programy do SWAP, co powoduje znaczne opóźnienie tych procesów. Gdyby twoja gra wymagała 5 GB pamięci RAM, 1 GB w LEAST byłby w SWAP. Oznacza to, że kiedy próbuje uzyskać dostęp do tych informacji, musi czekać dłużej, aby je uzyskać.
Cały ten proces powoduje ekstremalne zużycie procesora, przenoszenie informacji zi do SWAP i pamięci RAM oraz obsługę żądania informacji jednocześnie. Jak rozwiązać ten problem?
Powiedz kswapd0, aby przenosił rzeczy do SWAP tylko wtedy, gdy całkowicie brakuje pamięci RAM. Jest to najbardziej skuteczna metoda rozwiązywania problemów SWAP. Biegać
echo vm.swappiness=0 | sudo tee -a /etc/sysctl.conf
gdzie
0
jest procent pominięty,100
przy którym należy użyć SWAP (gdy pozostało 0% pamięci RAM, SWAP zacznie pobierać dane). Możesz także edytować /etc/sysctl.conf według własnych upodobań zamiast dodawać to polecenie na końcu za każdym razem, używając gedit lub nano lub cokolwiek innego, pamiętaj jednak, że sudo, ten plik jest własnością root. Uruchom ponownie, a twoje są gotowe!To najlepsze, co możesz zrobić. Inni mogą powiedzieć całkowicie wyłącz swap, ale jest to niebezpieczne i NIE poleciłbym tego. Może to spowodować zawieszenie się całych systemów w przypadku wycieku pamięci lub uruchomienia zbyt wielu aplikacji. Po prostu zdaj sobie sprawę, że SWAP jest bezpiecznym dla pamięci RAM. Z pewnością nie jest tak szybki ani wydajny jak pamięć RAM, ale jest lepszy niż plik stronicowania Windows! (który spełnia ten sam cel)
EDYCJA: Jeśli chcesz dowiedzieć się więcej o SWAP, zobacz tutaj .
źródło
kwapd0
się skończył. Dzięki.kswapd0 działa na 99,9% jednego procesora, ale tak naprawdę wcale nie zamienia
Dla mnie zdarza się to czasami na Ubuntu 14.04 z jądrem 3.19.0-50-generic (i wcześniejszym) uruchomionym w VMware vm. Nie mam pojęcia, co sprawiło, że się pojawił, ale pojawia się w czasie bezczynności.
top
przedstawia:Rozwiązanie tymczasowe
ponowne uruchomienie rozwiązało problem - tymczasowo.
po odpowiedzi na błąd serwera (kswapd często używa 100% procesora, gdy używana jest funkcja swap) tam, gdzie te same ustawienia w moim systemie:
rozwiązaniem było w rzeczywistości
# echo 1 > /proc/sys/vm/drop_caches
:teraz jest w porządku:
Stałe rozwiązanie (do znalezienia)?
ale ponieważ faktyczny powód nie jest jeszcze znany, a ja nie podałem żadnego odpowiedniego wyjaśnienia w sieci, nie jest to trwałe rozwiązanie. Właściwie wybrana odpowiedź może być trwałym rozwiązaniem. Chciałem tylko dodać to do przyszłego odwołania, ponieważ ponowne uruchomienie (aby sysctl zadziałało) nie zawsze jest możliwe.
Innym rozwiązaniem może być ustawienie THP na jeden
madvice
lubnever
(patrz komentarz poige'a do jego odpowiedzi : Jak zmodyfikować „/ sys / kernel / mm / transparent_hugepage / enabled” oraz przywołany Podręcznik MongoDB na temat wyłączania przezroczystych ogromnych stron (THP) )praca crona
skonfigurowałem następującą partię jako zadanie CRON jako „trwałe” rozwiązanie:
przywołany z
16.04 14.04 zamiana
źródło