Eu li um monte de posts sobre métodos de captura de disco IO no Linux, no entanto, nenhum deles respondeu a fonte da minha confusão.
No meu caso, estou monitorando o disco IO no Linux usando o SNMP (diskIOTable), que me retorna dados para vários dispositivos de um sistema. Por exemplo, no meu sistema de referência eu tenho registros para o disco sda
, a partição de inicialização sda1
, a partição raiz sda2
, o volume lógico LVM dm-0
e o volume lógico LVM da minha troca, dm-1
.
Ao calcular o disco IO para o sistema, como esses vários elementos interagem? Eu estava assumindo inicialmente que as estatísticas de um disco, sda
, incluiria as estatísticas relatadas pela partição sda1
, no entanto, estou vendo uma grande discrepância entre as estatísticas relatadas para sda
e sda1
, mesmo quando sda1
é a única partição no disco. Isto é ainda mais evidente quando eu começo a olhar para sistemas com múltiplas partições, por exemplo, um assumiria que sda1 + sda2 == sda
, no entanto, isso nem sempre parece ser o caso (embora em alguns sistemas é próximo). Quase sempre, as estatísticas relatadas pelo disco excedem as estatísticas relatadas pela partição ou pelo somatório das estatísticas relatadas por todas as partições de um disco.
E como os dispositivos dm-*
influenciam?
É razoável supor que ignorar partições e dispositivos lógicos como dm-*
, md*
, loop*
, ram*
e somar as estatísticas de E / S somente para discos reais pode descrever com precisão o IO agregado (para cada bytes e ops) de um determinado sistema?
reads(sda) + reads(sdb) + reads(sdc) == reads(host)
Ou estou faltando alguma coisa?
Tags monitoring io linux