29장. perf를 중지하거나 다시 시작하지 않고 실행 중인 perf 수집기에서 추적 지점 추가 및 제거
제어 파이프 인터페이스를 사용하여 실행 중인 perf 수집기에서 다양한 추적 포인트를 활성화하고 비활성화하면 perf
를 중지하거나 다시 시작하지 않고도 수집할 데이터를 동적으로 조정할 수 있습니다 .
이렇게 하면 프로세스를 중지하거나 다시 시작하는 동안 기록된 성능 데이터가 손실되지 않습니다.
29.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
옵션 다음에'ched:*'
선언은 스케줄러 이벤트와 함께perf 레코드
를 시작합니다.두 번째 터미널에서 제어 파이프의 읽기 측면을 시작합니다.
# cat perf.pipe | perf --no-pager script -i -
제어 파이프의 읽기 측면을 시작하면 첫 번째 터미널에서 다음 메시지가 트리거됩니다.
Events disabled
세 번째 터미널에서 제어 파일을 사용하여 추적 지점을 활성화합니다.
# echo 'enable sched:sched_process_fork' > control
이 명령은
perf
를 트리거하여 선언된 이벤트에 대해 제어 파일의 현재 이벤트 목록을 스캔합니다. 이벤트가 있는 경우 추적 지점이 활성화되고 첫 번째 터미널에 다음 메시지가 표시됩니다.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