27장. perf를 중지하거나 다시 시작하지 않고 실행 중인 perf 수집기에서 추적 지점 추가 및 제거

제어 파이프 인터페이스를 사용하여 실행 중인 perf 수집기에서 다른 추적 포인트를 활성화 및 비활성화함으로써 perf 를 중지하거나 재시작하지 않고도 수집하는 데이터를 동적으로 조정할 수 있습니다. 이렇게 하면 중지 또는 다시 시작 프로세스 중에 기록 된 성능 데이터가 손실되지 않습니다.

27.1. perf를 중지하거나 다시 시작하지 않고 실행 중인 perf 수집기에 추적 지점 추가

제어 파이프 인터페이스를 사용하여 실행 중인 perf 수집기에 추적 포인트를 추가하여 perf 를 중지하고 성능 데이터를 손실하지 않고도 기록 중인 데이터를 조정합니다.

사전 요구 사항

  • perf 설치에 설명된 대로 perf 사용자 공간 도구가 설치되어 있습니다.

절차

  1. 제어 파이프 인터페이스를 구성합니다.

    # mkfifo control ack perf.pipe
  2. 관심 있는 컨트롤 파일 설정 및 이벤트를 사용하여 perf 레코드 를 실행합니다.

    # perf record --control=fifo:control,ack -D -1 --no-buffering -e 'sched:*' -o - > perf.pipe

    이 예제에서 -e 옵션 뒤에 'sched:*' 를 선언하면 스케줄러 이벤트가 포함된f 레코드 가 시작됩니다.

  3. 두 번째 터미널에서 제어 파이프의 읽기 측면을 시작합니다.

    # cat perf.pipe | perf --no-pager script -i -

    제어 파이프의 읽기 측면을 시작하면 첫 번째 터미널에서 다음 메시지가 트리거됩니다.

    Events disabled
  4. 세 번째 터미널에서 제어 파일을 사용하여 추적 지점을 활성화합니다.

    # 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