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주기가 아닌 경우에만 수집을 시작/중지 할 수있는 것처럼 보입니다.
감사합니다. 나의 perf (v 4.4.87)는 제로 "Tracepoint"이벤트를 나열합니다. 하드웨어, 소프트웨어, 하드웨어 캐시, 커널 PMU, 원시 하드웨어, 하드웨어 중단 점 카테고리 만 나열되어 있습니다. 또한 나를 위해 나열된 kmem도 없습니다. 원본 Q에 목록을 추가하겠습니다. – Bram
perf를 root로 실행하면 추적 점 이벤트가 나열됩니다. 여전히 CPU주기를 추적하는 경우 데이터 수집의 시작/중지를 제어 할 수 없다는 것이 이상합니다. – Bram
예, 불행히도 추적 이벤트 만 데이터 수집의 시작과 중지를 처리하는 것처럼 보입니다 (주소 필터 등을 통해). –