Informasi yang ditunjukkan oleh iotop tidak dikumpulkan dengan cara yang sama untuk proses individu dan untuk sistem secara keseluruhan. Angka global "aktual" bukanlah jumlah dari angka per-proses (itulah "total").
Semua informasi dikumpulkan dari sistem file proc .
- Untuk setiap proses, iotop membaca data dari , khususnya nilai dan . Ini adalah jumlah byte berlalu dalam dan panggilan sistem (termasuk varian seperti , , , , dll).
/proc/PID/io
rchar
wchar
read
write
readv
writev
recv
send
- Nilai "aktual" global dibaca dari
/proc/vmstat
, khususnya nilai pgpgin
dan pgpgout
. Ini mengukur data yang dipertukarkan antara kernel dan perangkat keras (lebih tepatnya, ini adalah data yang dikocok oleh lapisan perangkat blok di kernel).
Ada banyak alasan mengapa data per-proses dan data lapisan perangkat blok berbeda. Khususnya:
- Caching dan buffering berarti bahwa I / O terjadi pada satu lapisan mungkin tidak terjadi pada waktu yang sama, atau jumlah yang sama kali, pada lapisan lainnya. Misalnya, data yang dibaca dari cache dicatat sebagai pembacaan dari proses yang mengaksesnya, tetapi tidak ada pembacaan yang sesuai dari perangkat keras (yang sudah terjadi sebelumnya, mungkin atas nama proses lain).
- Data tingkat proses mencakup pertukaran data pada pipa, soket, dan input / output lainnya yang tidak melibatkan disk yang mendasarinya atau perangkat blok lainnya.
- Data tingkat proses hanya menyumbang konten file, bukan metadata.
Perbedaan terakhir itu menjelaskan apa yang Anda lihat di sini. Menghapus file hanya memengaruhi metadata, bukan data, jadi prosesnya tidak menulis apa pun. Mungkin membaca isi direktori untuk membuat daftar file yang akan dihapus, tapi itu cukup kecil sehingga dapat bergulir tanpa diketahui.
Saya tidak berpikir Linux menawarkan cara untuk memantau pembaruan metadata file. Anda dapat memonitor I / O sistem per-file melalui entri di bawah /sys/fs
untuk beberapa sistem file. Saya tidak berpikir Anda dapat memperhitungkan metadata I / O terhadap proses tertentu, akan sangat rumit untuk dilakukan dalam kasus umum karena beberapa proses dapat menyebabkan metadata yang sama dibaca atau diubah.