第 13 章 使用 RHEL for Real Time 中的 timerlat 测量调度延迟
rtla-timerlat 工具是 timerlat 追踪器的接口。timerlat 追踪器查找实时线程的 wake-up 延迟源。timerlat 追踪器为每个 CPU 创建一个具有实时优先级的内核线程,这些线程将定期计时器设置为 wake,并返回到 sleep。在唤醒时,timerlat 会查找并收集信息,这对于调试操作系统计时器延迟非常有用。timerlat 追踪器生成输出,并在每次激活时打印以下两行:
-
timerlat追踪程序定期打印计时器中断请求(IRQ)处理程序中看到的计时器延迟。这是在线程激活前在hardirq上下文中看到的第一个输出。 -
第二个输出是线程的计时器延迟。
ACTIVATION ID字段显示中断请求(IRQ)性能,以及它们对应的线程执行。
13.1. 配置 timerlat 追踪器来测量调度延迟 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
您可以通过在追踪系统的 curret_tracer 文件中添加 timerlat 来配置 timerlat 追踪器。current_tracer 文件通常挂载到 /sys/kernel/tracing 目录中。timerlat 追踪器测量中断请求(IRQ),并在线程延迟超过 100 微秒时保存用于分析的 trace 输出。
流程
列出当前的 tracer:
# cat /sys/kernel/tracing/current_tracer nop没有操作(nop)是默认的 tracer。在追踪系统的
current_tracer文件中添加timerlat追踪器:# cd /sys/kernel/tracing/ # echo timerlat > current_tracer生成追踪输出:
# cat trace # tracer: timerlat
验证
输入以下命令检查
timerlat是否作为当前的 tracer 启用:# cat /sys/kernel/tracing/current_tracer timerlat