Linux 에서 커널 ftrace 활성화 여부 확인 방법

LinuxBeginner
지금 연습하기

소개

이 랩에서는 Linux 커널의 강력한 추적 유틸리티인 ftrace가 시스템에서 활성화되어 접근 가능한지 확인하는 방법을 살펴봅니다. ftrace와 상호 작용하는 주요 인터페이스 역할을 하는 /sys/kernel/debug/tracing 디렉토리를 검토하는 것으로 시작합니다.

초기 확인 후, trace-cmd 도구를 사용하여 ftrace 기능을 추가로 확인하고 사용 가능한 추적 옵션을 나열합니다. 마지막으로, /proc/sys/kernel 파일 시스템 내의 관련 구성 매개변수를 검사하여 ftrace 설정에 대한 더 깊은 이해를 얻습니다.

ls /sys/kernel/debug/tracing으로 ftrace 상태 확인

이 단계에서는 Linux 커널에 내장된 강력한 추적 유틸리티인 ftrace를 살펴보기 시작합니다. ftrace를 통해 개발자와 시스템 관리자는 커널의 런타임 동작을 이해할 수 있습니다.

ftrace와 상호 작용하는 주요 인터페이스는 디버그 파일 시스템을 통해 이루어지며, 특히 /sys/kernel/debug/tracing에 위치합니다.

먼저, 디버그 파일 시스템이 마운트되었는지, 그리고 tracing 디렉토리가 존재하는지 확인해 보겠습니다. ls 명령을 사용하여 이 디렉토리의 내용을 나열할 수 있습니다.

터미널에 다음 명령을 입력하고 Enter 키를 누르십시오.

ls /sys/kernel/debug/tracing

ftrace와 관련된 파일 및 디렉토리 목록이 표시됩니다. 정확한 출력은 커널 버전 및 구성에 따라 다를 수 있지만, 다음과 유사한 형태일 것입니다.

README                       events                       options
available_events             free_buffer                  per_cpu
available_filter_functions   function_graph_max_depth     printk_formats
available_tracers            function_graph_tracer        set_event
buffer_size_kb               function_profile_dynamic     set_filter
buffer_total_size_kb         function_trace               set_ftrace_filter
current_tracer               instances                    set_ftrace_notrace
dynamic_filter               kprobe_events                set_graph_function
enabled                      kprobe_profile               set_graph_notrace
error_log                    max_graph_depth              set_tracer
event_sources                options                      snapshot
tracing_cpumask              tracing_max_latency          tracing_on
tracing_thresh               trace                        trace_clock
trace_marker                 trace_options                trace_pipe
trace_stat

이와 유사한 출력이 표시되면 시스템에서 ftrace 인터페이스를 사용할 수 있음을 의미합니다. "No such file or directory"와 같은 오류가 발생하면 디버그 파일 시스템이 마운트되지 않았거나 커널에서 ftrace가 활성화되지 않았을 수 있습니다. 그러나 LabEx 환경에서는 사용 가능해야 합니다.

이 디렉토리에는 ftrace 동작을 제어하고 추적 데이터를 제공하는 다양한 파일이 포함되어 있습니다. 이후 단계에서 이러한 파일 중 일부를 살펴보겠습니다.

지금은 이 디렉토리와 그 내용의 존재를 확인하는 것만으로도 ftrace와 상호 작용할 수 있음을 확인합니다.

다음 단계로 진행하려면 계속을 클릭하십시오.

trace-cmd list 로 ftrace 확인

이전 단계에서 디버그 파일 시스템에 ftrace 인터페이스가 있는지 확인했습니다. 이제 trace-cmd라는 명령줄 도구를 사용하여 ftrace와 상호 작용해 보겠습니다. trace-cmdftrace를 구성하고 데이터를 수집하는 과정을 단순화하는 사용자 공간 유틸리티입니다.

trace-cmd의 유용한 기능 중 하나는 사용 가능한 추적 이벤트와 트레이서를 나열하는 것입니다. 이를 통해 ftrace로 무엇을 모니터링할 수 있는지 이해할 수 있습니다.

trace-cmd list를 사용하여 사용 가능한 트레이서를 확인해 보겠습니다. 트레이서는 ftrace의 다양한 작동 모드로, 커널의 다양한 측면을 추적할 수 있습니다.

터미널에 다음 명령을 입력하고 Enter 키를 누르십시오.

trace-cmd list -t

-t 옵션은 trace-cmd에게 사용 가능한 트레이서를 나열하도록 지시합니다. 다음과 유사한 출력이 표시되어야 합니다.

List of available tracers:
 blk
 function
 function_graph
 irqsoff
 nop
 preemptirqsoff
 wakeup
 wakeup_rt

이 출력은 이 시스템에서 사용 가능한 다양한 트레이서를 보여줍니다. 예를 들어, function은 함수 호출을 추적하고, function_graph는 함수 호출과 해당 호출 그래프를 추적합니다.

다음으로, 추적할 수 있는 사용 가능한 이벤트를 나열해 보겠습니다. 이벤트는 추적 정보를 수집할 수 있는 커널의 특정 지점입니다.

다음 명령을 입력하고 Enter 키를 누르십시오.

trace-cmd list -e

