2017-10-25 2 views
1

perf를 사용하여 프로그램 성능을 샘플링하고 있습니다.perf 샘플링을 시작하고 중지하는 방법

$ perf record -g ./bench 
... 
[ perf record: Woken up 1 times to write data ] 
[ perf record: Captured and wrote 0.023 MB perf.data (93 samples) ] 
$ ls -al perf.data 
-rw------- 1 bram bram 26848 Oct 25 10:22 perf.data 

을하지만 지금은 시작하고 내 프로그램의 특정 지점에서 수집을 중지하려면 :

이 나를 위해 작동합니다. 그러나 내가하는 경우 :

필터 플래그가 -e 옵션을 따르므로 내가 혼란 스럽습니다. 무슨 일 이니?

나는 perf.data의 작은 크기에 당황 스럽지만 실제로 93 개 샘플 만 수집합니까? 몇 초 동안 뛰었습니다.

마지막으로 '-e cycles'가 기본 이벤트라고 가정합니다.

업데이트 : Arnabjyoti Kalita가 설명했듯이 특별한 범주의 이벤트가 Tracepoints를 호출합니다. 내가 root로서 perf를 실행하면, 그들은 'perf list'에 나에게만 나타난다.

너무 나쁜 perf는 해당 이벤트 유형을 추적하고 기본 CPU주기가 아닌 경우에만 수집을 시작/중지 할 수있는 것처럼 보입니다.

답변

2

필터 옵션에 대해서는 perf record 매뉴얼 페이지를 읽기 시작하는 것이 좋습니다.

- - 필터

이벤트 필터 : 나는 그 사람 페이지의 도움으로 perf record --filter 옵션을 간 후 나는이를 찾을 수 있습니다. A 이벤트 선택 (-e) 트레이스 이벤트 (들) 또는 하드웨어 추적 PMU 중 하나를 선택 을 따라야합니다이 옵션 (예 : 인텔 PT 또는 코어 사이트) 이벤트가 추적 점 중 하나입니다 기본적으로 경우에만

이벤트 또는 하드웨어 추적 이벤트 (예 : IntelPT)는 필터 옵션이 작동합니다. 따라서 -e cycles으로 표시된 이벤트가 추적 점 이벤트인지 확인하십시오. 내 시스템에 perf list을 할 경우

, 나는 분명히 사이클은 "트레이스 이벤트"아닙니다 세부 정보 -

~/linux-4.11.3/tools/perf/perf list

cpu-cycles OR cycles [Hardware event]

List of pre-defined events (to be used in -e): 아래 얻을. 기본 하드웨어 이벤트입니다. 트레이스 이벤트의 예는 같을 수

kmem:kmalloc [Tracepoint event]

perf.data 수집 할 수있는 다양한 패킷 파라미터에 기초. 수집 된 샘플은 특정 주파수 /주기에서 수집되었습니다.

perf record -F 특정 주파수을 설정하여 패킷을 수집 할 수 있습니다. perf record과 함께 사용할 수있는 모든 옵션을 읽는 것이 좋습니다.따라서 수집 된 샘플의 수가 적 으면이 빈도에 기인 할 수 있습니다. 아마도 빈도를 높이고 개선이 있는지 확인할 수 있습니다. 또한 이벤트 기간을 설정할 수있는 옵션도 있습니다. 보통이 주파수를 올릴 수있는 한계가 있음을 유의하십시오. 그 이상으로 CPU조차도 인터럽트 및 모든 이유로 인해 스스로를 관리하는 데 문제가 발생하기 시작합니다. 당신은 사이클을 이벤트를 수집 기본적으로 의지를 규칙적, 어떤 이벤트를 지정하고 perf record을하지 않으면 -e cycles 즉를 기본 이벤트라고 말할 때

예 당신은 맞다.

+0

감사합니다. 나의 perf (v 4.4.87)는 제로 "Tracepoint"이벤트를 나열합니다. 하드웨어, 소프트웨어, 하드웨어 캐시, 커널 PMU, 원시 하드웨어, 하드웨어 중단 점 카테고리 만 나열되어 있습니다. 또한 나를 위해 나열된 kmem도 없습니다. 원본 Q에 목록을 추가하겠습니다. – Bram

+0

perf를 root로 실행하면 추적 점 이벤트가 나열됩니다. 여전히 CPU주기를 추적하는 경우 데이터 수집의 시작/중지를 제어 할 수 없다는 것이 이상합니다. – Bram

+0

예, 불행히도 추적 이벤트 만 데이터 수집의 시작과 중지를 처리하는 것처럼 보입니다 (주소 필터 등을 통해). –

관련 문제