Інформація, показана iotop, не збирається однаково для окремих процесів та для системи в цілому. "Фактичні" глобальні цифри не є сумою цифр за процес (це те, що "загальне").
Вся інформація збирається з файлової системи proc .
- Для кожного процесу iotop зчитує дані , зокрема значення та значення. Це число байтів , переданих в і системних викликів (включаючи варіанти , такі як , , , і т.д.).
/proc/PID/io
rchar
wchar
read
write
readv
writev
recv
send
- Глобальні "фактичні" значення зчитуються з
/proc/vmstat
конкретно значень pgpgin
та pgpgout
. Вони вимірюють дані, що обмінюються між ядром та апаратним забезпеченням (точніше, це дані, перетасовані навколо шаром пристрою блоку в ядрі).
Існує багато причин, за якими дані про процес і дані про рівень блокового пристрою відрізняються. Зокрема:
- Кешування та буферизація означають, що введення-виведення, що відбувається на одному шарі, може не відбуватися в один і той же час або в одній кількості разів на іншому шарі. Наприклад, дані, зчитувані з кеша, обліковуються як зчитування з процесу, який отримує доступ до нього, але немає відповідного зчитування з обладнання (що вже відбулося раніше, можливо від імені іншого процесу).
- Дані рівня процесу включають дані, що обмінюються на трубах, розетках та іншому вході / виході, що не включає базовий диск або інший блок пристрою.
- Дані на рівні процесу обліковують лише вміст файлу, а не метадані.
Ця остання різниця пояснює те, що ви бачите тут. Видалення файлів впливає лише на метадані, а не на дані, тому процес нічого не записує. Можливо читання вмісту каталогів, щоб перелічити файли, які потрібно видалити, але це досить мало, щоб вони могли прокручуватися непомітно.
Я не думаю, що Linux пропонує будь-який спосіб контролювати оновлення метаданих файлів. Ви можете відстежувати вхідно-вивідні файли для кожної файлової системи через записи в /sys/fs
деяких файлових системах. Я не думаю, що ви можете обліковувати введення-виведення метаданих проти конкретних процесів, це було б дуже складно зробити в загальному випадку, оскільки кілька процесів можуть викликати читання або зміну одних і тих же метаданих.