Como posso saber quais processos estão gravando strongmente em disco no CentOS 5?

4

Nosso servidor começou a ficar lento, então eu corri o iostat nele.

iostat -dx 5

Device:         rrqm/s   wrqm/s   r/s   w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00    89.60 108.40  5.60   880.00   763.20    14.41     2.61   22.87   8.70  99.20
sdb               0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00

Então eu vejo que o único disco sda está totalmente saturado. Como faço para descobrir quais processos exatos estão causando isso? (ou está trocando para esse disco?)

    
por Artem 03.08.2010 / 02:30

7 respostas

0

Então, infelizmente, nenhum dos pacotes iostat e relacionados funcionam no CentOS 5. Mas consegui encontrar o processo lento culpado usando:

ps auxf | grep 'B'

O que mostra todos os processos aguardando em espera ininterrupta causados pela espera de E / S, portanto, é provável que haja processos fazendo muita E / S.

Isso foi graças a essa resposta do ServerFault: wa (Waiting para I / O) do comando top é grande

Além disso, para aqueles que estão se perguntando se a E / S está lenta devido à troca, dê uma olhada na sua saída principal e veja o que a soma das colunas (livres + em cache) diz. Ou melhor usar o htop, que mostra isso de uma maneira menos confusa.

    
por 03.08.2010 / 20:22
6

Eu também gosto de iotop

    
por 03.08.2010 / 02:50
1

collectl pode ser o que você procura. Estatísticas de I / O por processo , entre outras coisas. collectl --top io para imprimir uma listagem semelhante ao topo, classificada por uso do IO, collectl -sZ para a saída nativa do conjunto para o subsistema de processos. A adição da opção --procopts t mostrará os tópicos também.

Como Richard Salts mencionou, o IOTop lhe dará uma UI com estatísticas mais detalhadas de I / O, se você tiver um gerenciador de janelas e Python, então use isso. Em ambos os casos, se o seu kernel não suporta ( 2.6.20 ou mais tarde é uma aposta segura) então nenhum dos programas funcionará.

    
por 03.08.2010 / 02:43
0

Seria bom saber em que distro você está, mas aqui vai:
Você pode ver em qual disco sua partição swap está, verificando "Linux swap / Solaris" na saída de "fdisk -l / dev / sda". Isso mostrará se há troca nessa partição.

Então, você pode assistir ao uso de swap com o vmstat para ver se o seu servidor está fazendo muita troca.

    
por 03.08.2010 / 02:49
0

uma opção que pode funcionar para você é se o disco só estiver ficando saturado em rajadas, use o collectl para pegar as estatísticas do disco e do processo. em seguida, examine os dados para ver quando o disco está sendo saturado e 'collectl -sZ -p filename' para reproduzir os dados coletados do processo e verificar quais processos estão no estado RUN durante esses horários. pode funcionar, pode não ... -mark

    
por 04.08.2010 / 16:34
0

Tente o comando btrace (ou blktrace )

    
por 04.08.2010 / 16:40
0

iotop funciona bem no CentOS 5.7 (2.6.18-274). Se você estiver usando o kernel antigo, tente dstat .

Instale o rpmforge repo:

rpm -ivh rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm

instale dstat de rpmforge-extras repo para obter uma versão mais recente (0.7.2):

yum --enablerepo=rpmforge-extras install dstat

Para visualizar os principais processos de E / S, você pode usar:

dstat -d --top-io --top-bio
    
por 11.03.2013 / 05:54