34.3. Ftrace 追踪器
根据如何配置内核,不是所有 tracer 都可用于给定的内核。对于 RHEL for Real Time 内核,trace 和 debug 内核的 tracer 与 production 内核不同。这是因为,当 tracer 被配置为内核中时,一些 tracer 有明显的开销,但未激活。这些 tracer 仅针对 trace
和 debug
内核启用。
tracer
- function
- 个最广泛应用的 tracer。跟踪内核中的功能调用。根据跟踪的功能数量,这可能导致明显的开销。如果不激活,这会产生较小的开销。
- function_graph
function_graph
tracer 被设计为以更明确的方式显示。此 tracer 也会跟踪功能的退出,显示内核中的功能调用流。注意当启用时,这个 tracer 的开销比
功能
tracer 更多的开销,但禁用时相同的低开销。- wakeup
- 报告所有 CPU 间发生的活动的完整 CPU 追踪器。它记录了系统中收集最高优先级任务所需的时间,无论是任务是实时任务还是实时任务。记录组成一个非实时任务所需的 max 时间,则会隐藏包含实时任务所需时间。
- wakeup_rt
- 报告所有 CPU 间发生的活动的完整 CPU 追踪器。它记录从当前最高优先级任务到调度时间之前完成这一时间。此 tracer 仅记录实时任务的时间。
- preemptirqsoff
- 跟踪禁用抢占或中断的区域,并记录禁用了抢占或中断的最长时间。
- preemptoff
- 与 preemptirqsoff tracer 类似,但仅跟踪抢占功能的最大间隔。
- irqsoff
- 与 preemptirqsoff tracer 类似,但只跟踪禁用中断的最大间隔。
- sisu
-
默认 tracer。它不会提供任何追踪功能本身,但事件可能会向任何 tracer 交集,所以
nop
tracer 用于对追踪事件进行特定关注。