5

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

4

3 回答 3

6

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

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

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

于 2013-03-14T03:49:18.790 回答
1

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

于 2013-08-28T05:58:17.470 回答
0

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

Linux GPIO IRQ 延迟测试

于 2015-06-02T03:14:37.813 回答