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

这会获取到如下的一个日志:

linux 内核中断trace机制使用

每一个字段的解释,在文件的开头,基本上都有说明。

透过这个文件,我们可以得知一些信息:

1)哪一号中断,在哪一个时间戳上,在哪个CPU核上面运行,在哪个世家戳上退出。

2.)irq_handler_entry描述的是中断进入的时间点,irq_handler_exit描述的是中断退出的时间点。irq=xxx这个字段,显示的是当前中断的中断号。

3.)由于中断trace机制,是在某些时间点上,将中断的一些信息存在buffer当中,然后再做分析,因此,能记录的中断信息有限。会错过对一些中断信息的统计。