monitorar tamanhos de iops

monitorar tamanhos de iops

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

Consigo monitorar a quantidade de iops de armazenamento usando comandos como iostat. Porém gostaria de saber o tamanho dos iops gerados pela carga de trabalho.

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

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

Responder1

Nível baixo

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

O conteúdo de exemplo é semelhante a:

   10465     3250   759844    27528     4400     2983   546848    66306        0     9754    93792

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

A coluna 1 é o número de leituras (que você afirmou que já consegue monitorar) e a coluna 3 é o número de setores lidos. Um setor tem 512 bytes. Então, com isso, para calcular o tamanho das leituras, basta fazer $col3 * 512 / $col1.
Os números neste arquivo são o total desde que o disco ficou online. Portanto, 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 para que o número de operações executadas 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

iostattambém pode fornecer o valor, mas com menos precisão. Ele não diferencia gravações ou leituras e apenas fornece o valor em setores, não em bytes (então, novamente, multiplique por 512). Mas o comando é iostat -x -de a coluna a ser observada é avgrq-sz.

informação relacionada