Linux实时补丁:高分辨率定时器、动态节拍与延迟追踪器
1. 高分辨率定时器与动态节拍
在Linux系统中,定时器的运作机制有着重要的优化点。当定时器到期,时钟源向CPU发送中断时,高精度定时器(hrtimer)会处理该事件。通过在红黑树中查询下一个事件,时钟源会被设置为在下次所需事件时触发。
这种机制使得不再需要对节拍(jiffies)进行计数,为后续的优化奠定了基础。高精度定时器的引入,消除了仅为更新节拍变量而触发定时器中断的需求,从而让内核开发者能够消除系统空闲时不必要的中断开销。
在嵌入式领域,这一点尤为重要。因为去除空闲系统中的中断可以让CPU进入更好的节能状态,进而延长加载该操作系统的设备的电池续航时间。
动态节拍(Dynamic ticks)功能开启后,定时器中断仅在有需求时触发。不过,需要注意的是,底层时钟源计数器不能在期间发生溢出。为解决这个问题,定时器中断的触发频率至少要达到底层计数器溢出时间的一半。同时,定时器会更新一个单独的单调变量来跟踪系统时间。
当系统空闲时,即使经过多个节拍,也不会有任何影响。动态节拍代码会记录这段时间,并相应地更新节拍值,使其恢复到如果每个节拍都触发中断时的状态。而当系统非空闲时,定时器中断会设置为每个节拍触发一次,因为节拍变量用于非实时任务的调度统计。
不过,并非所有的高分辨率定时器和动态节拍功能都已集成到主线内核中,部分架构尚未支持这些特性。但实时补丁(RT patch)仍是这些新特性的开发试验场,未来有望被纳入主线Linux。
2. 延迟追踪器概述
实时补丁附带了一个名为延迟追踪器(Latency Tracer)的功能,它
超级会员免费看
订阅专栏 解锁全文
1327

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



