2017-11-06 14 views
0

perf을 사용하여 프로파일 링하는 응용 프로그램이 있는데 perf report을 사용할 때 결과가 일관되지 않아 패턴을 식별 할 수 없습니다.linux perf report 일관성없는 동작

나는 응용 프로그램을 시작하고 60 초 동안 PID하여 프로필 :

perf record -p <pid> -o <file> sleep 60

내가 perf report -i <file>와의 결과를 끌어 때, 가끔 내가 할 수있는 "+"에서 가장 왼쪽 열을 참조 필자가 ENTER를 누를 때 함수 호출 트리를 드릴 다운하고 때로는 "+"가 없습니다. 그것은 기록 된 파일의 일부 속성에 의존하는 것 같습니다. 기록 된 파일의 모음이 있는데, 일부는이 드릴 다운을 허용하고 일부는 허용하지 않습니다.

여기에 일관된 동작을 얻는 방법에 대한 제안 사항을 보내 주시면 감사하겠습니다.

+0

어떻게 일관성이 없습니까? – njuffa

+0

콜 트리로 드릴 다운하기위한 가장 왼쪽 열의 "+"가 항상 존재하는 것은 아닙니다. 나는 그것이되고 싶다. –

+0

60 초 이상 실행하십시오. 5 분. – njuffa

답변

0

perf 레코드로 측정되는 기본 이벤트는 cpu-cycles입니다. (컴퓨터에 따라 경우에 따라 cpu-cycles : p 또는 cpu-cycles : pp)

응용 프로그램이 많이 잠자지 않았습니까? 그것은 많은 CPU 사이클을 소비합니까?

$ apt-get install stress 
$ perf record -e cpu-cycles --call-graph fp stress --cpu 1 --timeout 5 
$ perf report 

후속 실행 후 다소 비슷한 결과를 보여 주어야한다 :

은 계산을 많이 수행하여 CPU를 강조 뭔가에 반환 한 측정을 시도합니다.

프로그램이 CPU를 많이 사용하고 호출 스택이 실행 사이에 많이 다른 경우 perf가 다른 방법으로 호출 그래프를 기록 할 수 있으므로 --call-graph 옵션을 살펴볼 수 있습니다.

  • FP

  • 난쟁이 (함수 포인터)
  • LBR (마지막 지점 레코드) 아마 다른 방법은 더 나은 결과를 제공합니다.