【发布时间】:2013-03-13 10:53:49
【问题描述】:
我正在尝试测量各种Linux 内核(启用 RT 补丁等)的中断延迟中的抖动。我知道最好的方法是使用示波器来执行此操作,通过使用 GPIO 引脚生成中断并在中断服务例程中切换另一个 GPIO 引脚,但我想知道是否有任何 Linux 内核工具可以执行此操作,并且可能是我可以做一个数字的比较。
【问题讨论】:
标签: linux-kernel interrupt interrupt-handling
我正在尝试测量各种Linux 内核(启用 RT 补丁等)的中断延迟中的抖动。我知道最好的方法是使用示波器来执行此操作,通过使用 GPIO 引脚生成中断并在中断服务例程中切换另一个 GPIO 引脚,但我想知道是否有任何 Linux 内核工具可以执行此操作,并且可能是我可以做一个数字的比较。
【问题讨论】:
标签: linux-kernel interrupt interrupt-handling
一种典型的方法是设置一个高精度时钟(例如 CPU 的周期计数器)以在未来某个随机但已知的时间触发中断,并在 ISR 中测量两者之间的时间差。时钟设置为相对于实际到达 ISR 的时间。
(其中的“随机”部分是为了确保您避免在安静或繁忙时间系统地进行测量——例如,您不希望定时器中断与网卡同时触发中断,不公平地推高您的延迟数字。)
Cyclictest 是一个在一定程度上实现这一点的工具,尽管它似乎是在内核线程内而不是 ISR 本身测量时间,这会在一定程度上推高您测量的延迟数字。
【讨论】:
使用“cyclictest”实用程序来测量延迟,我已经做过研究,我正在使用 cyclictest 来测量 powerpc 平台上移植的 RT linux 的抖动。
测量延迟的简单而强大的实用程序
【讨论】:
另一种方法是将目标板的一个 GPIO 输出连接到另一个 GPIO 输入,将信号拉到 GPIO 输出上并在 GPIO 的 ISR 例程中处理此事件。检查 GPIO 输入 ISR 的上拉信号和触发的时间差。 这是用于 Raspberry 板的开源代码:
【讨论】: