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


ftrace 유틸리티는 RHEL for Real Time 커널과 함께 제공되는 진단 기능 중 하나입니다. 개발자가 ftrace 를 사용하여 사용자 공간 외부에서 발생하는 대기 시간 및 성능 문제를 분석하고 디버깅할 수 있습니다. ftrace 유틸리티에는 다양한 방법으로 유틸리티를 사용할 수 있는 다양한 옵션이 있습니다. 컨텍스트 전환을 추적하거나 우선순위가 높은 작업이 발생하는 데 걸리는 시간을 측정하거나, 인터럽트 길이를 비활성화하거나, 지정된 기간 동안 실행되는 모든 커널 함수를 나열하는 데 사용할 수 있습니다.

함수 추적기와 같은 일부 ftrace 추적기에서는 과도하게 많은 양의 데이터를 생성할 수 있으므로 추적 로그 분석을 시간 소모적인 작업으로 전환할 수 있습니다. 그러나 애플리케이션이 중요한 코드 경로에 도달하면 추적자를 시작하고 종료하도록 지시할 수 있습니다.

사전 요구 사항

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

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

ftrace 유틸리티를 사용하여 대기 시간을 추적할 수 있습니다.

프로세스

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

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

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

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

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

    # cd /sys/kernel/debug/tracing
    Copy to Clipboard

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

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

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

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

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

  4. function-trace 옵션은 wakeup_rt,preemptirqsoff 와의 대기 시간을 추적하므로 자동으로 함수 추적을 활성화하여 오버헤드를 과장할 수 있기 때문에 유용합니다.

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

    # cat /sys/kernel/debug/tracing/options/function-trace
    1
    Copy to Clipboard
    • 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
    Copy to Clipboard
    중요

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

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

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

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

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

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

      # echo 200 > /sys/kernel/debug/tracing/tracing_max_latency
      Copy to Clipboard

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

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

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

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

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

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

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

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat