Eu vejo o kswapd usando 100% da CPU ... como posso saber em qual nome do processo o kswapd está sendo usado tanto?
Eu vejo o kswapd usando 100% da CPU ... como posso saber em qual nome do processo o kswapd está sendo usado tanto?
Respostas:
O kswapd está gerenciando o espaço de troca em resposta a demandas de memória maiores do que o disponível fisicamente para todos os processos.
É independente do processo, interessa-se apenas a quais páginas são acessadas e quando (é mais complexo que isso, é claro, mas, para manter as coisas simples, podemos também vê-las dessa maneira).
Portanto, a verdadeira questão é "quais processos têm o maior ônus na memória que estão fazendo com que o kswapd precise paginar o tempo todo".
Isso é mais facilmente respondido usando 'top' e alternando para o modo de classificação de uso de memória.
top
está me dizendo que não há tempo gasto na espera de IO e quase 100% do tempo no sistema. Mais informações: kswapd muitas vezes usa 100% da CPU quando permuta está em uso
Você pode criar um script .. mas também pode fazê-lo via top
Execute o topo e pressione O seguido de p e digite
Agora todos os processos são classificados pelo uso de swap e você pode ver quais estão usando
Se você estiver no Ubuntu 15.10 ou superior, isso pode realmente ser o resultado de um bug , especialmente se o seu sistema for uma máquina virtual sem uma partição de troca (por exemplo, AWS EC2). O problema existe em outras distribuições , mas, até o momento, não está claro se a mesma correção funciona universalmente.
Uma solução temporária:
sudo ln -s /dev/null /etc/udev/rules.d/40-vm-hotadd.rules
sudo reboot
Observe que isso desativará o hotadding RAM / CPUs para máquinas virtuais Xen e Hyper-V.
echo 3 > /proc/sys/vm/drop_caches
alivia assim que começa a acontecer. Agora tenho o comando preventivamente em um trabalho cron agora e parece ajudar, ou pelo menos limitar a duração do massacre da OOM, quando estou longe do computador.
Também parece haver um bug em kswapd
algum lugar, espero apenas em kernels antigos.
Quase todos os dias, o kswapd entra em operação aleatoriamente em algumas máquinas em um cluster maior (com um kernel não atual). CPU 100% nos dois processos kswapd. Nenhum outro processo em execução (exceto o ssh shell), bastante RAM livre (mais de 700 MB) e nenhum SWAP usado. Sem troca, sem troca também.
Nada explica ainda, por que uma máquina específica é atingida e outra não. Parece não ser completamente aleatório, porque geralmente atinge mais de uma máquina em um curto espaço de tempo. Parece que máquinas que estão ociosas, bem como máquinas que estão sob alta pressão, são menos (!) Provavelmente atingidas pelo efeito. Portanto, ele tem a ver com a carga de trabalho e só atinge se a máquina não estiver ociosa nem muito ocupada.
Se o problema ocorrer, nada mais ajuda. Matando todos os processos (que não se tornaram inomináveis), desmontando todos os sistemas de arquivos, nada. kswapd
ainda permanece com 100% da CPU. Suspeito de alguma corrida spinlock nos kernels SMP, mas também é provável que eu esteja errado.
Talvez veja minha resposta serverfault.com/questions/316995/#493257
Notas: