27장. perf를 중지하거나 다시 시작하지 않고 실행 중인 perf 수집기에서 추적 지점 추가 및 제거
제어 파이프 인터페이스를 사용하여 실행 중인 perf
수집기에서 다른 추적 포인트를 활성화 및 비활성화함으로써 perf
를 중지하거나 재시작하지 않고도 수집하는 데이터를 동적으로 조정할 수 있습니다. 이렇게 하면 중지 또는 다시 시작 프로세스 중에 기록 된 성능 데이터가 손실되지 않습니다.
27.1. perf를 중지하거나 다시 시작하지 않고 실행 중인 perf 수집기에 추적 지점 추가
제어 파이프 인터페이스를 사용하여 실행 중인 perf
수집기에 추적 포인트를 추가하여 perf
를 중지하고 성능 데이터를 손실하지 않고도 기록 중인 데이터를 조정합니다.
사전 요구 사항
-
perf 설치에 설명된 대로
perf
사용자 공간 도구가 설치되어 있습니다.
절차
제어 파이프 인터페이스를 구성합니다.
# mkfifo control ack perf.pipe
관심 있는 컨트롤 파일 설정 및 이벤트를 사용하여
perf 레코드
를 실행합니다.# perf record --control=fifo:control,ack -D -1 --no-buffering -e 'sched:*' -o - > perf.pipe
이 예제에서
-e
옵션 뒤에'sched:*'
를 선언하면 스케줄러 이벤트가 포함된f레코드
가 시작됩니다.두 번째 터미널에서 제어 파이프의 읽기 측면을 시작합니다.
# cat perf.pipe | perf --no-pager script -i -
제어 파이프의 읽기 측면을 시작하면 첫 번째 터미널에서 다음 메시지가 트리거됩니다.
Events disabled
세 번째 터미널에서 제어 파일을 사용하여 추적 지점을 활성화합니다.
# echo 'enable sched:sched_process_fork' > control
이 명령은
perf
를 트리거하여 선언된 이벤트에 대해 제어 파일의 현재 이벤트 목록을 스캔합니다. 이벤트가 있으면 tracepoint가 활성화되어 첫 번째 터미널에 다음 메시지가 표시됩니다.event sched:sched_process_fork enabled
추적 지점이 활성화되면 두 번째 터미널은 추적 지점을 감지하는
perf
의 출력을 표시합니다.bash 33349 [034] 149587.674295: sched:sched_process_fork: comm=bash pid=33349 child_comm=bash child_pid=34056