Fork me on GitHub
侧边栏

ftrace trace信息开端

# tracer: nop
#
# entries-in-buffer/entries-written: 30624/30624   #P:4
#
#	_-----=> irqs-off
#	/ _----=> need-resched
#	| / _---=> hardirq/softirq
#	|| / _--=> preempt-depth
#	||| /	delay
#	TASK-PID	TGID   CPU#  ||||	TIMESTAMP  FUNCTION
#	| |	|	|   ||||	|	|

1. irq-off

  • 显示当前 CPU 是否关闭中断。
  • ‘d’ 表示中断被禁用(local_irq_disable())。
  • ‘.’ 表示中断正常开启。
  • ‘X’ 表示架构不支持读取 IRQ 标志。

作用:判断是否长时间关中断,避免影响系统实时性。

2. need-resched

  • 反映调度标志位:
    • ‘N’TIF_NEED_RESCHEDPREEMPT_NEED_RESCHED 都置位 → 需要调度且抢占。
    • ‘n’:只有 TIF_NEED_RESCHED → 普通调度请求。
    • ‘p’:只有 PREEMPT_NEED_RESCHED → 抢占请求。
    • ‘.’:无调度需求。

作用:判断当前任务是否应该被调度出去。

3. hardirq/softirq

  • 显示当前是否在中断上下文:
    • ‘Z’:NMI 嵌套在硬中断中。
    • ‘z’:NMI 运行。
    • ‘H’:硬中断发生在 softirq 内。
    • ‘h’:硬中断上下文。
    • ‘s’:软中断上下文。
    • ‘.’:普通进程上下文。

作用:帮助分析死锁、抢占延迟,确认代码是否在中断上下文。

4. preempt-depth

  • 显示 preempt_disable() 嵌套深度。
  • 值越大,表示抢占被禁止的层数越多。

作用:用于分析抢占延迟,判断是否有代码长时间禁止抢占。

posted @ 2025-09-29 21:43  yooooooo  阅读(20)  评论(0)    收藏  举报