/ dev / zero에서 읽은 값이 IO_RBYTES로 계산되지 않는 이유는 무엇입니까? 이 명령을 사용하여 일부 Linux

이 명령을 사용하여 일부 Linux 4.x OS에서 하드 드라이브를 비 웁니다.

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_RBYTES4KiB로 유지되며 변경되지 않습니다.

예를 들어 몇 가지 다른 프로그램을 실행했습니다.

dd if=/dev/zero of=/dev/zero
cat /dev/zero > /dev/zero

그리고 그들 중 누구도 많이 발생하지보고 놀랐습니다 IO_RBYTESIO_WBYTES.

나는 이것이 어떤 프로그램에만 국한되지는 않지만 I / O 바이트 /dev/zero/dev/{zero,null}계산 하기 위해 읽고 쓰지 않는 이유는 무엇입니까?



답변

I / O로 계산되지만보고있는 필드에 의해 측정 된 유형은 아닙니다.

에서는 htop, IO_RBYTESIO_WBYTESread_byteswrite_bytes의 필드를 /proc/<pid>/io, 그 필드는 블록 층을 통과 바이트를 측정한다. /dev/zero블록 레이어를 포함하지 않으므로 읽기는 표시되지 않습니다.

에서 I / O를 참조하십시오 /dev/zero당신이 볼 필요가, rchar그리고 wchar필드 /proc/<pid>/io에 표시, htop같은 RCHARWCHAR:

rchar : 문자 읽기

스토리지에서이 태스크를 읽은 바이트 수입니다. 이것은 단순히이 프로세스가 전달한 바이트 read(2)와 유사한 시스템 호출 의 합계입니다 . 여기에는 터미널 I / O와 같은 것이 포함되며 실제 물리 디스크 I / O가 필요한지 여부에 영향을받지 않습니다 (읽기가 pagecache에서 만족되었을 수 있음).

wchar : 문자 쓰기

이 작업으로 인해 발생했거나 디스크에 기록되는 바이트 수입니다. rchar와 비슷한 경고가 여기에 적용됩니다.

참조 man 5 procman 1 htop자세한 내용은.


답변