2010-01-24 5 views
1

Intels RDTSC를 사용하여 일부 성능 측정을 시도하고 있는데, 다른 테스트 실행 중에 나타나는 변형이 꽤 입니다. 대부분의 경우 C 의 벤치 마크는 3000000Mio 사이클을 필요로하지만 정확히 동일한 실행은 경우에 따라 5000000으로 거의 두 배가됩니다. 나는 좋은 성능 평가를 얻을 수 있도록 병렬로 실행되는 강렬한 워크로드를 사용하지 않으려 고 시도했다. 이 거대한 타이밍 변이가 어디에서 왔는지 누구나 생각할 수 있습니까? 나는 인터럽트와 물건이 일어날 수 있다는 것을 안다. 그러나 나는 타이밍의 그런 거대한 변이가 을 기대하지 않았다!성능 평가 중 이상 치

추신 : 나는 그것을 실행하는 리눅스와 펜티엄 프로세서에서 실행하고 있습니다. 피드백

감사 존 this Wikipedia article 따르면

답변

0

는 RDTSC (타임 스탬프 카운터)은 멀티 코어 시스템에서 벤치마킹 안정적으로 사용할 수 없다. 모든 코어가 타임 스탬프 레지스터에서 동일한 값을 가질 것이라는 약속은 없습니다.

Linux의 경우 POSIX clock_gettime 기능을 사용하는 것이 좋습니다.

I

더 강렬한 워크로드

병렬

에서 실행 당신은 현대 OS에서이 이상 부족 제어 할이없는 것으로
을 시도 :

+0

감사합니다.하지만 단일 핵심 시스템에서 테스트를 실행하고 있습니다. – John

2

나는 대답에 생각합니다.

0

최신 프로세서의 캐시를 고려해야합니다. 다른 프로세스는 장기 실행 시간을 측정 한 경우 프로그램의 캐시 내용을 제거합니다. Henk이 지적했듯이 현대 OS에서는 많은 것을 제어 할 수없는 많은 일들이 발생합니다.