ftrace
中的 trace_options
选项用于控制追踪数据的收集和显示方式。你可以通过 /sys/kernel/debug/tracing/trace_options
文件来设置这些选项。每个选项代表了不同的追踪行为或输出格式。以下是一些常见的 trace_options
选项及其含义:
-
overwrite
:- 含义:当启用此选项时,如果缓冲区已满,新数据将覆盖旧数据。默认情况下,
ftrace
在缓冲区满时会停止记录。 - 用途:适用于持续监控的场景,确保始终有最新的数据。
- 含义:当启用此选项时,如果缓冲区已满,新数据将覆盖旧数据。默认情况下,
-
nooverwrite
:- 含义:与
overwrite
相反,追踪缓冲区满时不再记录新数据,以防止覆盖旧数据。这是默认行为。 - 用途:适用于捕获特定时间段内的数据,防止关键数据被新数据覆盖。
- 含义:与
-
irq-info
:- 含义:当启用此选项时,追踪输出中将包含中断请求(IRQ)的额外信息,如中断号和中断状态。
- 用途:调试与中断相关的问题时很有用。
-
sym-addr
:- 含义:在追踪输出中显示符号和地址。这会将内核函数的符号名与其地址一起输出。
- 用途:有助于精确定位内核中的函数地址。
-
sym-offset
:- 含义:在符号名后显示偏移量。这对于调试特定代码路径中的偏移量问题非常有用。
- 用途:追踪更细粒度的调用路径,特别是在大函数内的某些偏移位置。
-
sym-userobj
:- 含义:与用户态的符号结合使用,显示用户空间对象的符号名及其地址。
- 用途:分析用户态和内核态之间的交互时使用。
-
latency-format
:- 含义:当启用此选项时,追踪数据将以延迟格式输出,显示每个事件的延迟信息。
- 用途:用于分析系统延迟,特别是实时系统的性能调优。
-
funcgraph-abstime
:- 含义:启用后,函数调用图将以绝对时间的形式显示每个函数的开始时间。
- 用途:分析函数调用的精确时间点。
-
funcgraph-duration
:- 含义:显示每个函数的持续时间,标注函数的执行时间。
- 用途:调优函数的性能和执行时间。
-
funcgraph-cpu
:- 含义:在函数调用图中显示 CPU 信息,指明函数在哪个 CPU 上执行。
- 用途:多核系统调试时非常有用,能够跟踪函数在哪个核上运行。
-
sched_switch
:- 含义:启用后,会记录进程调度切换事件。
- 用途:调试和分析进程调度行为。
-
verbose
:- 含义:启用详细输出,通常用于调试器内部开发或深入分析追踪数据时使用。
- 用途:增加追踪数据的详细程度,适用于需要详细上下文信息的情况。
每个选项都可以通过在 /sys/kernel/debug/tracing/trace_options
文件中写入相应的选项名来启用或禁用。例如,启用 overwrite
选项可以通过 echo overwrite > /sys/kernel/debug/tracing/trace_options
来实现。禁用该选项则可以通过 echo nooverwrite > /sys/kernel/debug/tracing/trace_options
来实现。