
Hoje notei que o LED do HDD dos meus desktops está piscando mesmo que não haja processos de gravação ou leitura do disco (SSD).
Abri um terminal, executei htop
e classifiquei todos os processos por IO_RATE
. Posso ver claramente que nenhum dos processos estava gravando ou lendo o disco, embora o LED do HDD do meu computador ainda piscasse 1 a 2 vezes por segundo. Por que isso poderia estar acontecendo?
Responder1
Existem muitas razões pelas quais isso pode acontecer. Provavelmente, o mais provável é que a gravação no Linux geralmente aconteça como um write-back (onde as páginas são armazenadas em buffer no cache da página e posteriormente liberadas para o disco), o que pode acontecer por um período de tempo indefinido após um write()
, enquanto os contadores de E/S normalmente medem taxa de transferência imediata de gravação/leitura.
Outra é que esses contadores realmente só sabem o que o Linux pretende fazer (e dependendo do contador, isso exclui mesmo coisas como write-back e decisões do agendador de E/S), e não o seu disco. Muitos discos executam independentemente operações que não são vistas pelo sistema operacional. Um exemplo particularmente notável - não o seu caso, mas ainda assim - são os discos SMR, onde mesmo depois de o sistema operacional terminar de gravar os dados, o disco ainda funcionará após o fato para mover os dados para as telhas a partir de um armazenamento intermediário mais rápido.
Em geral, a medição de E/S na camada do sistema operacional tende a ser imprecisa, e os contadores usados por lá htop
nem são o que há de mais moderno. Para chegar mais perto, considere usar o cgroup v2's io.stat
, que tem mais granularidade e visibilidade de relatórios.