是否有任何内核工具可用于以合理的准确度测量中断延迟?

时间:2013-03-13 10:53:50

标签: linux-kernel interrupt interrupt-handling

我正在尝试测量各种内核(启用了RT补丁等)的中断延迟中的抖动。我知道最好的方法是使用示波器来实现这一点,通过GPIO引脚产生中断并在中断服务程序中切换另一个GPIO引脚,但我想知道是否有任何Linux内核工具来做这个,并且可能是我可以比较这些数字。

3 个答案:

答案 0 :(得分:5)

一种典型的方法是设置一个高精度时钟(如CPU的周期计数器)来触发中断一些随机但未知的时间,并在ISR中测量时间之间的差异时钟设定为与实际达到ISR的时间相关。

(“随机”部分是为了确保您在安静或繁忙时间避免系统地进行测量 - 例如,您不希望定时器中断与网卡同时系统地触发中断,不公平地推迟你的延迟数字。)

有点实现这一点的工具是Cyclictest,虽然它似乎可以测量内核线程内部的时间而不是ISR本身,这会稍微提高你测量的延迟数。

答案 1 :(得分:1)

使用“cyclictest”实用程序测量延迟,我已经做了研究,我正在使用循环测试来测量powerpc平台上移植的RT linux的抖动。
测量延迟是一种简单而强大的实用工具

答案 2 :(得分:0)

另一种方法是将目标板的一个GPIO输出连接到另一个GPIO输入,在GPIO输出上拉信号并在GPIO的ISR例程中处理此事件。检查拉动信号的时间差和GPIO输入ISR的触发。 对于Raspberry董事会来说,这是开源代码:

Linux GPIO IRQ latency test