/**
- @file irq-count.md
- @brief 中断频率统计工具(irqinfo)
- @details
- OpenVela 提供
irqinfo中断频率统计工具,用于在系统运行过程中: -
- 统计各个中断的触发次数(COUNT)
-
- 计算中断触发频率(RATE, Hz)
-
- 记录单次中断最大执行时间(TIME, µs)
- 该工具适合用来快速识别:
-
- 是否存在“中断风暴”(某个 IRQ 频率异常高)
-
- 是否存在“超长中断”(单次执行时间异常长,影响实时性/调度)
- @section irqinfo_config 基本配置
- 启用 IRQ 监控与统计功能:
- @code
-
启用 IRQ 监控与统计功能
- CONFIG_SCHED_IRQMONITOR=y
-
用于通过 /proc 暴露统计数据接口
- CONFIG_FS_PROCFS=y
- @endcode
irqinfo依赖 procfs,系统启动后需挂载:- @code
- mount -t procfs /proc
- @endcode
- @section irqinfo_principle 工作原理
-
- 统计窗口:默认从系统启动开始计时;读取一次统计信息后会清空并重新开始计时,后续输出为“增量窗口”统计。
-
- 次数统计:每次中断触发时,对该 IRQ 的计数器累加。
-
- 频率计算:对统计窗口内的触发次数除以窗口时长,得到 RATE(Hz)。
-
- 耗时统计:在中断入口/出口记录时间戳,计算本次中断执行时间,并维护该 IRQ 的“单次最大执行时间(MAX)”。
- @section irqinfo_usage 使用方法
- 系统启动后,在 shell 中执行:
- @code
- ap> irqinfo
- @endcode
-
- 第一次执行:统计区间为「系统启动 → 当前时刻」。
-
- 第二次及后续执行:统计区间为「上一次执行 irqinfo → 当前时刻」(读完清空,重新计时)。
- @section irqinfo_output 输出格式与字段说明
- 示例输出:
- @code
- IRQ HANDLER ARGUMENT COUNT RATE TIME
- 11 2c604591 00000000 233 0.000 12
- 39 0005753d 2c786451 18 2.395 83
- 43 0005753d 00057455 759 0.000 143
- @endcode
- 字段含义:
-
- IRQ:中断号
-
- HANDLER:中断处理函数地址
-
- ARGUMENT:中断参数
-
- COUNT:统计窗口内触发次数
-
- RATE:统计窗口内触发频率(Hz)
-
- TIME:单次中断最大执行时间(µs) */