24장. ftrace를 사용하여 대기 시간 추적
ftrace 유틸리티는 RHEL for Real Time 커널과 함께 제공되는 진단 기능 중 하나입니다. ftrace 는 개발자가 사용자 공간 외부에서 발생하는 대기 시간 및 성능 문제를 분석하고 디버깅하는 데 사용할 수 있습니다. ftrace 유틸리티에는 다양한 방법으로 유틸리티를 사용할 수 있는 다양한 옵션이 있습니다. 컨텍스트 스위치를 추적하거나, 우선 순위가 높은 작업이 발생하는 시간, 인터럽트 길이가 비활성화되거나 지정된 기간 동안 실행되는 모든 커널 함수를 나열하는 데 사용할 수 있습니다.
함수 추적기와 같은 ftrace 추적기 중 일부는 과도하게 많은 양의 데이터를 생성할 수 있으므로 추적 로그 분석을 시간이 많이 소요되는 작업으로 변환할 수 있습니다. 그러나 애플리케이션이 중요한 코드 경로에 도달할 때만 추적기를 시작하고 종료하도록 지시할 수 있습니다.
사전 요구 사항
- 관리자 권한이 있어야 합니다.
24.1. ftrace 유틸리티를 사용하여 대기 시간 추적 링크 복사링크가 클립보드에 복사되었습니다!
ftrace 유틸리티를 사용하여 대기 시간을 추적할 수 있습니다.
절차
시스템에서 사용 가능한 추적기를 확인합니다.
cat /sys/kernel/debug/tracing/available_tracers function_graph wakeup_rt wakeup preemptirqsoff preemptoff irqsoff function nop
# cat /sys/kernel/debug/tracing/available_tracers function_graph wakeup_rt wakeup preemptirqsoff preemptoff irqsoff function nopCopy to Clipboard Copied! Toggle word wrap Toggle overflow ftrace의 사용자 인터페이스는debugfs내의 일련의 파일입니다.ftrace파일은/sys/kernel/debug/tracing/디렉터리에도 있습니다./sys/kernel/debug/tracing/디렉터리로 이동합니다.cd /sys/kernel/debug/tracing
# cd /sys/kernel/debug/tracingCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이 디렉터리의 파일은 root 사용자만 수정할 수 있습니다. 추적을 사용하면 시스템 성능에 영향을 미칠 수 있습니다.
추적 세션을 시작하려면 다음을 수행합니다.
-
/sys/kernel/debug/tracing/available_tracer의 사용 가능한 추적기 목록에서 사용할 추적기를 선택합니다. 선택기 이름을
/sys/kernel/debug/tracing/current_tracer에 삽입합니다.echo preemptoff > /sys/kernel/debug/tracing/current_tracer
# echo preemptoff > /sys/kernel/debug/tracing/current_tracerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 참고echo 명령과 함께 단일 '>'를 사용하면 파일의 기존 값을 덮어씁니다. 파일에 값을 추가하려면 대신 '>>'을 사용합니다.
-
function-trace 옵션은
wakeup_rt,preemptirqsoff로 대기 시간을 추적하기 때문에 유용합니다. preemptirqsoff는 오버헤드를 초과할 수 있는함수 추적을자동으로 활성화합니다.function및function_graphtracing이 활성화되어 있는지 확인합니다.cat /sys/kernel/debug/tracing/options/function-trace 1
# cat /sys/kernel/debug/tracing/options/function-trace 1Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
값이
1이면 함수 및활성화되었음을 나타냅니다.function_graph 추적이 -
값이
0이면함수및function_graph추적이 비활성화됩니다.
-
값이
기본적으로 함수 및
추적은 활성화되어 있습니다.function_graphtracing을 설정하거나 끄려면 적절한 값을function_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 > /sys/kernel/debug/tracing/options/function-trace # echo 1 > /sys/kernel/debug/tracing/options/function-traceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 중요echo명령을 사용하는 경우 값과 > 문자 사이에 공백 문자를 배치해야 합니다.쉘 프롬프트에서0>,1> , 1> 및2>를 사용하여 표준 입력, 표준 출력 및 표준 오류를 나타냅니다. 실수로 사용하면 예기치 않은 추적 출력이 발생할 수 있습니다./debugfs/tracing/디렉터리에 있는 다양한 파일의 값을 변경하여 추적자의 세부 정보 및 매개 변수를 조정합니다.예를 들면 다음과 같습니다.
irqsoff, Preempirqsoff,preempirqsoff및wakeup추적기는 지속적으로 대기 시간을 모니터링합니다.tracing_max_latency에 기록된 것보다 더 큰 대기 시간을 기록하는 경우 해당 대기 시간의 추적이 기록되고tracing_max_latency가 새 최대 시간으로 업데이트됩니다. 이러한 방식으로tracing_max_latency는 마지막 재설정 이후 항상 가장 높은 대기 시간을 표시합니다.최대 대기 시간을 재설정하려면
0을tracing_max_latency파일로 에코합니다.echo 0 > /sys/kernel/debug/tracing/tracing_max_latency
# echo 0 > /sys/kernel/debug/tracing/tracing_max_latencyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 설정된 양보다 대기 시간만 표시하려면 마이크로초 단위로 양을 에코합니다.
echo 200 > /sys/kernel/debug/tracing/tracing_max_latency
# echo 200 > /sys/kernel/debug/tracing/tracing_max_latencyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 추적 임계값이 설정되면 최대 대기 시간 설정을 덮어씁니다. 임계값보다 큰 대기 시간이 기록되면 최대 대기 시간에 관계없이 기록됩니다. 추적 파일을 검토할 때 마지막으로 기록된 대기 시간만 표시됩니다.
임계값을 설정하려면 대기 시간을 기록해야 하는 마이크로초 수를 에코합니다.
echo 200 > /sys/kernel/debug/tracing/tracing_thresh
# echo 200 > /sys/kernel/debug/tracing/tracing_threshCopy to Clipboard Copied! Toggle word wrap Toggle overflow
추적 로그를 확인합니다.
cat /sys/kernel/debug/tracing/trace
# cat /sys/kernel/debug/tracing/traceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 추적 로그를 저장하려면 다른 파일에 복사합니다.
cat /sys/kernel/debug/tracing/trace > /tmp/lat_trace_log
# cat /sys/kernel/debug/tracing/trace > /tmp/lat_trace_logCopy to Clipboard Copied! Toggle word wrap Toggle overflow 추적 중인 함수를 확인합니다.
cat /sys/kernel/debug/tracing/set_ftrace_filter
# cat /sys/kernel/debug/tracing/set_ftrace_filterCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
/sys/kernel/debug/tracing/set_ftrace_filter의 설정을 편집하여 추적되는 함수를 필터링합니다. 파일에 필터가 지정되지 않은 경우 모든 함수가 추적됩니다. 필터 설정을 변경하려면 추적할 함수의 이름을 에코합니다. 필터를 사용하면 검색어 시작 또는 끝에서 '*' 와일드카드를 사용할 수 있습니다.
예를 들면 ftrace 예제 를 참조하십시오.