linux 内核中断trace机制使用
如果要打开Linux内核的中断trace机制,需要在config里面,打开如下选项:
CONFIG_IRQSOFF_TRACER=y
并且需要重新编译内核。
然后,依次输入以下命令:
echo 0 > /sys/kernel/debug/tracing/tracing_on
echo > /sys/kernel/debug/tracing/trace
echo 30720 > /sys/kernel/debug/tracing/buffer_size_kb
echo irqsoff > /sys/kernel/debug/tracing/current_tracer
echo > /sys/kernel/debug/tracing/trace
echo 1 > /sys/kernel/debug/tracing/tracing_on
等待一段时间
echo 0 > /sys/kernel/debug/tracing/tracing_on
最后,需要获取中断trace的log文件:
cat /sys/kernel/debug/tracing/trace
这会获取到如下的一个日志:
每一个字段的解释,在文件的开头,基本上都有说明。
透过这个文件,我们可以得知一些信息:
1)哪一号中断,在哪一个时间戳上,在哪个CPU核上面运行,在哪个世家戳上退出。
2.)irq_handler_entry描述的是中断进入的时间点,irq_handler_exit描述的是中断退出的时间点。irq=xxx这个字段,显示的是当前中断的中断号。
3.)由于中断trace机制,是在某些时间点上,将中断的一些信息存在buffer当中,然后再做分析,因此,能记录的中断信息有限。会错过对一些中断信息的统计。