Como posso saber qual processo está causando o uso do kswapd?

22

Eu vejo o kswapd usando 100% da CPU ... como posso saber em qual nome o kswapd está sendo usado?

    
por Deshawn 28.09.2011 / 20:21

4 respostas

17

O kswapd está gerenciando o espaço de troca em resposta a demandas de memória maiores do que as fisicamente disponíveis para processos todos .

É um processo agnóstico, só está interessado em quais páginas são acessadas e quando (é mais complexo do que isso, é claro, mas para manter as coisas simples, podemos também vê-lo dessa maneira).

Portanto, a questão real é "quais processos têm a maior carga de memória que estão fazendo com que o kswapd precise paginar o tempo todo".

Isso é mais facilmente respondido usando o modo de classificação 'top' e alternando para o uso de memória.

    
por 29.09.2011 / 00:31
10

Você pode fazer o script, mas você também pode fazê-lo via top

Execute top e pressione O seguido por p e então digite

Agora, todos os processos são classificados por uso de troca e você pode ver quais estão usando

    
por 29.09.2011 / 01:12
8

Se você estiver no Ubuntu 15.10 ou superior, isso pode ser o resultado de um erro , 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á RAM / CPUs hotadding para máquinas virtuais Xen e Hyper-V.

    
por 17.09.2016 / 23:22
6

Também parece haver um bug em kswapd em algum lugar, esperançosamente, somente em kernels mais antigos.

Quase todos os dias, o kswapd é atacado aleatoriamente em algumas máquinas em um cluster maior (com um kernel não-atual, no entanto). 100% de CPU em ambos os processos do kswapd. Nenhum outro processo em execução (exceto shell ssh), muita RAM livre (mais de 700 MB) e nenhum SWAP usado em tudo. Sem troca, sem troca também.

Nada explica ainda, porque uma máquina em particular é atingida e outra não. Parece não ser completamente aleatório, porque geralmente atinge mais de uma máquina dentro de um curto período de tempo. Parece que máquinas, que estão ociosas, assim como máquinas que estão sob alta pressão, são menos (!) Provavelmente atingidas pelo efeito. Por isso, tem que fazer alguma coisa com a carga de trabalho e só bate 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 impossíveis de matar), desmontando todos os sistemas de arquivos, nada. kswapd ainda permanece em 100% da CPU. Eu suspeito de alguma corrida spinlock em kernels SMP, mas também é provável que eu esteja errado.

Talvez veja minha resposta serverfault.com/questions/316995/#493257

Notas:

  • A reinicialização de máquinas afetadas geralmente falha porque o processo de desligamento começa a ficar em algum lugar.
  • Não há conexão direta com a Internet. Causas estrangeiras são improváveis.
  • Parece depender do tipo de carga de trabalho que as máquinas processam do ponto de vista da carga, porque temos máquinas que nunca foram afetadas (ainda).
  • Desculpe, não posso ser mais específico sobre o que fazemos e por quê.
  • Sim, estou especulando. Porque é um efeito extremamente intrigante, hoje.
por 28.03.2013 / 17:04