[发明专利]多核系统资源延迟回收锁的实现方法及系统有效
申请号: | 201210010796.X | 申请日: | 2012-01-13 |
公开(公告)号: | CN102609313A | 公开(公告)日: | 2012-07-25 |
发明(设计)人: | 陈天航;王博 | 申请(专利权)人: | 汉柏科技有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50;G06F15/16 |
代理公司: | 北京路浩知识产权代理有限公司 11002 | 代理人: | 王莹 |
地址: | 300384 天津市西青*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 多核 系统资源 延迟 回收 实现 方法 系统 | ||
技术领域
本发明涉及数据共享技术领域,特别涉及一种多核系统资源延迟回收锁的实现方法及系统。
背景技术
众所周知,为了保护共享数据,需要一些同步机制,如自旋锁(spinlock),读写锁(rwlock),它们使用起来非常简单,而且是一种很有效的同步机制,在Linux系统中得到了广泛的使用。但是随着计算机硬件的快速发展,获得这种锁的开销相对于CPU的速度在成倍地增加,原因很简单,CPU的速度与访问内存的速度差距越来越大,而这种锁使用了原子操作指令,它需要原子地访问内存,也就说获得锁的开销与访存速度相关,因此它的开销相对于CPU速度而言就越来越大,并且这种锁机制的另一个问题在于其可扩展性,在多处理器系统上,可扩展性非常重要,否则根本无法发挥其性能。自旋锁和读写锁的锁着核增加的理论性能并不理想。正是在这种背景下,一个高性能的锁机制RCU被提出,具有很好的扩展性,但是这种锁机制的使用范围比较窄,它只适用于读多写少的情况,如网络路由表的查询更新、设备状态表的维护、数据结构的延迟释放等。
Linux的RCU锁实现方法为:RCU(Read-Copy Update)顾名思义就是读-拷贝修改,它是基于其原理命名的。对于被RCU保护的共享数据结构,读数据者不需要获得任何锁就可以访问它,但写数据者在访问它时首先拷贝一个副本,然后对副本进行修改,最后使用一个回调(callback)机制在适当的时机把指向原来数据的指针重新指向新的被修改的数据。这个时机就是所有引用该数据的CPU都退出对共享数据的操作。
因此RCU实际上是一种改进的读写锁(rwlock),读数据者几乎没有什么同步开销,它不需要锁,不使用原子指令,因此不会导致锁竞争,内存延迟以及流水线停滞。不需要锁也使得使用更容易,因为死锁问题就不需要考虑了。写数据者的同步开销比较大,它需要延迟数据结构的释放,复制被修改的数据结构,它也必须使用某种锁机制同步并行的其它写数据者的修改操作。读数据者必须提供一个信号给写数据者以便写数据者能够确定数据可以被安全地释放或修改的时机。有一个专门的垃圾收集器来探测读数据者的信号,一旦所有的读数据者都已经发送信号告知它们都不在使用被RCU保护的数据结构,垃圾收集器就调用回调函数完成最后的数据释放或修改操作。
读数据者在访问被RCU保护的共享数据期间不能被阻塞,这是RCU机制得以实现的一个基本前提,也就说当读数据者在引用被RCU保护的共享数据期间,读数据者所在的CPU不能发生上下文切换,自旋锁(spinlock)和读写锁(rwlock)都需要这样的前提。写数据者在访问被RCU保护的共享数据时不需要和读数据者竞争任何锁,只有在有多于一个写数据者的情况下需要获得某种锁以与其他写数据者同步。写数据者修改数据前首先拷贝一个被修改元素的副本,然后在副本上进行修改,修改完毕后它向垃圾回收器注册一个回调函数以便在适当的时机执行真正的修改操作。等待适当时机的这一时期称为宽限时期(grace period),而CPU发生了上下文切换称为经历一个静默状态(quiescent state),宽限时期就是所有CPU都经历一次静默状态所需要的等待的时间。垃圾收集器就是在宽限时期之后调用写数据者注册的回调函数来完成真实的数据修改操作或数据释放操作的。
现有技术的RCU的主要缺点为:由于RCU在垃圾回收期间(下一个宽限时期内包括垃圾回收期间),无法让CPU进入静默状态,当需要回收的资源很多,会造成下一个宽限时期很长,在较长的宽限时间内,因为回收不及时造成对内存资源消耗很大,严重情况下资源耗竭而影响业务正常运行。另一个缺点是:RCU为了记录和访问判断宽限时期是否结束,采用的是自旋锁保护共享数据的方式来实现,对于RCU锁在对于垃圾回收及时性上有略微的性能损耗。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是:如何在垃圾回收期间让CPU进入静默状态,以解决在资源突发大量集中回收,造成此类资源耗竭而影响业务正常运行的问题。
(二)技术方案
为解决上述技术问题,本发明提供了一种多核系统资源延迟回收锁的实现方法,所述方法包括以下步骤:
S1:设置由n个数据单元所构成的环形链表,并将多核系统中的每个CPU分别对应数据单元中的一位数据;
S2:在当前CPU发生了上下文切换后,进入资源回收处理过程中,获取当前CPU进入宽限时期的次数,根据所述次数选择相应的当前数据单元,并将所述当前数据单元中与当前CPU对应的一位数据进行置位;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于汉柏科技有限公司,未经汉柏科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210010796.X/2.html,转载请声明来源钻瓜专利网。
- 上一篇:高强度无缝海藻酸盐胶囊
- 下一篇:基于体育赛事视频的数据同步方法及装置