2016-10-31 9 views
1

나는 프로그램을 호출하는 모든 기능을 인쇄하기 위해 stap을 사용하려고합니다. 나는 몇 가지 조사를 온라인했고, (para-callgraph.stp이라고 함)이 스크립트 발견 것입니다시스템 탭을 사용할 때 "프로브 오버 헤드가 임계 값을 초과했습니다"오류를 피하는 방법은 무엇입니까?

#! /usr/bin/env stap 

function trace(entry_p, extra) { 
    printf("%s%s%s %s\n", 
     thread_indent (entry_p), 
     (entry_p>0?"->":"<-"), 
     ppfunc(), 
     extra) 
} 

probe $1.call { trace(1, $$parms) } 
probe $1.return { trace(-1, $$return) } 

은 다음과 같이 실행하기 :이 프로그램을 실행할 때

sudo stap para-callgraph.stp 'process.function("*")' -c `pwd`/my-program 

지금, 내가 문제로 실행합니다. 모든 것이 처음에는 잘 작동하지만 곧 systemtap 표준 오류에 인쇄이, 및 종료는 :

ERROR: probe overhead exceeded threshold 
WARNING: Number of errors: 1, skipped probes: 0 
WARNING: There were 62469 transport failures. 
WARNING: /usr/bin/staprun exited with status: 1 
Pass 5: run failed. [man error::pass5] 
Tip: /usr/share/doc/systemtap/README.Debian should help you get started. 

stap 휴리스틱가 트리거되고 있음을 나에게 보여 몇 가지 조사 online을하는 날을 차단하고, 나는 그것을 끌 수 -g--suppress-time-limits 두 개의 플래그를 추가하십시오. (이 제안은 내 시스템에 man stap에 의해 백업됩니다.) 그러나, 그 해결책은 간단하게 작동하지 않고 명령 :

ERROR: probe overhead exceeded threshold 
WARNING: Number of errors: 1, skipped probes: 0 
WARNING: There were 67287 transport failures. 
WARNING: /usr/bin/staprun exited with status: 1 
Pass 5: run failed. [man error::pass5] 
Tip: /usr/share/doc/systemtap/README.Debian should help you get started. 

이유 :

sudo stap -g --suppress-time-limits para-callgraph.stp 'process.function("*")' -c `pwd`/core-cpu1 

가 매우 유사한 오류 메시지를 출력하고 종료 이 플래그가 내 문제의 적절한 해결책이 아닌가? 그리고이 문제는 다른 방법으로 해결 될 수 있습니까, 아니면 단순히 이런 종류의 유스 케이스에 맞지 않는 systemtap입니까?

중요하다면 32 비트 Ubuntu VM에서 실행하고 있습니다.

N.B. 여기서 systemtap이 왜 실패하는지에 관심이 있으며, 다른 소프트웨어를 사용하여 같은 것을 달성하는 다른 방법이 아닙니다. (사실, 내 사용 사례에 대해 밝혀, 위의 코드 에서 SystemTap의 남용이었다.) 당신은 소비자가 취할 수있는 것보다 더 빠른 프로브 인쇄됩니다, 그래서 만약 프로브와 소비자 사이의

+0

--suppress - 시간 제한 과부하 방지 장치를 해제에서 근무해야한다. 메일 링리스트 (systemtap 버전 및 core-cpu1 프로그램의 성격에 대한 아이디어 포함)에 더 자세한 버그 보고서를 전달 하시겠습니까? – fche

답변

0

전송 버퍼도 제한된다 SystemTap에 NN 전송 오류가 발생했거나 DTrace에서 CPU X 오류가 발생하여 DTrace가 떨어졌습니다. 덜 장황 자주 (DTrace와의 cleanrate 동조에 의해 조절) 버퍼로부터 데이터를 가지고 또는 버퍼 크기 (-b 옵션을 증가 DTrace와의 동조를 BUFSIZE 및 s 옵션 :

그 문제에 대한 대답은 간단한 인 SystemTap에서).

은 참조 : http://myaut.github.io/dtrace-stap-book/dtrace-stap-book-ns.pdf