Como medir a E / S total do disco por hora

3

Eu tenho um servidor em nuvem onde somos faturados também pelo uso de IO em disco. Aqui está um exemplo das estatísticas:

04/Sep/2013 07:24:19
04/Sep/2013 08:24:19
0,5 GB / 1 vCPU (0,08 Kr. per hour): Charge for 44.7578125GB disk I/O

Então, por uma hora, somos cobrados por cerca de 45 GB de E / S.

Para mim isso soa como muito tráfego e eu gostaria de fazer algum monitoramento para verificar sozinho. Eu sei sobre ferramentas como dstat e sysstat etc, mas não encontrei nenhum exemplo mostrando totais por uma hora (ou outro período de tempo). A maioria dos exemplos é a média dos resultados, como este comando:

dstat -tdD total 60

Aqui, ele mostra a medição de E / S do disco por 60 segundos, mas a média é. Então, se eu copiar um arquivo grande, verei o número aumentar durante a cópia, mas assim que terminar, o número diminuirá novamente. Em outras palavras, não acabo com um total verdadeiro para esse período.

Como posso registrar a quantidade total de E / S de disco em um determinado período de tempo?

    
por marlar 04.09.2013 / 22:56

1 resposta

3

Você pode usar a ferramenta iostat para coletar as informações de utilização do disco. São necessários vários argumentos, incluindo o comutador, -d :

   -d     Display the device utilization report.

Também é necessário um argumento em segundos, um intervalo de quão freqüente ele deve ser executado novamente. O valor 3600 seria o número de segundos em uma hora.

Exemplo

$ iostat -d 3600
Linux 2.6.35.14-106.fc14.x86_64 (grinchy)   09/04/2013  _x86_64_    (4 CPU)

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda              20.53        71.86      1259.61   20308334  356000380
dm-0              4.92        39.02        28.81   11027610    8143376
dm-1              0.54         0.93         3.38     261472     954912
dm-2            156.65        31.87      1227.42    9006394  346902056

A saída deste comando pode ser redirecionada para um arquivo:

$ iostat -d 3600 >> iostat_hrly.log

Significado das unidades

Se você consultar a página de manual de iostat , ele terá boas descrições das unidades.

trecho

   Blk_read/s
         Indicate the amount of data read from the device expressed in a 
         number of blocks per second. Blocks are equivalent to sectors with
         kernels 2.4 and later and  therefore have a size of 512 bytes. With
         older kernels, a block is of indeterminate size.

  Blk_wrtn/s
         Indicate the amount of data written to the device expressed in a 
         number of blocks per second.

  Blk_read
         The total number of blocks read.

  Blk_wrtn
         The total number of blocks written.

Portanto, um bloco é de 512 bytes, então o valor Blk_read / s em termos de MB para o dispositivo sda seria 71,86 * 512 bytes = 36,79232 kilobytes / segundo.

Existem switches adicionais que irão alterar as unidades automaticamente na saída.

excerto da página de manual iostat

-h     Make the NFS report displayed by option -n easier to read by a human.

-k     Display statistics in kilobytes per second instead of blocks per 
       second.  Data displayed are valid only with kernels 2.4 and later.

-m     Display statistics in megabytes per second instead of blocks or 
       kilobytes per second.  Data displayed are valid only with kernels 
       2.4 and later.

Exemplo em KB / s

Então, isso pode ser mais útil, mostrando a taxa de transferência em KB / s:

$ iostat -dk 3600
Linux 2.6.35.14-106.fc14.x86_64 (grinchy)   09/05/2013  _x86_64_    (4 CPU)

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda              20.85        47.25       663.81   15475096  217427086
dm-0              5.01        20.00        14.43    6549301    4725068
dm-1              0.54         0.58         1.60     189064     524872
dm-2            165.30        26.65       647.78    8730281  212177124
    
por 04.09.2013 / 23:32

Tags