Skip to main content
函数跟踪器(ftrace)提供跟踪实用程序,用于在运行时执行系统级性能分析和跟踪。 要使用 ftrace,请启用以下配置选项:
  • CONFIG_FTRACE
  • CONFIG_HAVE_FUNCTION_TRACER
  • CONFIG_HAVE_FUNCTION_GRAPH_TRACER
  • CONFIG_HAVE_DYNAMIC_FTRACE
  • CONFIG_HAVE_FTRACE_MCOUNT_RECORD
以下是 ftrace 可用于调试内核问题的一些操作:

将 ftrace 信息转储到 kmsg 缓冲区

要随时从源代码中将 ftrace 信息转储到 kmsg 缓冲区,请调用 ftrace_dump(DUMP_ALL) 函数。
  • 要增大 ftrace 环形缓冲区的大小,请运行以下命令:

启用工作队列跟踪

  • 要启用工作队列跟踪,请运行以下命令:
    示例输出:

启用中断请求(IRQ)跟踪

  • 要启用中断跟踪,请运行以下命令:
    示例输出:

启用调度器跟踪

  • 要跟踪任务之间的上下文切换,请运行以下命令以启用 sched_switch 跟踪器:
    示例输出:

查找 IRQ 延迟

  • 要查找系统中的最大 IRQ 延迟和抢占延迟,请按如下方式为 IRQOFFPREEMPTIONOFF 启用 ftrace 配置:
    要使此配置生效,请重新编译内核。此配置可以有效检测毫秒级延迟。
  • 要启用跟踪,请运行以下命令:
  • 要查找系统中观测到的最大延迟,请配置 tracing_max_latency = 0。要检测任何超过指定限制的延迟,请以微秒为单位设置阈值级别。例如,
以下示例显示了 16 毫秒 IRQ 延迟的跟踪信息:
有关更多信息,请参阅内核文档中提供的 Documentation/trace/ftrace.txt 文件。