30장. ftrace를 사용하여 대기 시간 추적


ftrace 유틸리티는 개발자가 대기 시간 및 성능 문제를 분석하고 디버깅하는 데 도움이 되는 RHEL for Real Time 커널과 함께 제공되는 진단 기능입니다.

ftrace 는 컨텍스트 스위치를 추적하거나 우선순위가 높은 작업이 잠기는 데 걸리는 시간을 측정하거나, 인터럽트 길이를 추적하거나, 지정된 기간 동안 실행되는 모든 커널 함수를 나열할 수 있습니다. 함수 추적기와 같은 일부 추적기에서는 대량의 데이터를 생성할 수 있습니다. 그러나 애플리케이션이 중요한 코드 경로에 도달하면 추적자를 시작하고 종료하도록 지시할 수 있습니다.

30.1. ftrace 유틸리티를 사용하여 대기 시간 추적

ftrace 유틸리티를 사용하여 시스템의 성능 병목 상태를 파악하여 대기 시간을 추적할 수 있습니다.

사전 요구 사항

  • 관리자 권한이 있습니다.

프로세스

  1. 시스템에서 사용 가능한 추적기를 확인합니다.

    # cat /sys/kernel/debug/tracing/available_tracers
    function_graph wakeup_rt wakeup preemptirqsoff preemptoff irqsoff function nop

    ftrace 의 사용자 인터페이스는 debugfs 내의 일련의 파일입니다.

    ftrace 파일은 /sys/kernel/debug/tracing/ 디렉터리에도 있습니다.

  2. /sys/kernel/debug/tracing/ 디렉터리로 이동합니다.

    # cd /sys/kernel/debug/tracing

    추적을 활성화하면 시스템 성능에 영향을 줄 수 있으므로 이 디렉터리의 파일은 root 사용자만 수정할 수 있습니다.

  3. 추적 세션을 시작하려면 다음을 수행합니다.

    1. /sys/kernel/debug/tracing/available_tracers 의 사용 가능한 추적기 목록에서 사용할 추적기를 선택합니다.
    2. 선택기 이름을 /sys/kernel/debug/tracing/current_tracer 에 삽입합니다.

      # echo preemptoff > /sys/kernel/debug/tracing/current_tracer
      참고

      echo 명령과 함께 단일 '>'를 사용하면 파일의 기존 값을 덮어씁니다. 파일에 값을 추가하려면 대신 '>>'를 사용합니다.

  4. function-trace 옵션은 wakeup_rt,preemptirqsoff 등의 대기 시간을 추적하여 자동으로 함수 추적을 활성화하여 대기 시간 측정을 늘릴 수 있기 때문에 유용합니다.

    functionfunction_graph 추적이 활성화되어 있는지 확인합니다.

    # cat /sys/kernel/debug/tracing/options/function-trace
    1
    • 1functionfunction_graph 추적이 활성화되었음을 나타냅니다.
    • 값이 0 이면 functionfunction_graph 추적이 비활성화됩니다.
  5. 기본적으로 functionfunction_graph 추적이 활성화됩니다. functionfunction_graph 추적을 켜거나 해제하려면 적절한 값을 /sys/kernel/debug/tracing/options/function-trace 파일에 에코합니다.

    # echo 0 > /sys/kernel/debug/tracing/options/function-trace
    # echo 1 > /sys/kernel/debug/tracing/options/function-trace
    중요

    echo 명령을 사용할 때 값과 > 문자 사이에 공백 문자를 배치해야 합니다. 쉘 프롬프트에서 0 >, 1 > , 1> 및 2 >를 사용하는 것은 표준 입력, 표준 출력 및 표준 오류를 나타냅니다. 실수로 사용하면 예기치 않은 추적 출력이 발생할 수 있습니다.

  6. /debugfs/tracing/ 디렉터리에 있는 다양한 파일의 값을 변경하여 추적기의 세부 정보 및 매개 변수를 조정합니다.

    예를 들면 다음과 같습니다.

    irqsoff,preemptoff,preemptirqsoffwakeup 추적기에서는 대기 시간을 지속적으로 모니터링합니다. tracing_max_latency 에 기록된 대기 시간보다 큰 대기 시간을 기록하면 해당 대기 시간이 기록되고 tracing_max_latency 가 새 최대 시간으로 업데이트됩니다. 이러한 방식으로 tracing_max_latency 는 항상 마지막으로 재설정되었기 때문에 기록된 가장 높은 대기 시간을 표시합니다.

    • 최대 대기 시간을 재설정하려면 tracing_max_latency 파일에 0 을 에코합니다.

      # echo 0 > /sys/kernel/debug/tracing/tracing_max_latency
    • 설정된 양보다 큰 대기 시간만 보려면 마이크로초 단위로 값을 에코합니다.

      # echo 200 > /sys/kernel/debug/tracing/tracing_max_latency

      추적 임계값이 설정되면 최대 대기 시간 설정을 덮어씁니다. 대기 시간이 임계값보다 크면 최대 대기 시간에 관계없이 기록됩니다. 추적 파일을 검토할 때 마지막으로 기록된 대기 시간만 표시됩니다.

    • 임계값을 설정하려면 기록해야 하는 microseconds 수를 에코합니다.

      # echo 200 > /sys/kernel/debug/tracing/tracing_thresh
  7. 추적 로그를 확인합니다.

    # cat /sys/kernel/debug/tracing/trace
  8. 추적 로그를 저장하려면 다른 파일에 복사합니다.

    # cat /sys/kernel/debug/tracing/trace > /tmp/lat_trace_log
  9. 추적 중인 함수 보기:

    # cat /sys/kernel/debug/tracing/set_ftrace_filter
  10. /sys/kernel/debug/tracing/set_ftrace_filter 의 설정을 편집하여 추적되는 함수를 필터링합니다. 파일에 필터를 지정하지 않으면 모든 기능이 추적됩니다. 필터 설정을 변경하려면 추적할 함수의 이름을 에코합니다. 이 필터는 검색어의 시작 또는 끝에서 '*' 와일드카드 사용을 지원합니다.

    예를 들어 ftrace 예제 를 참조하십시오.

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동