Como obter o uso de I / O por processo no Unix? [duplicado]

6

Estou tentando fazer uma operação intensiva da CPU em uma máquina Linux e está mostrando uma carga muito alta.

Eu quero descobrir se essa carga é devida ao uso de I / O ou CPU. Como eu poderia obter a porcentagem de uso de E / S por processo?

    
por samarth 10.08.2011 / 11:32

3 respostas

6

Experimente o programa chamado "iotop". Ele mostra o uso de unidades de disco locais de maneira semelhante à "superior" para uso da CPU. Para o tráfego de rede, existe uma ferramenta chamada "iftop".

Além disso, se você não tiver certeza de por que a carga está alta, veja a coluna "IO Wait" na visualização "top". Se o tempo da CPU vai principalmente para o trabalho "usuário" ou "sistema", então é a CPU que é o gargalo, se "espera IO", então disco. Também vale a pena procurar números de troca - se a memória física tiver menos de 5% de espaço livre e / ou muito arquivo de troca for usado, você pode estar limitado pela memória física.

Por exemplo:

top - 17:18:37 up 1 day,  5:20, 19 users,  load average: 0.18, 0.26, 0.35
Tasks: 249 total,   2 running, 246 sleeping,   0 stopped,   1 zombie
Cpu(s):  8.5%us,  2.1%sy,  0.3%ni, 85.4%id,  3.7%wa,  0.0%hi,  0.1%si,  0.0%st
Mem:   8183668k total,  8082464k used,   101204k free,    11148k buffers
Swap: 11847900k total,   248528k used, 11599372k free,  3361444k cached

"us" significa código de espaço do usuário, "sy" para sistema, "id" para inativo, "wa" para espera de E / S.

    
por 10.08.2011 / 14:59
0

Dê uma olhada no procs Linux

    
por 10.08.2011 / 11:50
0

Para começar, você pode executar top e observar o uso total da CPU na terceira linha da exibição. Se as médias de carga na primeira linha forem altas, mas o uso da CPU na terceira linha for baixo, o problema será o uso de E / S. Para reduzi-lo mais especificamente, você pode usar iotop , como o Zds sugeriu.

    
por 10.08.2011 / 15:59