Por que os números de /proc/diskstats estão subitamente inacreditavelmente baixos?

Por que os números de /proc/diskstats estão subitamente inacreditavelmente baixos?

Eu tenho um servidor Debian jessie com dois SSDs Intel DC S3610, em RAID-10. Está razoavelmente ocupado para IO e nas últimas semanas tenho feito gráficos de IOPS:

Gráfico de transações IO de disco para sda

Como você pode ver, na maioria das vezes ele fazia cerca de 1 mil operações de leitura em média, chegando a cerca de 5,5 mil, até a meia-noite UTC de sexta-feira, que parece parar abruptamente e as operações de leitura caem para quase nada.

Na verdade, só percebi isso retroativamente porque o servidor ainda está funcionando como deveria. Ou seja, acredito que é o monitoramento que está quebrado e não a quantidade de IOPS que o setup consegue fazer. Se o IOPS real tivesse caído para o nível exibido, eu saberia porque todo o resto quebraria visivelmente.

Em uma investigação mais aprofundada, os gráficos de quilobytes lidos/gravados também são quebrados no mesmo ponto. Os gráficos de latência de solicitação estão corretos.

Na tentativa de descartar a solução gráfica específica em uso aqui (cactos e SNMP), dei uma olhada emiostat. Sua saída corresponde ao que está sendo exibido nos gráficos.

Até onde eu saibaiostatobtém suas informações de/proc/diskstats. De acordo comhttps://www.kernel.org/doc/Documentation/iostats.txthaverá o nome do dispositivo principal, secundário e, em seguida, um conjunto de campos, dos quais o primeiro é o número de leituras concluídas. Então:

$ for i in {1..10}; do awk '/sda / { print $4 }' /proc/diskstats; sleep 1; done
3752035479
3752035484
3752035484
3752035486
3752035486
3752035519
3752035594
3752035631
3752036016
3752036374

Simplesmente não é credível que um número tão baixo de leituras tenha sido concluído nesse período de 10 segundos.

Mas se/proc/diskstatsestá mentindo para mim, então qual poderia ser o problema e como posso resolvê-lo?

Também é interessante o fato de que tudo o que mudou, mudou exatamente à meia-noite, o que é bastante uma coincidência.

O servidor possui muitos dispositivos de bloco. 187 deles são LVM LVs e outros 18 são partições usuais e dispositivos MD.

Tenho adicionado regularmente mais LVs, então é possível que na quinta-feira eu tenha atingido algum tipo de limite, embora não tenha adicionado nenhum perto da meia-noite, então ainda é estranho que o que quer que tenha dado errado tenha acontecido à meia-noite.

eu sei que/proc/diskstatspode transbordar, mas quando isso acontece os números normalmente são erroneamente enormes.

Olhando o gráfico com um pouco mais de atenção, podemos ver que ele parece mais pontiagudo na quinta-feira do que na semana (e semanas) anterior. Ampliando os resultados apenas para esse período, vemos:

Gráfico de IOPS, sda, com foco na quinta-feira

Essas lacunas de leituras zero ou próximas de zero são anormais e não acredito que reflitam a realidade. Talvez o número de solicitações tenha ultrapassado algum limite à medida que adicionei mais carga, de modo que começou a se manifestar na quinta-feira e na sexta-feira a maioria das leituras agora é zero?

Alguém tem alguma idéia do que está acontecendo aqui?

Versão do kernel 3.16.7-ckt11-1+deb8u3.

informação relacionada