29.3. ftrace tracers
根据内核的配置方式,并非所有 tracer 都可能可用于给定的内核。对于 RHEL for Real Time 内核,trace 和 debug 内核具有与生产内核不同的 tracer。这是因为当 tracer 配置为内核中,但未激活时,一些 tracers 有显著的开销。这些 tracer 仅针对 trace
和 debug
内核启用。
tracers
- function
- 一个最广泛适用的 tracer。跟踪内核中的功能调用。这可能导致明显的开销,具体取决于跟踪的功能数量。如果没有激活,则会产生较少的开销。
- function_graph
function_graph
tracer 旨在以更视觉的方式显示结果。这个 tracer 还跟踪函数的退出,显示内核中函数调用的流。注意当启用时,这个 tracer 的开销比
函数
tracer 的更多开销,但在禁用时的开销相同。- Wakeup
- 报告所有 CPU 间发生活动的完整 CPU 追踪器。它记录系统中唤醒最高优先级任务所需的时间,无论任务是实时任务。记录唤醒非实时任务所需的时间会隐藏唤醒实时任务所需的时间。
- wakeup_rt
- 报告所有 CPU 间发生活动的完整 CPU 追踪器。它记录从当前最高优先级任务中获取的时间,以唤醒直到调度时间为止。此 tracer 仅记录实时任务的时间。
- preemptirqsoff
- 跟踪禁用抢占或中断的区域,并记录禁用抢占或中断的最大时间。
- preemptoff
- 与 preemptirqsoff 追踪程序类似,但只跟踪禁用了 pre-emption 的最大间隔。
- irqsoff
- 与 preemptirqsoff 追踪程序类似,但只跟踪禁用中断的最大间隔。
- nop
-
默认 tracer。它不提供任何追踪功能本身,但随着事件可能交入任何 tracer,nop tracer 用于追踪事件。