2012-04-04 3 views
1

특정 시스템 호출의 실행 시간을 측정하고 싶습니다. 예를 들어, pread에 CPU와 I/O 모두에서 얼마나 많은 시간이 필요한지 알고 싶습니다.파일 시스템 벤치 마크 도구는 시간을 어떻게 측정합니까?

어떤 기능을 사용해야합니까?

는 지금은 times를 사용하고, 그것을 작동합니다.

gettimeofday는 현재 시간을 얻을 수있다, 그것은 바로, 특정 프로세스의 실행 시간을 계산하지 않을 수 있습니다?

clock이는 I/O 시간을 포함 않습니다, 반환이 프로그램은 지금까지 사용 된 CPU 시간인가? 실행중인 다른 프로그램이 있으면이 기능의 시간에 영향을 줍니까? 실행중인 프로세스를 전환하는 것과 같은 것을 의미합니다.

getrusage은 이상적인 것 같지만 특정 프로세스의 시간도 CPU입니다. IOzone에이 system calls 시간을 계산처럼

는 사람이 어떻게 벤치 마크 도구를 알고 있나요? 나는 그 코드를 읽었으며 여전히 모른다.

+0

iozone은 posix 플랫폼에서'gettimeofday' (전 시간, 천문 시간, 이것은 거의 최고 해상도를가집니다) 및'getrusage' (CPU 시간, 때로는 1-10ms 단위로 반올림)를 사용합니다. '), 출처 (iozone.c)에 따르면. I/O 연산 전후의 두 함수를 호출하고 차이를 계산합니다. syscall 시간을 측정하기 위해'strace -T'도 있는데'strace -T'는'gettimeofday'를 사용하고 그 오버 헤드를 추정하고 뺍니다. 감사합니다. – osgx

답변

2

찾고 계시는 분은 times(2)입니다.

+0

. 정말 도움이됩니다. – bxshi

+0

이 함수를 사용해 보았습니다. 'pread'는 131072 바이트 버퍼이고 총 틱은 항상 0입니다. 정상입니까? 나는 이것을 항상 1310720으로 바꿨는데, 항상 0입니다. 때로는 1입니다.'times'에는 실제로 I/O 시간이 포함되어 있습니까? – bxshi

+0

사용자 시간 또는 시스템 시간을보고 있습니까? –