免费注册 查看新帖 |

Chinaunix

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

[内核同步] 为什么rcu的grace period时间那么长? [复制链接]

论坛徽章:
0
发表于 2014-09-16 11:18 |显示全部楼层
我在调试中发现, 在系统没做什么事情的时候, 在kernel 3.10测试代码中单独调用synchronize_rcu(), 居然要花费50ms, 而每次都要这么长时间.  以前3.4的版本也要花上个7,8个ms.   看了一下rcu的机制, 但是不了解gp为啥要这么长时间. 邪乎的是, 从系统boot开始, 系统也有很多次synchronize_rcu()时间超过100ms的情况. 而且从网上介绍来看gp也是要花费很多ms的.

理论上说synchronize_rcu要等待所有reader 一个宽限期,  但怎么会有这么长时间呢? 首先reader 获取read lock也不会很慢吧, 另外, rcu要其他cpu切换一次上下文也表示gp结束, 但最大的调度切换也就几个ms. 所以数十ms的情况是怎么来的呢?  如果rcu加速了reader访问,但是对writer如此滞后生效, 是不是有问题呢?  此外, grace period的周期有没有办法精确计算出来呢?

谢谢!

论坛徽章:
0
发表于 2014-09-16 16:25 |显示全部楼层
更为郁闷的是, 当我把cpu1-*全部offline, 只留下cpu0时, 单独测试synchronize_rcu()的时间, 居然也要花费25ms.  怎么会这样呢?

论坛徽章:
0
发表于 2014-09-16 18:25 |显示全部楼层
synchronize_rcu把自己挂起后,会不会有其他高优先级线程一直调度,导致挂起的线程长时间得不到运行呢?
把trace_rcu开上再试试?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP