28.2. perf 원형 버퍼를 사용하여 성능 병목 현상 모니터링을 위한 특정 데이터 수집
perf
툴을 사용하면 관심 있는 데이터만 수집하기 위해 지정한 이벤트에서 트리거하는 원형 버퍼를 생성할 수 있습니다. 이벤트별 데이터를 수집하는 원형 버퍼를 생성하려면 perf
에 --overwrite
및 --switch-output-event
옵션을 사용합니다.
사전 요구 사항
-
perf 설치에 설명된 대로
perf
사용자 공간 도구가 설치되어 있습니다. 프로세스 또는 애플리케이션 내의 관심 위치에서 모니터링하는 데 관심이 있는 프로세스 또는 애플리케이션에 uprobe를 배치했습니다.
# perf probe -x /path/to/executable -a function Added new event: probe_executable:function (on function in /path/to/executable) You can now use it in all perf tools, such as: perf record -e probe_executable:function -aR sleep 1
절차
uprobe를 트리거 이벤트로 사용하여 원형 버퍼를 생성합니다.
# perf record --overwrite -e cycles --switch-output-event probe_executable:function ./executable [ perf record: dump data: Woken up 1 times ] [ perf record: Dump perf.data.2021021012231959 ] [ perf record: dump data: Woken up 1 times ] [ perf record: Dump perf.data.2021021012232008 ] ^C[ perf record: dump data: Woken up 1 times ] [ perf record: Dump perf.data.2021021012232082 ] [ perf record: Captured and wrote 5.621 MB perf.data.<timestamp> ]
이 예제에서는 실행 파일을 시작하고
perf
가--switch-output-event
옵션 다음에 지정된 트리거 이벤트인 uprobe를 감지할 때까지-e
옵션 다음에 지정된 cpu 사이클을 수집합니다. 이 시점에서perf
는 원형 버퍼에 있는 모든 데이터의 스냅샷을 가져와 타임스탬프로 식별된 고유한perf.data
파일에 저장합니다. 이 예제에서는 모두 2개의 스냅샷을 생성했으며 마지막perf.data
파일은 Ctrl+c를 눌러 강제 적용되었습니다.