다음 명령을 사용하여 일부 Linux 4.x 운영 체제에서 하드 드라이브를 지우고 있습니다.
sudo sh -c 'pv -pterb /dev/zero > /dev/sda'
나는 또 다른 tty를 열고 시작 sudo htop
하고 이것을 발견했습니다.
PID USER PRI NI CPU% RES SHR IO_RBYTES IO_WBYTES S TIME+ Command
4598 root 20 0 15.5 1820 1596 4096 17223823 D 1:14.11 pv -pterb /dev/zero
값은 IO_WBYTES
정상으로 보이지만 IO_RBYTES
4KiB로 유지되며 절대 변경되지 않습니다.
나는 다음과 같은 다른 프로그램을 실행했습니다.
dd if=/dev/zero of=/dev/zero
cat /dev/zero > /dev/zero
IO_RBYTES
그리고 그들 중 어느 것도 많은 성과를 내지 못했다 는 사실에 놀랐습니다 IO_WBYTES
.
이것이 특정 프로그램에만 해당되는 것은 아닌 것 같은데, 읽기 및 쓰기가 I/O 바이트로 계산 /dev/zero
되지 않는 이유는 무엇입니까?/dev/{zero,null}
답변1
I/O로 계산되지만 보고 있는 필드로 측정된 유형은 아닙니다.
블록 레이어를 통과하는 바이트를 측정하는 htop
, IO_RBYTES
및 의 및 필드를 IO_WBYTES
표시합니다 . read_bytes
블록 레이어는 관련되지 않으므로 해당 레이어에서 읽은 내용은 표시되지 않습니다.write_bytes
/proc/<pid>/io
/dev/zero
의 I/O를 보려면 /dev/zero
의 및 필드를 확인해야 합니다. 해당 필드 rchar
는 및 와 같이 나타납니다.wchar
/proc/<pid>/io
htop
RCHAR
WCHAR
문자 유형: 읽은 문자
이 작업으로 인해 스토리지에서 읽은 바이트 수가 나타났습니다. 이는 단순히 프로세스에 전달된 바이트의 합계입니다.
read(2)
그리고 유사한 시스템 호출. 여기에는 터미널 I/O 등이 포함되며 실제 물리적 디스크 I/O가 필요한지 여부에 영향을 받지 않습니다(읽기는 페이지 캐시에서 이미 충족되었을 수 있음).문자 유형: 쓰여진 문자
이 작업으로 인해 디스크에 기록되었거나 기록되어야 했던 바이트 수입니다. rchar와 유사한 경고가 여기에 적용됩니다.
바라보다man 5 proc
그리고man 1 htop
더 알아보기.