monitoriza tamanhos de iops

1

Como monitorar o tamanho dos iops de armazenamento em um Linux moderno?

Consigo monitorar a quantidade de iops de armazenamento usando comandos como iostat. No entanto, gostaria de saber o tamanho dos iops que são gerados pela carga de trabalho.

Algo como, nos últimos X segundos, houve: 5 iops 4K, 10 iops 8K, 20 iops 16K ...

Estou interessado em monitorar no nível de dispositivo de bloco (por exemplo, / dev / sda), mas em qualquer outro nível seria interessante também.

    
por TimB 01.06.2017 / 18:55

1 resposta

1

Nível baixo

No nível inferior, você pode obter essas informações em /sys/block/X/stat , que está documentado aqui .

Exemplo de conteúdo parece com:

   10465     3250   759844    27528     4400     2983   546848    66306        0     9754    93792

Os campos que queremos são colunas 1 & 3 para leituras e 5 & 7 para gravações. O método de cálculo é o mesmo para ambos, então vou apenas discutir as leituras.

Coluna 1 é o número de leituras (que você declarou que você já pode monitorar), e a coluna 3 é o número de setores lidos. Um setor é 512 bytes. Então, com estes para calcular o tamanho das leituras, você só faz $col3 * 512 / $col1 .
Os números neste arquivo são o total desde que o disco ficou online. Então, para calcular o tamanho médio de leitura durante um período de tempo, basta ler o arquivo duas vezes e calcular com: ($col3_t2 - $col3_t1) * 512 / ($col1_t2 - $col1_t1) .

Observe que o método acima fornece o tamanho dos OPs executados no nível do aplicativo (a descrição não é exata, mas próxima o suficiente). O kernel pode mesclar várias operações juntas para que o número de operações realizadas no disco seja menor. O cálculo para isso é: $col3 * 512 / ($col1 - $col2) . E para obter o valor ao longo de um período de tempo: ($col3_t2 - $col3_t1) * 512 / (($col1_t2 - $col1_t1) - ($col2_t2 - $col2_t1))

Alto nível

iostat pode lhe dar o valor também, mas com menos precisão. Ele não diferencia gravações ou leituras, e apenas lhe dá o valor em setores, não em bytes (então, novamente, multiplique por 512). Mas o comando é iostat -x -d e a coluna a ser vista é avgrq-sz .

    
por 02.06.2017 / 02:35