1.linux 内核 /proc/interrupts
在 /proc/interrupts 文件中记录了 Linux 内核的中断信息,我们可以通过命令查看
sudo cat /proc/interrupts
文件中以表格的形式列举出来所有的内核中断,其表头信息标注如下:
我们可以通过特定任务执行时各个中断执行次数的变化来粗略的推测该任务是否会触发特定的中断
2.查看特定中断执行的任务
假设:我们已知名为 irq_work/3 、kwoker/3 两个中断,我们想知道其中断执行的任务是什么,应该怎样快速的查询呢?
这里推荐使用 perf 工具
通过以下命令:
perf record -e 'workqueue:*' -ag –T
perf script -F comm,pid,tid,time,event,trace
我们可以获取到大量的中断信息,我们从中筛选出对我们需要的中断信息
表格信息解析:
第一行,名为 irq_work/3 的任务(pid=35)将函数 dbs_work_handler 放到了队列 workqueue中
第三行,任务 kworker/3:2-eve 正在执行该函数
参考:linux - Origin of a kworker-thread - Stack Overflow