Informacje wyświetlane przez iotop nie są gromadzone w ten sam sposób dla poszczególnych procesów i dla całego systemu. „Rzeczywiste” liczby globalne nie są sumą liczb na proces (to jest „suma”).
Wszystkie informacje są zbierane z systemu plików proc .
- Dla każdego procesu iotop odczytuje dane , w szczególności wartości i . Są to liczba bajtów w minęły i wywołań systemowych (w tym warianty, takie jak , , , , itd.).
/proc/PID/io
rchar
wchar
read
write
readv
writev
recv
send
- Odczytywane są globalne „rzeczywiste” wartości
/proc/vmstat
, w szczególności wartości pgpgin
i pgpgout
. Mierzą one dane wymieniane między jądrem a sprzętem (a dokładniej są to dane przetasowane przez warstwę urządzenia blokowego w jądrze).
Istnieje wiele powodów, dla których dane dla poszczególnych procesów i dane warstwy urządzenia blokowego są różne. W szczególności:
- Buforowanie i buforowanie oznaczają, że operacje we / wy na jednej warstwie mogą nie zachodzić w tym samym czasie lub tyle samo razy na drugiej warstwie. Na przykład dane odczytane z pamięci podręcznej są rozliczane jako odczyt z procesu, który uzyskuje do nich dostęp, ale nie ma odpowiedniego odczytu ze sprzętu (co już wcześniej miało miejsce, być może w imieniu innego procesu).
- Dane na poziomie procesu obejmują dane wymieniane na potokach, gniazdach i innych wejściach / wyjściach, które nie wymagają dysku lub innego urządzenia blokowego.
- Dane na poziomie procesu uwzględniają tylko zawartość pliku, a nie metadane.
Ta ostatnia różnica wyjaśnia, co tu widzisz. Usunięcie plików wpływa tylko na metadane, a nie dane, więc proces nic nie zapisuje. Być może odczytuje zawartość katalogu, aby wyświetlić listę plików do usunięcia, ale jest wystarczająco mała, aby przewijać ją niezauważalnie.
Nie sądzę, że Linux oferuje sposób monitorowania aktualizacji metadanych plików. W /sys/fs
niektórych systemach plików można monitorować operacje wejścia / wyjścia dla poszczególnych systemów plików. Nie sądzę, aby można było rozliczać operacje we / wy metadanych względem określonych procesów, byłoby to bardzo skomplikowane w ogólnym przypadku, ponieważ wiele procesów może powodować odczyt lub zmianę tych samych metadanych.
Gilles „SO- przestań być zły”
źródło
rm -r
jest aktualnie przetwarzany, wprowadzającstrace
go, ale nie da to bardzo przydatnego oszacowania procentu ukończenia, ponieważ kolejność przechodzenia w każdym katalogu jest nieco nieprzewidywalna. Jeśli w tym systemie plików dzieje się tylko jedna ogromna operacja i nie ma w niej zbyt wielu twardych łączy, oglądaniedf -i
powie ci, ile plików zostało przetworzonych.