소개
이 랩에서는 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-cmd는 ftrace를 구성하고 데이터를 수집하는 과정을 단순화하는 사용자 공간 유틸리티입니다.
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
값 1은 ftrace가 활성화되었음을 의미하고, 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 인프라가 존재하고 추가 상호 작용을 할 준비가 되었음을 시각적으로 확인했습니다.



