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