Vedo kswapd che utilizza la CPU al 100% ... come posso sapere per quale processo kswapd viene utilizzato così tanto?
Vedo kswapd che utilizza la CPU al 100% ... come posso sapere per quale processo kswapd viene utilizzato così tanto?
Risposte:
kswapd gestisce lo spazio di swap in risposta a richieste di memoria superiori a quelle fisicamente disponibili per tutti i processi.
È un processo agnostico, è interessato solo a quali pagine accedono e quando (è più complesso di questo ovviamente, ma per mantenere le cose semplici possiamo anche vederlo in questo modo).
Quindi la vera domanda è "quali processi hanno il più grande onere sulla memoria che sta facendo sì che kswapd abbia bisogno di sfogliare continuamente".
A questo si risponde più facilmente usando 'top' e passando alla modalità di ordinamento dell'utilizzo della memoria.
top
mi sta dicendo che non viene speso tempo nell'attesa di IO e quasi il 100% del tempo viene impiegato nel sistema. Ulteriori informazioni: kswapd utilizza spesso la CPU al 100% quando si utilizza lo swap
Puoi copiarlo .. ma puoi anche farlo tramite top
Esegui in alto, quindi premi O seguito da p, quindi inserisci
Ora tutti i processi sono ordinati in base all'utilizzo dello swap e puoi vedere quali lo stanno utilizzando
Se utilizzi Ubuntu 15.10 o versioni successive, questo potrebbe essere il risultato un bug , soprattutto se il tuo sistema è una macchina virtuale priva di una partizione di swap (ad esempio AWS EC2). Il problema esiste su altre distribuzioni , ma, al momento della scrittura, non è chiaro se la stessa correzione funziona universalmente.
Una soluzione temporanea:
sudo ln -s /dev/null /etc/udev/rules.d/40-vm-hotadd.rules
sudo reboot
Notare che ciò disabiliterà la RAM / CPU hotadding per macchine virtuali Xen e Hyper-V.
echo 3 > /proc/sys/vm/drop_caches
allevia una volta che inizia a succedere. Ho preventivamente il comando su un lavoro cron ora e sembra aiutare, o almeno limitare la durata del massacro di OOM quando sono lontano dal computer.
Sembra anche che ci sia un bug in kswapd
da qualche parte, si spera solo sui kernel più vecchi.
Quasi ogni giorno ora kswapd va a ruba in modo casuale su alcune macchine in un cluster più grande (con un kernel non corrente, però). CPU al 100% su entrambi i processi kswapd. Nessun altro processo in esecuzione (tranne la shell ssh), molta RAM libera (oltre 700 MB) e nessuno SWAP utilizzato. No swapin, no swapout pure.
Nulla spiega ancora, perché una determinata macchina viene colpita e un'altra no. Sembra non essere del tutto casuale, perché di solito colpisce più di una macchina in breve tempo. Sembra che le macchine che sono inattive, così come le macchine che sono ad alta pressione, siano meno (!) Probabilmente colpite dall'effetto. Quindi deve fare qualcosa con il carico di lavoro e colpisce solo se la macchina non è né inattiva né molto occupata.
Se il problema si risolve, nulla aiuta più. Uccidere tutti i processi (che non sono diventati invendibili), smontare tutti i filesystem, niente. kswapd
rimane ancora al 100% della CPU. Ho il sospetto che ci sia una gara di spinlock nei kernel SMP, ma è anche probabile che mi sbagli.
Forse vedi la mia risposta serverfault.com/questions/316995/#493257
Gli appunti: