Информация, отображаемая iotop, не собирается одинаково для отдельных процессов и для системы в целом. «Фактические» глобальные цифры не являются суммой цифр для каждого процесса (вот что такое «общее»).
Вся информация собирается из файловой системы proc .
- Для каждого процесса, iotop считывает данные из , в частности, и значение. Это число байтов , переданных в и системных вызовов (включая варианты , такие как , , , и т.д.).
/proc/PID/io
rchar
wchar
read
write
readv
writev
recv
send
- Глобальные «реальные» значения считываются из
/proc/vmstat
, в частности, pgpgin
и pgpgout
значение. Они измеряют данные, которыми обмениваются ядро и оборудование (точнее, это данные, перемешанные на уровне блочных устройств в ядре).
Существует много причин, по которым данные для процесса и данные уровня блочного устройства различаются. Особенно:
- Кэширование и буферизация означают, что ввод-вывод, происходящий на одном уровне, может не происходить в одно и то же время или столько же раз на другом уровне. Например, данные, прочитанные из кэша, учитываются как чтение из процесса, который обращается к нему, но нет соответствующего чтения с аппаратного обеспечения (что уже произошло ранее, возможно, от имени другого процесса).
- Данные уровня процесса включают в себя данные, передаваемые по каналам, сокетам и другим устройствам ввода / вывода, которые не затрагивают базовый диск или другое блочное устройство.
- Данные уровня процесса учитывают только содержимое файла, а не метаданные.
Это последнее различие объясняет то, что вы видите здесь. Удаление файлов влияет только на метаданные, а не на данные, поэтому процесс ничего не записывает. Это может быть чтение содержимого каталога, чтобы вывести список файлов для удаления, но этого достаточно мало, чтобы его можно было прокрутить незаметно.
Я не думаю, что Linux предлагает какой-либо способ отслеживания обновлений метаданных файлов. Вы можете отслеживать ввод-вывод /sys/fs
для каждой файловой системы через записи для некоторых файловых систем. Я не думаю, что вы можете учесть ввод / вывод метаданных в отношении определенных процессов, это было бы очень сложно сделать в общем случае, так как несколько процессов могут вызывать чтение или изменение одних и тех же метаданных.