Linux实时补丁与延迟追踪器深度解析
1. 高分辨率定时器与动态节拍
在Linux系统中,当定时器到期且时钟源向CPU发送中断时,高精度定时器(hrtimer)会处理该事件。通过在红黑树中查询下一个事件,并将时钟源设置为在下一个所需事件时触发,系统不再需要对jiffies进行计数,这为后续的优化奠定了基础。
高精度定时器的引入消除了仅为更新jiffy变量而触发定时器中断的需求,使得内核开发者能够消除系统空闲时不必要中断的开销。这在嵌入式领域尤为重要,因为消除空闲系统中的中断可以让CPU进入更好的节能状态,从而延长设备的电池续航时间。
动态节拍(Dynamic ticks)功能启用后,定时器中断仅在需要时触发。但需要注意的是,底层时钟源计数器不能在期间发生溢出。为解决这个问题,定时器中断的触发频率至少应设置为底层计数器溢出时间的一半。同时,定时器会更新一个单独的单调变量来跟踪系统时间。
当系统空闲时,即使多个jiffies过去也不会有任何影响,动态节拍代码会跟踪这段时间并相应地更新jiffies,使其值恢复到如果每个jiffy都触发中断时的状态。而当系统不空闲时,定时器中断会设置为每个jiffy触发一次,因为jiffy变量用于非实时任务的调度统计。
目前,并非所有的高分辨率定时器和动态节拍功能都已集成到主线内核中,一些架构尚未采用这些功能。不过,RT补丁仍是这些新功能的开发平台,未来有望集成到主线Linux中。
2. 延迟追踪器概述
RT补丁提供了一个名为延迟追踪器(Latency Tracer)的功能,帮助开发者找出内核中存在较大延迟的区域。当应用程序错过截止时间(希望仅在测试期间出现这种情况)
超级会员免费看
订阅专栏 解锁全文
66

被折叠的 条评论
为什么被折叠?



