2012-03-17 2 views
4

통계 실행 프로파일 러 OProfile을 사용하여 C 어플리케이션의 콜 그래프 프로파일을 시각화 할 때 다음 경고가 여러 번 포함됩니다. 경고는 나에게 오히려 비밀입니다 :'hyperspace 샘플 삭제 중'이라는 OProfile 경고는 무엇을 의미합니까?

modprobe oprofile timer=1 
opcontrol --no-vmlinux 
opcontrol --start 
(wait for profiling data to accumulate) 
opcontrol --stop 
opreport --session-dir=/var/lib/oprofile --exclude-dependent --demangle=smart \ 
--symbols /home/myuser/mybinary --callgraph 

마지막 명령의 전체 출력은 다음과 같습니다 :

Overflow stats not available 
CPU: CPU with timer interrupt, speed 0 MHz (estimated) 
Profiling through timer interrupt 
warning: dropping hyperspace sample at offset 84d0 >= 79a0 for binary /home/myuser/mybinary 
warning: dropping hyperspace sample at offset 7ac0 >= 79a0 for binary /home/myuser/mybinary 
warning: dropping hyperspace sample at offset 7d90 >= 79a0 for binary /home/myuser/mybinary 
warning: dropping hyperspace sample at offset 7ac0 >= 79a0 for binary /home/myuser/mybinary 
warning: dropping hyperspace sample at offset 7d90 >= 79a0 for binary /home/myuser/mybinary 
warning: dropping hyperspace sample at offset 8210 >= 79a0 for binary /home/myuser/mybinary 
samples %  symbol name 
------------------------------------------------------------------------------- 
내가 이런 젠 가상화 된 환경에서 OProfile에 사용하고

warning: dropping hyperspace sample at offset 1af9 >= 2be8 for binary /home/myuser/mybinary 

그 다음 그럴듯한보고 콜 그래프 데이터를 출력합니다.

'초 공간'경고는 무엇을 의미합니까? 그 원인은 무엇입니까? 프로파일 링 결과에 영향을 줍니까? 어떻게 해결할 수 있습니까?

답변

5

메이 나드 존슨은 a message to a mailinglist이 경고를 설명 :

샘플 속도가 매우 경우 OProfile은 커널 드라이버에 의해 기록 된 샘플 특히, 잘못된 바이너리에 기인 한 것으로 나타났습니다보고 된 사례가 있었다

(callgraph 프로파일 링 이후, 높은 샘플 속도와 마찬가지로) 은 oprofile 커널 드라이버의 오버 헤드가 매우 높고 의 내부 샘플 버퍼 오버 플로우가 발생합니다. 나는 그게 너 에 달렸다고 생각한다. 불행히도 이것은 매우 교활한 버그이며 아무도 근본 원인을 아직 찾을 수 없었습니다. 커널 드라이버 은 내부 버퍼의 오버 플로우 카운트를보고하고, oprofiled 로그는이를 인쇄합니다. 편의상 oprofile 0.9.5로 시작하여 opreport는 0이 아닌 오버 플로우 이 발견되면 경고를 출력하고 샘플링 간격을 낮추라고 제안합니다.

나는 당신의 /var/lib/oprofile/samples/oprofiled.log에보고 제안하고 위의 프로필 실행에 대한 오버 플로우 통계 (로그 항목 타임 스탬프가 있습니다)를 찾을 수 있습니다. 비율 (예 : 3 % 미만) 만 표시되거나 조금만 나타나는 경우 예외를 무시할 수 있습니다. 일반적으로 이런 종류의 것을 피하거나 제한하기 위해 가장 낮은 샘플링 속도에서 프로파일을 실용화시켜야합니다. 특히 호출 차트 프로파일 링을 수행 할 때 일 때 더욱 그렇습니다. 그렇다면 "실용적인"의미는 무엇입니까? 어떤 샘플 기반 프로파일 러와 마찬가지로 처럼 oprofile은 본질적으로 통계적입니다. 데이터가 많을수록 데이터에 대한 신뢰도가 높아집니다. 따라서 100 % 신뢰도를 얻으려면 (이론적으로) 의 계수 값을 '1'로 설정해야합니다. 하지만 너무 실용적이지 않은데, 샘플은 샘플을 기록하기 때문에 잠겨있는 것처럼 보일 수 있습니다. 사이클 이벤트 프로파일 링의 경우, 아마도 오늘의 프로세서에서 수 백분의 값을 사용할 수 있으며 여전히 da ta에 대한 자신감이 꽤 있습니다. 다른 이벤트의 경우 실제로는 발생 빈도에 따라 에 의존합니다.

관련 문제