답변:
iotop으로 표시되는 정보는 개별 프로세스와 시스템 전체에 대해 동일한 방식으로 수집되지 않습니다. "실제"글로벌 수치는 프로세스 별 수치의 합계가 아닙니다 ( "전체").
모든 정보는 proc 파일 시스템 에서 수집됩니다 .
/proc/PID/io
rchar
wchar
read
write
readv
writev
recv
send
/proc/vmstat
, 특히 pgpgin
및 pgpgout
값을 읽습니다 . 이들은 커널과 하드웨어간에 교환되는 데이터를 측정합니다 (보다 정확하게는 커널의 블록 장치 계층에 의해 섞인 데이터입니다).프로세스 별 데이터와 블록 디바이스 계층 데이터가 다른 많은 이유가 있습니다. 특히:
마지막 차이점은 여기서보고있는 것을 설명합니다. 파일을 제거하면 데이터가 아닌 메타 데이터에만 영향을 미치므로 프로세스가 아무것도 쓰지 않습니다. 삭제할 파일을 나열하기 위해 디렉토리 내용을 읽는 중일 수 있지만 눈에 띄지 않게 스크롤 할 수있을 정도로 작습니다.
리눅스가 파일 메타 데이터 업데이트를 모니터링하는 방법을 제공하지 않는다고 생각합니다. /sys/fs
일부 파일 시스템의 항목을 통해 파일 시스템 별 I / O를 모니터링 할 수 있습니다 . 특정 프로세스에 대해 메타 데이터 I / O를 설명 할 수 없다고 생각합니다. 여러 프로세스로 인해 동일한 메타 데이터를 읽거나 변경할 수 있기 때문에 일반적인 경우에는 수행하기가 매우 복잡합니다.
rm -r
이 현재 처리되고 있는지 볼 수 는 strace
있지만 각 디렉토리의 순회 순서는 다소 예측할 수 없기 때문에 완료율에 대한 매우 유용한 추정치는 제공하지 않습니다. 해당 파일 시스템에서 하나의 대규모 작업이 진행 중이고 하드 링크가 너무 많지 않은 경우 감시 df -i
는 처리 된 파일 수를 알려줍니다.