高精度定时器精度ns级别,系统开销扛得住吗
个人理解是内核里面应该有2种类型的硬件中断定时器,称为普通定时器、高精度定时器hrtimer;普通定时器的精度由HZ定义,ms级别(1ms/10ms),主要是维护系统tick其相关一些工作;
hrtimer的精度能够到ns级别,主要是为驱动、应用程序提供高精度定时;
有几个疑问:
1, 对于SMP(假设8个cpu),普通定时器会给每个cpu上都触发一个硬件中断吗? 系统的jffs这些是以哪个cpu来维护的?
2,HZ之所以定在ms级别,就是综合考虑了系统开销的,现在hrtimer的精度是ns级别,中断这么频繁的产生,系统开销这么大,能抗的住吗?
3,既然ns级别的系统开销抗的住,直接把HZ设置为ns级别就行了,干嘛再搞一个hrtimer出来? 现在的机器时钟频率,每纳秒能执行几条汇编指令就不错了。访问一次主存都要100纳秒啦。 这里只是精度是ns,实际如果每ns来一个定时器的话,这种开销应该承受不了,一般不会这么干吧。。。 是不是能用到rttimer高精度定时的,一般都是一次性的需求,不会说来一个50ns的周期性的定时需求,如果是周期性的,50ns一次中断,系统确实吃不消;
如果确实需要用到周期性的,那周期也不会太短,至少要几百ns了吧 关于第一个问题,我也有同样的困惑,请教一下楼主,不知道你是否有答案了,能否共享一下。谢谢
“对于SMP(假设8个cpu),普通定时器会给每个cpu上都触发一个硬件中断吗? 系统的jffs这些是以哪个cpu来维护的? ” 我有同事碰到过,用了hrtimer严重影响了性能。 漏帖子了?记得前两天回答过的。
没记错的话,jiffies是由cpu0来统一维护的,这样实现策略会简单一些。
6楼能说的更详细一些么,是哪个子系统被影响了? 时钟中断的机制是有一个时钟比较器,你需要设置一个值给时钟比较器,然后时钟会按照tick一直往前走,当达到时钟比较器的值的时候,时钟比较器会触发一个中断。我的理解是hrtimer的精度就是tick的精度,而时钟中断之间的间隔是n*tick,而n应该是由clocksource和clockevent来定的。
页:
[1]