-e 옵션은 trace-cmd에게 사용 가능한 이벤트를 나열하도록 지시합니다. 이 명령은 서브시스템 (예: sched, syscalls, ext4) 별로 분류된 긴 이벤트 목록을 생성합니다. 출력은 다음과 유사합니다 (일부만 표시됨).

List of available events:
  ftrace:
    ftrace_buffer_overrun
    ftrace_inject_event
    ftrace_print_event
  kmem:
    kmem_cache_alloc
    kmem_cache_alloc_node
    kmem_cache_free
    kmem_cache_free_page
    kmem_cache_free_pages
    kmem_cache_grow
    kmem_cache_shrink
    mm_page_alloc
    mm_page_alloc_zone_locked
    mm_page_free
    mm_page_free_batched
    mm_page_pcpu_drain
  ... (many more events)

출력을 스크롤하여 추적에 사용할 수 있는 방대한 수의 이벤트를 확인할 수 있습니다. 이는 ftrace가 커널 작업에 대해 제공하는 상세한 가시성을 보여줍니다.

trace-cmd list를 사용하는 것은 특정 시스템에서 ftrace가 무엇을 모니터링할 수 있는지 개략적으로 파악하는 좋은 방법입니다.

다음으로 이동하려면 계속을 클릭하십시오.

/proc/sys/kernel 에서 ftrace 설정 검토

/sys/kernel/debug/tracing의 디버그 파일 시스템 인터페이스 외에도, 일부 ftrace 관련 구성은 /proc/sys/kernel 디렉토리에서도 찾을 수 있습니다. /proc 파일 시스템은 프로세스 및 기타 시스템 정보에 대한 정보를 제공하는 가상 파일 시스템입니다. /proc/sys 디렉토리에는 런타임에 커널 매개변수를 보고 수정할 수 있는 파일이 포함되어 있습니다.

ftrace와 관련된 /proc/sys/kernel의 일부 파일을 검사해 보겠습니다. cat 명령을 사용하여 이러한 파일의 내용을 볼 수 있습니다.

먼저, ftrace_enabled 파일을 확인해 보겠습니다. 이 파일은 현재 커널에서 ftrace가 활성화되어 있는지 여부를 나타냅니다.

터미널에 다음 명령을 입력하고 Enter 키를 누르십시오.

cat /proc/sys/kernel/ftrace_enabled

다음과 같은 출력이 표시되어야 합니다.

1

1ftrace가 활성화되었음을 의미하고, 0은 비활성화되었음을 의미합니다.

다음으로, ftrace_dump_on_oops 파일을 살펴보겠습니다. 이 파일은 커널 oops (커널 오류) 가 발생했을 때 ftrace 버퍼를 콘솔에 덤프할지 여부를 제어합니다.

다음 명령을 입력하고 Enter 키를 누르십시오.

cat /proc/sys/kernel/ftrace_dump_on_oops

출력은 다음과 같을 것입니다.

1

1은 커널 oops 시 ftrace 버퍼가 덤프됨을 의미하며, 이는 디버깅에 도움이 될 수 있습니다.

마지막으로, ftrace_filter_notrace_regex 파일을 확인해 보겠습니다. 이 파일에는 함수 추적을 사용할 때 추적되지 않는 함수를 필터링하는 데 사용할 수 있는 정규 표현식이 포함되어 있습니다.

다음 명령을 입력하고 Enter 키를 누르십시오.

cat /proc/sys/kernel/ftrace_filter_notrace_regex

출력은 시스템 구성에 따라 비어 있거나 정규 표현식을 포함할 수 있습니다.


/proc/sys/kernel의 이러한 파일은 일부 전역 ftrace 설정에 대한 간략한 정보를 제공합니다. 대부분의 자세한 구성 및 데이터 액세스는 /sys/kernel/debug/tracing을 통해 이루어지지만, 이러한 파일은 ftrace의 전반적인 상태와 일부 기본 동작을 빠르게 확인할 수 있는 방법을 제공합니다.

이제 ftrace와 상호 작용하는 주요 인터페이스인 디버그 파일 시스템과 /proc/sys/kernel 디렉토리를 살펴보았습니다.

이 랩을 완료하려면 계속을 클릭하십시오.

요약

이 랩에서는 Linux 시스템에서 커널 ftrace 유틸리티가 활성화되어 있고 액세스 가능한지 확인하는 방법을 배웠습니다. /sys/kernel/debug/tracing에 위치한 디버그 파일 시스템 내의 기본 ftrace 인터페이스를 탐색하는 것으로 시작했습니다. ls 명령을 사용하여 이 디렉토리의 내용을 나열함으로써 ftrace 관련 파일 및 디렉토리의 존재를 확인하여 ftrace 인터페이스가 사용 가능함을 나타냈습니다.

이 초기 단계는 ftrace 사용에 대한 기본적인 요구 사항을 확인했습니다. 즉, 디버그 파일 시스템이 마운트되어 있어야 하고 추적 디렉토리가 존재해야 합니다. ls /sys/kernel/debug/tracing의 출력에서 다양한 ftrace 구성 및 제어 파일을 확인하여 ftrace 인프라가 존재하고 추가 상호 작용을 할 준비가 되었음을 시각적으로 확인했습니다.