我正在尝试测量各种
Linux内核的中断延迟中的抖动(启用了RT补丁等).我知道最好的方法是使用示波器来实现这一点,通过GPIO引脚产生中断并在中断服务程序中切换另一个GPIO引脚,但我想知道是否有任何Linux内核工具来做这个,并且可能是我可以比较这些数字.
解决方法
一种典型的方法是设置一个高精度时钟(例如CPU的周期计数器)以在将来触发中断一些随机但已知的时间,并在ISR中测量时钟设置的时间之间的差异与实际达到ISR的时间相比较.
(“随机”部分是为了确保您在安静或繁忙时间避免系统地进行测量 – 例如,您不希望定时器中断在网卡中断的同时系统地触发,不公平推动你的延迟数量.)
有点实现这一点的工具是Cyclictest,虽然它似乎测量内核线程内部的时间而不是ISR本身,这将在一定程度上推高你测量的延迟数.