关键的文件介绍(用到再添加用法)
-
指定要跟踪的函数
echo :mod:c1 > set_ftrace_filter #跟踪c1中的函数,前提是c1要在内核中加载 #也可以指定函数进行跟踪 echo hello_init > set_ftrace_filter
-
显示和配置当前的tracer
cat available_tracers cat current_tracer echo function_graph > current_tracer cat current_tracer
-
开关trace
echo 0 > tracing_on #关闭 echo 1 > tracing_on #打开
-
查看跟踪的信息
-
全部的文件介绍
current_tracer:配置和显示当前使能tracer。可用tracer见available_tracers; available_tracers:显示系统支持的tracer。 tracing_on:使能写trace日志到ring buffer的开关,同时也可cat查看是否使能。echo 0表示关闭,echo 1表示打开。注意这里是总开关的概念,如果current_tracer或event都未使能(配置为空和关闭event开关),那么就算这里写1使能,trace文件也是空的;如果配置了current_tracer和event,这个接口相当于总开关。 trace:保存trace记录,cat trace查看跟踪记录。注意这里是临时存放buffer,有空间大小限制,如果超了会被覆盖。 buffer_size_kb:用于设置和显示单个CPU所使用的跟踪缓存的大小。跟踪缓存为RingBuffer形式,如果跟踪太多,旧的信息会被新的跟踪信息覆盖掉。默认size通常是一个页(4K)。每个cpu的buffer size配置在per_cpu/cpu0/buffer_size_kb,percpu配置后,此文件显示"X"。 buffer_total_size_kb:显示所有的跟踪缓存大小,不同之处在于buffer_size_kb是单个CPU的,buffer_total_size_kb是所有CPU的和。 trace_pipe:输出和trace一样的内容,输出实时tracing日志,这样就避免了RingBuffer的溢出。cat trace_pipe > trace.txt &保存文件,但是cat时候会带来一些性能损耗。 trace_options:控制Trace打印内容格式或者设置跟踪器,可以通过trace_options添加很多附加信息。 options:目录文件,里面是每个trace options的文件,和trace_options对应,可以通过echo 0/1使能options。 tracing_max_latency:记录某些Tracer的最大延时。比如interrupts的最大延时关闭后,会记录在这里。可以echo值到此文件,然后遇到比设置值更大的延迟才会更新。 tracing_thresh:延时记录Trace的阈值,当延时超过此值时才开始记录Trace。单位是ms,只有非0才起作用 free_buffer:此文件用于在一个进程被关闭后,同时释放RingBuffer内存,并将调整大小到最小值。 tracing_cpumask:可以通过此文件设置跟踪指定CPU,二进制格式。 set_ftrace_filter:指定要跟踪的函数,可跟踪函数见available_filter_functions set_ftrace_notrace:指定不跟踪的函数,缺省为空。 set_ftrace_pid:tracer将只追踪写入此文件PID的对应的进程。"function-fork" option设置后,pid对应进程创建的子进程也会自动跟踪。 set_event_pid:tracer将只追踪写入此文件PID的对应进程的event。"event-fork" option设置后,pid对应进程创建的子进程event也会自动跟踪。 set_graph_function:function_graph tracer将只跟踪此文件配置的函数,缺省对所有函数都追踪。 set_graph_notrace:function_graph tracer不跟踪特定的函数嵌套调用。 available_filter_functions:显示可以跟踪的functions。 dyn_ftrace_total_info:debug使用,显示available_filter_functins中跟中函数的数目,两者一致 enabled_functions:显示回调函数。 function_profile_enabled:使能trace_stat/function<cpu> 的统计信息功能,统计包括function/hit/Time/Avg等信息。 trace_stat:存放不同tracing状态的目录 kprobe_events:Enable dynamic trace points. See kprobetrace.txt. kprobe_profile:Dynamic trace points stats. See kprobetrace.txt. max_graph_depth:function graph tracer使用,配置函数嵌套的最大深度。 printk_formats:提供给工具读取原始格式trace的文件。 saved_cmdlines:ftrace会存放pid的comms在一个pid mappings,在显示event时候同时显示comm,这里可以配置pid对应的comm,如果配置,显示类似<idle>-0,否则<...>-0。 saved_cmdlines_size:saved_cmdlines的数目 saved_tgids:If the option "record-tgid" is set, on each scheduling context switch the Task Group ID of a task is saved in a table mapping the PID of the thread to its TGID. By default, the "record-tgid" option is disabled. snapshot:是对trace的snapshot。 echo 0清空缓存,并释放对应内存。 echo 1进行对当前trace进行snapshot,如没有内存则分配。 echo 2清空缓存,不释放也不分配内存。 stack_max_size:当使用stack跟踪器时,记录产生过的最大stack size stack_trace:显示stack的back trace stack_trace_filter:设置stack tracer不检查的函数名称 trace_clock:配置trace日志中"timestamp"列的时钟,默认使用local时钟。 local:默认时钟,在每CPU中快速且精准,但是可能不会在各个CPU之间同步; global:各CPU间同步,但是比local慢; counter:并不是时钟,而是一个原子计数器。数值一直+1,但是所有cpu是同步的。主要用处是分析不同cpu发生的events; uptime:time stamp和jiffies counter根据boot time; perf:clock跟perf使用一致。 x86-tsc:非系统自己时钟。比如x86有TSC cycle clock; ppc-tb:使用powerpc的基础时钟寄存器值; mono:使用fast monotonic clock (CLOCK_MONOTONIC) mono_raw:使用raw monotonic clock (CLOCK_MONOTONIC_RAW) boot:使用boot clock (CLOCK_BOOTTIME)。 trace_marker:从用户态写trace mark到ftrace中,可以做一个标记到trace。 trace_marker_raw:以二进制格式写入到trace中。 uprobe_events:Add dynamic tracepoints in programs.See uprobetracer.rst uprobe_profile:Uprobe statistics. See uprobetrace.txt instances:创建不同的trace buffer实例,可以在不同的trace buffers中分开记录。 events:系统Trace events目录,在每个events下面都有enable、filter和fotmat。enable是开关;format是events的格式,然后根据格式设置 filter。 set_event:将Trace events名称直接写入set_event就可以打开。 available_events:列出系统中所有可用的Trace events,分两个层级,用冒号隔开。 per_cpu: per_cpu/cpu0/buffer_size_kb:配置per_cpu的buffer空间 per_cpu/cpu0/trace:当前CPU的trace文件。 per_cpu/cpu0/trace_pipe:当前CPU的trace_pipe文件。 per_cpu/cpu0/trace_pipe_raw:当前CPU的trace_pipe_raw per_cpu/cpu0/snapshot:当前CPU的snapshot per_cpu/cpu0/snapshot_raw:当前CPU的snapshot_raw per_cpu/cpu0/stats:当前CPU的trace统计信息