
Сегодня я заметил, что светодиод жесткого диска на моем настольном компьютере мигает, хотя нет никаких процессов записи или чтения на диск (SSD).
Я открыл терминал, запустил htop
и отсортировал все процессы по IO_RATE
. Я мог ясно видеть, что ни один из процессов не писал и не читал диск, хотя светодиод HDD моего компьютера все еще мигал 1-2 раза в секунду. Почему это может происходить?
решение1
Существует множество причин, по которым это может произойти. Вероятно, наиболее вероятной является то, что запись в Linux обычно происходит как обратная запись (когда страницы буферизуются в кэше страниц, а затем сбрасываются на диск), что может происходить через неопределенное количество времени после write()
, тогда как счетчики ввода-вывода обычно измеряют немедленную пропускную способность записи/чтения.
Другое заключается в том, что эти счетчики на самом деле знают только то, что Linux намеревается сделать (и в зависимости от счетчика, который исключает даже такие вещи, как обратная запись и решения планировщика ввода-вывода), а не ваш диск. Многие диски независимо выполняют операции, которые не видны операционной системе. Особенно заметным примером — не ваш случай, но все же — являются диски SMR, где даже после того, как операционная система давно закончила запись данных, диск все равно будет работать после этого, чтобы переместить данные на шинглы из более быстрого промежуточного хранилища.
В целом, измерение ввода-вывода на уровне ОС имеет тенденцию быть неточным, а счетчики, используемые htop
там, даже не являются последним словом техники. Чтобы приблизиться, рассмотрите возможность использования cgroup v2 io.stat
, которая имеет большую детализацию и видимость отчетов.