免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3959 | 回复: 7

[时钟管理] 高精度定时器精度ns级别,系统开销扛得住吗 [复制链接]

论坛徽章:
2
射手座
日期:2014-09-03 00:18:022015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2014-08-15 09:56 |显示全部楼层
个人理解是内核里面应该有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出来?

论坛徽章:
0
发表于 2014-08-15 11:10 |显示全部楼层
现在的机器时钟频率,每纳秒能执行几条汇编指令就不错了。访问一次主存都要100纳秒啦。

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
发表于 2014-08-15 12:48 |显示全部楼层
这里只是精度是ns,实际如果每ns来一个定时器的话,这种开销应该承受不了,一般不会这么干吧。。。

论坛徽章:
2
射手座
日期:2014-09-03 00:18:022015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2014-08-15 15:50 |显示全部楼层
是不是能用到rttimer高精度定时的,一般都是一次性的需求,不会说来一个50ns的周期性的定时需求,如果是周期性的,50ns一次中断,系统确实吃不消;
如果确实需要用到周期性的,那周期也不会太短,至少要几百ns了吧

论坛徽章:
0
发表于 2015-12-30 10:24 |显示全部楼层
关于第一个问题,我也有同样的困惑,请教一下楼主,不知道你是否有答案了,能否共享一下。谢谢
“对于SMP(假设8个cpu),普通定时器会给每个cpu上都触发一个硬件中断吗? 系统的jffs这些是以哪个cpu来维护的? ”

论坛徽章:
0
发表于 2016-01-04 11:09 |显示全部楼层
我有同事碰到过,用了hrtimer严重影响了性能。

论坛徽章:
20
程序设计版块每日发帖之星
日期:2015-08-17 06:20:00程序设计版块每日发帖之星
日期:2016-07-16 06:20:00程序设计版块每日发帖之星
日期:2016-07-18 06:20:00每日论坛发贴之星
日期:2016-07-18 06:20:00黑曼巴
日期:2016-12-26 16:00:3215-16赛季CBA联赛之江苏
日期:2017-06-26 11:05:5615-16赛季CBA联赛之上海
日期:2017-07-21 18:12:5015-16赛季CBA联赛之青岛
日期:2017-09-04 17:32:0515-16赛季CBA联赛之吉林
日期:2018-03-26 10:02:16程序设计版块每日发帖之星
日期:2016-07-15 06:20:0015-16赛季CBA联赛之江苏
日期:2016-07-07 18:37:512015亚冠之萨济拖拉机
日期:2015-08-17 12:21:08
发表于 2016-01-04 16:12 |显示全部楼层
漏帖子了?记得前两天回答过的。

没记错的话,jiffies是由cpu0来统一维护的,这样实现策略会简单一些。

6楼能说的更详细一些么,是哪个子系统被影响了?

论坛徽章:
0
发表于 2016-01-07 12:59 |显示全部楼层
时钟中断的机制是有一个时钟比较器,你需要设置一个值给时钟比较器,然后时钟会按照tick一直往前走,当达到时钟比较器的值的时候,时钟比较器会触发一个中断。我的理解是hrtimer的精度就是tick的精度,而时钟中断之间的间隔是n*tick,而n应该是由clocksource和clockevent来定的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP