“vmstat” diz que há atividade de paginação - como identificar o processo de troca?

1

Eu tenho um cenário em que posso ver que há atividade de paginação no meu laptop Ubuntu 16.04 usando vmstat 1 100 .

Devido ao grande tamanho da carga atual, espera-se que os processos sejam mais ou menos trocados para o disco, o que é bom. No entanto, gostaria de identificar aqueles que causam a troca de páginas em o tempo todo (conforme identificado por vmstat ), pois isso pode indicar que a alocação de memória pode ser melhorada.

Minhas habilidades com sysadmin estão um pouco enferrujadas, mas estou confortável em um shell de root.

Quais comandos devo usar para identificar os processos que estão causando a atividade de troca?

    
por Thorbjørn Ravn Andersen 31.01.2018 / 10:46

2 respostas

1

Com problemas de desempenho (por exemplo, altos tempos de CPU), geralmente é melhor monitorar essas coisas ao longo do tempo do que após o fato, especialmente quando processos de curta duração podem ser os culpados. No Linux, uma ferramenta que você pode usar de forma interativa é iotop (link fixo) (veja também as respostas para esta pergunta sobre o rastreamento de E / S de disco . Você pode fazer o script deste (modo em lote) ou executá-lo de forma interativa como top , usar as teclas do cursor para classificar por SWAPIN ou usar a opção -o para que a saída não fique tão confusa. Você precisará do Python ≥2.7 e vários parâmetros de configuração do kernel ativados (consulte iotop ' README ou man page).

Em vez de usar somente dados de /proc como vmstat , iotop usa taskstats , isso usa o IPC do netlink para fornecer com eficiência a contabilidade do processo diretamente do kernel para o espaço do usuário.

Na maioria dos sabores do Linux com a configuração padrão " swappiness " de 60, é bastante normal ver a atividade de paginação quando o sistema está moderadamente ocupado: o kernel está escrevendo preventivamente páginas de processo pouco usadas para trocar em vez de remover páginas de cache de disco usadas recentemente. (Há um parâmetro relacionado vfs_cache_pressure para ajustar algum comportamento de cache.) Se você observar a paginação persistente em andamento, provavelmente haverá mais do que apenas isso.

Caso contrário, se você está preocupado com o swap use agora ao invés de ao longo do tempo: o kernel mantém o controle do uso de swap por processo em /proc/PID/status . Você pode fazer algo rápido com gawk (≥v4.0):

gawk '/^Name:/{nm=$2} /^Pid:/{pid=$2} /^VmSwap:/{sw=$2} 
  ENDFILE{printf("%-24s %6i %6ikiB\n",nm,pid,sw)}' /proc/[0-9]*/status | 
sort -h -k 3

De acordo com a documentação shmem (memória compartilhada) trocada, não é contada aqui, mas você esperançosamente não precisará se preocupar com isso. O script getswap.sh do Eric Ljungstrom também pode ser usado, há um mais avançado versão dele em esta resposta .

    
por 01.02.2018 / 19:26
-1

Experimente o comando:

 ps -eo pid,cmd,vsz

Isto irá listar o processo no formato id do processo, comando executado e tamanho da memória virtual do processo no KiB

    
por 31.01.2018 / 11:16