time
주어진 명령에 걸리는 CPU 시간을 알아 내려면 훌륭한 명령입니다.
프로그램 및 모든 하위 디스크의 I / O를 측정 할 수있는 유사한 것을 찾고 있습니다. 캐시 된 I / O (디스크가 회전하지 않도록 함)와 캐시되지 않은 I / O를 구분해야합니다.
그래서 나는하고 싶습니다 :
iomeassure my_program my_args
다음과 비슷한 출력을 얻습니다.
Cached read: 10233303 Bytes
Cached write: 33303 Bytes # This was probably a tmp file that was erased before making it to the disk
Non-cached read: 200002020 Bytes
Non-cached write: 202020 Bytes
나는 살펴 보았다 vmstat
, iostat
그리고 sar
, 그러나이 중 어느 것도 하나의 프로세스에보고되지 않습니다. 대신 그들은 전체 시스템을 봅니다.
나는을 보았지만 iotop
, 그것은 단지이 순간을 볼 수있게합니다.
--- 편집하다 ---
스냅의 대답은 가깝습니다.
'파일 시스템 입력 :'은 512 바이트 블록의 캐시되지 않은 읽기입니다.
'파일 시스템 출력 :'은 512 바이트 블록으로 캐시 된 쓰기입니다.
다음을 사용하여 캐시를 강제로 비울 수 있습니다.
sync ; echo 3 | sudo tee /proc/sys/vm/drop_caches >/dev/null
나는 다음과 같이 테스트했다.
seq 10000000 > seq
/usr/bin/time -v bash -c 'perl -e "open(G,\">f\"); print G <>;close G; unlink \"f\";" seq'