ftrace 리눅스 커널에서 제공하는 가장 강력한 트레이서입니다. ftrace는 커널 개발자에게 축복입니다. ftrace는 커널 세부 동작을 알기 쉽게 출력하기 때문입니다. ftrace의 특징은 다음과 같습니다. Ftrace는 tracefs 파일 시스템을 사용하여 제어 파일을 출력 파일로 표시합니다. Ftrace를 사용하시기 위해서는 2가지 방법이 있습니다. 1. fstab 설정 2. mount ※4.1 이전에는 모든 ftrace trace 제어 파일이 debugfs 내에있었습니다. 파일 시스템은 일반적으로/sys/kernel/debug/tracing에 있습니다. 이전 버전과의 호환성을 위해 debugfs 파일 시스템을 마운트 할 때 ※ 참고 : 모든 시간 값은 마이크로 초입니다. current_tracer : 현재 tracer를 설정하거나 표시하는 데 사용됩니다 available_tracers : 여기에는 다양한 유형의 trace 프로그램이 있습니다. tracing_on : 트레이스에 쓸지 여부를 설정하거나 표시합니다 커널 함수 tracing_off ()는 function 및 이벤트 트리거 "traceoff"도
trace: 이 파일은 인간의 trace 출력을 보유합니다. trace_pipe : 출력은 "trace"파일과 동일하지만 trace_options : 이 파일을 통해 사용자는 데이터 양을 제어 할 수 있습니다 option : 사용 가능한 모든 파일이있는 디렉토리입니다. tracing_max_latency : 일부 trace 프로그램은 최대 대기 시간을 기록합니다. 이 파일에 시간을 반영하여 대기 시간이 기록되지 않습니다
tracing_thresh : 일부 대기 시간 trace 프로그램은 buffer_size_kb : 각 CPU의 킬로바이트 수를 설정하거나 표시합니다. 개별 CPU의 버퍼 크기는 다를 수 있습니다
buffer_total_size_kb : 모든 트레이스 버퍼의 총 결합 크기가 표시됩니다. free_buffer : 프로세스가 trace을 수행 중이고 링 버퍼가 disable_on_free option이 설정된 경우 trace을 중지 할 수도 있습니다. tracing_cpumask : 지정된 CPU에서만 사용자를 trace 할 수있는 마스크입니다. set_ftrace_filter : 동적 ftrace가 구성되어있는 경우 ( "available_filter_functions"에 나열된 function은 이 인터페이스를 통해 명령을 사용할 수도 있습니다. 참조 set_ftrace_notrace : 이것은 효과와 반대되는 효과가 있습니다 set_ftrace_pid : 함수 trace기가 PID가있는 스레드 만 trace하도록하십시오.
"function-포크"option이 설정된 경우 set_event_pid : 이벤트가이 파일에 나열된 PID를 가진 작업 만 trace하도록하십시오. 이 파일에서 작업 하위의 PID를 PID와 함께 사용하려면 set_graph_function : 이 파일에 나열된 함수는 함수 그래프를 유발합니다 set_graph_notrace : set_graph_function과 유사하지만 함수 그래프를 비활성화합니다. available_filter_functions : 이것은 ftrace가 처리하고 trace 할 수있는 function을 나열합니다. dyn_ftrace_total_info : 이 파일은 디버깅 용입니다. function의 수 enabled_functions : 이 파일은 ftrace 디버깅에 유용하지만 유용 할 수도 있습니다. 콜백이 다음과 같은 함수에 의해 trace되도록 등록 된 경우 콜백이 다음과 같은 함수에 의해 trace되도록 등록 된 경우
아키텍처가 지원하는 경우 어떤 콜백도 표시합니다 함수의 콜백이 다음과 같은 트램폴린으로 점프하는 경우 function_profile_enabled : 설정하면 function 중 하나를 사용하여 모든 function을 사용할 수 있습니다 trace_stats/function (function0, function1 등). trace_stats : 다른 trace 통계를 보유하는 디렉토리입니다. kprobe_events : 동적 trace 점을 활성화합니다. kprobetrace.txt를 참조하십시오. kprobe_profile : 동적 trace 점 통계. kprobetrace.txt를 참조하십시오. max_graph_depth : function 그래프 tracer와 함께 사용됩니다. 이것은 최대 깊이입니다 printk_formats : 이는 원시 형식 파일을 읽는 도구를위한 것입니다. 이벤트가
saved_cmdlines : 작업의 pid 만 trace 이벤트에 기록됩니다 "record-cmd"option이 "0"으로 설정되면 작업이 시작됩니다 saved_cmdlines_size : 기본적으로 128 개의 통신이 저장됩니다 (위의 "saved_cmdlines"참조). 에 saved_tgids : "record-tgid"option이 설정된 경우 각 스케줄링 컨텍스트 전환 스냅 사진: "스냅 샷"버퍼를 표시하고 사용자에게 stack_max_size : 스택 tracer가 활성화되면
stack_trace : 가장 큰 스택의 스택 백 트레이스가 표시됩니다. stack_trace_filter : 이것은 "set_ftrace_filter"와 비슷하지만 trace_clock : 이벤트가 링 버퍼에 기록 될 때마다
trace을위한 일반적인 시계 : # cat trace_clock 주위에 대괄호가있는 시계는 로컬 : 기본 클럭이지만 CPU간에 동기화되지 않을 수 있음 global :이 시계는 모든 CPU와 동기화되어 있지만 counter : 이것은 전혀 시계가 아니라 말 그대로 원자 runtime : 지피 카운터와 타임 스탬프를 사용합니다. perf : 이것은 ftrace가 perf가 사용하는 것과 같은 시계를 사용하게합니다. x86-tsc : 아키텍처는 자신의 시계를 정의 할 수 있습니다. 에 대한
ppc-tb : powerpc 타임베이스 레지스터 값을 사용합니다. mono : 고속 모노 토닉 시계 (CLOCK_MONOTONIC)를 사용합니다.
mono_raw : boot : 이것은 부팅 시계 (CLOCK_BOOTTIME)이며 시계를 설정하려면 시계 이름을이 파일에 에코하십시오. 에코 전역> trace_clock trace_marker : 이것은 사용자 공간을 동기화하는 데 매우 유용한 파일입니다 응용 프로그램에서 시작시이 파일을 여는 것이 유용합니다 void trace_write(const char *fmt, ...)
if (trace_fd < 0) va_start(ap, fmt); write(trace_fd, buf, n); start: trace_fd = open("trace_marker", WR_ONLY); trace_marker_raw : 이것은 위의 trace_marker와 유사하지만 이진 데이터 용입니다. uprobe_events : 프로그램에 동적 trace 점을 추가하십시오. uprobe_profile : Uprobe 통계. uprobetrace.txt 참조 instance : 이것은 다른 곳에 여러 trace 버퍼를 만드는 방법입니다
이벤트 : trace 이벤트 디렉토리입니다. 이벤트 trace 점을 보유합니다. 자세한 내용은 events.txt를 참조하십시오. set_event : 이벤트를이 파일로 에코하면 해당 이벤트가 활성화됩니다. 자세한 내용은 events.txt를 참조하십시오. available_events : trace에서 사용할 수있는 이벤트 목록입니다. 자세한 내용은 events.txt를 참조하십시오. hwlat_detector : Hardware Latency Detector 디렉토리. per_cpu : 이는 trace per_cpu 정보가 포함 된 디렉토리입니다. per_cpu/cpu0/buffer_size_kb : ftrace 버퍼는 per_cpu로 정의됩니다. 즉, 별도가 있습니다
per_cpu/cpu0/trace : 이것은 "trace"파일과 유사하지만 표시 만됩니다. per_cpu/cpu0/trace_pipe 이것은 "trace_pipe"파일과 유사하며, per_cpu/cpu0/trace_pipe_raw ftrace 링 버퍼 이진 형식을 구문 분석 할 수있는 도구의 경우 trace_pipe와 마찬가지로, 이것은 여러 곳에서 소비하는 독자입니다. per_cpu/cpu0/스냅 샷 : 이것은 기본 "스냅 샷"파일과 유사하지만 per_cpu/cpu0/snapshot_raw : trace_pipe_raw와 유사하지만 이진 형식을 읽습니다. per_cpu/cpu0/stats : 링 버퍼에 대한 특정 통계가 표시됩니다. 항목 : 여전히 버퍼에있는 이벤트 수입니다. 오버런 : 덮어 쓰기로 인해 손실 된 이벤트 수 커밋 오버런 : 항상 0이어야합니다. 바이트 : 실제로 읽은 바이트 수 (덮어 쓰지 않음). 가장 오래된 이벤트 ts : 버퍼에서 가장 오래된 타임 스탬프 이제 ts : 현재 타임 스탬프 삭제 된 이벤트 : 덮어 쓰기 option이 해제되어 이벤트가 손실되었습니다. |