Eu tenho alta io stat. Alto escreve. Mas quais arquivos estão sendo gravados?

10
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          11.50    0.02    5.38    0.07    0.00   83.04

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sdc               0.01    89.92    0.26   41.59     3.36   457.19    22.01     0.23    5.60   0.09   0.38
sdb               0.10    15.59    0.40   14.55     8.96   120.57    17.33     0.04    2.91   0.07   0.11
sda               0.13    45.37    0.96    8.09    20.06   213.56    51.63     0.02    2.64   0.16   0.14
sde               0.01    31.83    0.09   11.34     0.94   103.56    18.29     0.04    3.52   0.14   0.16
sdd               0.01    48.01    0.13   19.81     1.58   202.16    20.44     0.11    5.62   0.13   0.25

Existe uma maneira de saber quais arquivos estão sendo gravados? 457 kB / s

Além disso, esta outra máquina linux tem esse mesmo problema.

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          20.50    0.00   46.48   20.74    0.00   12.28

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.17    11.61    0.99    3.51    36.65    59.43    42.70     0.10   23.20   3.84   1.73
sdb               0.55   224.18   24.30   97.45   246.48  1287.12    25.19     3.96   32.53   7.88  95.91
sdd               0.53   226.75   25.56   90.96   283.50  1271.69    26.69     3.43   29.44   8.22  95.75
sdc               0.00     1.76    0.28    0.06     4.73     7.26    70.41     0.00   12.00   2.12   0.07
dm-0              0.00     0.00    1.11   14.77    36.41    58.92    12.01     1.00   62.86   1.09   1.74
dm-1              0.00     0.00    0.04    0.12     0.17     0.49     8.00     0.00   21.79   2.47   0.04
dm-2              0.00     0.00    0.01    0.00     0.05     0.01     8.50     0.00    7.90   2.08   0.00

1200 pedidos de gravação por segundo para um servidor que não hospeda nada

    
por user4951 06.01.2013 / 04:36

4 respostas

6

Bem, você pode tentar os seguintes comandos que funcionaram para mim no RHEL6:

1) Qualquer dispositivo que você vir na saída "iostat" executando mais E / S, use-o com o comando fuser da seguinte forma:

fuser -uvm device

2) Você obterá uma lista de processos com o nome do usuário causando mais E / S. Selecione os PIDS e use-os no comando lsof da seguinte forma:

lsof -p PID | more

3) Você obterá uma lista de arquivos / diretórios junto com o usuário executando a máxima E / S.

    
por 06.01.2013 / 07:38
5

Parece que não há ferramentas para descobrir a taxa de transferência de E / S por arquivo além do processo usando o arquivo. Mas há maneiras de descobrir a taxa de transferência de E / S do processo.

iotop - É um utilitário top / iftop que mostra a taxa de transferência de E / S do processo.

Após o pin apontando qual processo está tendo E / S pesada, use o seguinte para descobrir qual arquivo está sendo usado

lsof -c <process name>

Isso deve diminuir o escopo e ajudar a localizar a fonte.

    
por 06.01.2013 / 05:35
1

Use o systemtap para monitorar cada syscall de gravação / escrita. Você pode fazer alguma contabilidade e você verá qual arquivo / fd recebe o maior número de bytes.

    
por 29.08.2015 / 23:34
1

Você pode usar inotifywait de inotify-tools para descobrir exatamente qual arquivo está sendo gravado. Isso não informará quantos dados estão sendo gravados, mas ao menos informará a você quais arquivos estão sendo gravados.

Como exemplo, este comando imprimirá o nome do arquivo assim que algum for criado, modificado ou excluído em /tmp :

$ sudo inotifywait -e modify -e attrib -e move -e create -e delete -m -r /tmp
Setting up watches.  Beware: since -r was given, this may take a while!
Watches established.
/tmp/ CREATE test
/tmp/ MODIFY test

Infelizmente, você precisará adivinhar qual diretório contém os arquivos que estão sendo gravados. Isso falhará se você tentar usá-lo no diretório raiz, embora aparentemente isso possa ser substituído:

$ sudo inotifywait -e modify -e attrib -e move -e create -e delete -m -r /
Setting up watches.  Beware: since -r was given, this may take a while!
Failed to watch /; upper limit on inotify watches reached!
Please increase the amount of inotify watches allowed per user via '/proc/sys/fs/inotify/max_user_watches'.
    
por 21.08.2016 / 22:56

Tags