20장. perf 수집기를 사용하여 추적 지점 관리
컨트롤 파이프 인터페이스를 사용하여 실행 중인 perf 수집기에서 다양한 추적 지점을 활성화하고 비활성화하면 perf 를 중지하거나 재시작하지 않고도 수집하는 데이터를 동적으로 조정할 수 있습니다. 이렇게 하면 중지 또는 재시작 프로세스 중에 기록된 성능 데이터가 손실되지 않습니다.
20.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옵션은 스케줄러 이벤트로perf 레코드를시작한 후'sched:*'로 선언합니다.두 번째 터미널에서 제어 파이프의 읽기 측면을 시작합니다.
# cat perf.pipe | perf --no-pager script -i -제어 파이프의 읽기 측면을 시작하면 첫 번째 터미널에서 다음 메시지가 트리거됩니다.
Events disabled세 번째 터미널에서 제어 파일을 사용하여 추적 지점을 활성화합니다.
# echo 'enable sched:sched_process_fork' > control이 명령은
perf를 트리거하여 선언된 이벤트에 대한 제어 파일의 현재 이벤트 목록을 스캔합니다. 이벤트가 있으면 tracepoint가 활성화되고 첫 번째 터미널에 다음 메시지가 표시됩니다.event sched:sched_process_fork enabledtracepoint가 활성화되면 두 번째 터미널은 추적 지점을 감지하는 perf의 출력을 표시합니다.
bash 33349 [034] 149587.674295: sched:sched_process_fork: comm=bash pid=33349 child_comm=bash child_pid=34056