프로그램의 디스크 I / O 사용량 측정


12

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'

답변:


9

사용중인 운영 체제를 지정하지 않았습니다.

리눅스

time foo셸 내장 (대개) 을 사용 하는 대신 외부 명령을 시도 할 수 /usr/bin/time foo있습니다. 파일 시스템 입력 및 출력 수와 같은 추가 정보를 제공하지만 캐시 적중 또는 바이트 수에 대한 정보는 없습니다. 참조 man timeman getrusage자세한 지침.

이 기능에는 Linux 커널 버전 2.6.22 이상이 필요합니다.

FreeBSD

사용하십시오 /usr/bin/time -l foo. 입력 및 출력 수를 제공합니다. 참조 man timeman getrusage자세한 지침.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.