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

Linux kernel 是否有任何内核工具可用于以合理的精度测量中断延迟?,linux-kernel,interrupt,interrupt-handling,Linux Kernel,Interrupt,Interrupt Handling,我试图测量各种Linux内核(启用RT补丁等)的中断延迟中的抖动。我知道最好的方法是使用示波器来实现这一点,方法是使用GPIO引脚生成一个中断,并在中断服务例程中切换另一个GPIO引脚,但我想知道是否有任何Linux内核工具可以实现这一点,也许我可以对这些数字进行比较 一种典型的方法是设置一个高精度时钟(如CPU的周期计数器),以在将来某个随机但已知的时间触发中断,并在ISR中测量时钟设置为关闭的时间与实际达到ISR的时间之间的差 (这其中的“随机”部分是为了确保您避免在安静或繁忙时间系统性地进

我试图测量各种Linux内核(启用RT补丁等)的中断延迟中的抖动。我知道最好的方法是使用示波器来实现这一点,方法是使用GPIO引脚生成一个中断,并在中断服务例程中切换另一个GPIO引脚,但我想知道是否有任何Linux内核工具可以实现这一点,也许我可以对这些数字进行比较

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

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

实现这一点的一个工具是,虽然它似乎是在内核线程内测量时间,而不是ISR本身,这将在一定程度上推高您测量的延迟数。

使用“cyclictest”实用程序来测量延迟,我已经做了研究,我正在使用cyclictest来测量powerpc平台上移植的RT linux的抖动。

测量延迟是一个简单但功能强大的实用程序

另一种方法是将目标板的一个GPIO输出连接到另一个GPIO输入,在GPIO输出上拉取信号,并在GPIO的ISR例程中处理此事件。检查牵引信号和GPIO输入ISR触发器的时差。 以下是用于Raspberry board的开放源代码:


我正在考虑使用信号发生器在GPIO上生成中断,以便通过多次生成中断并多次测量IRQ时间来获得中断响应时间中的抖动。手臂皮质的PMCR和循环计数寄存器可以帮我完成。现在需要研究的是日志部分。@Nuetrino按照davidg的建议这样做的问题是,您总是与系统时钟同步。外部来源更好。此外,用户空间代码可能会对中断延迟产生影响。某些指令的执行时间比其他指令长。但是如果你真的需要这种类型的延迟,硬件可能有问题。DMA等会更好。参考:请参阅:。