[发明专利]一种自旋锁抢占调度算法选择方法及装置有效
申请号: | 201310705505.3 | 申请日: | 2013-12-19 |
公开(公告)号: | CN103729242A | 公开(公告)日: | 2014-04-16 |
发明(设计)人: | 于璠;王振国 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F9/46 | 分类号: | G06F9/46;G06F9/455 |
代理公司: | 广州三环专利代理有限公司 44202 | 代理人: | 郝传鑫;熊永强 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 自旋 抢占 调度 算法 选择 方法 装置 | ||
技术领域
本发明涉及通信技术领域,具体涉及一种自旋锁抢占调度算法选择方法及装置。
背景技术
自旋锁是为保护共享资源而提出的一种锁机制,在任何时刻,自旋锁最多只能有一个保持者,即在任何时刻最多只能有一个执行单元获得自旋锁,因自旋锁能够快速响应且支持多核处理器等优点而被广泛采用。在虚拟化环境下,为了最大化利用系统资源,会开启多个虚拟机,如果虚拟中央处理器(virtual central processing unit,VCPU)的数量大于物理中央处理器(physical central processing unit,PCPU)的数量,将会出现多个VCPU竞争同一个PCPU的情况,因此持有自旋锁并处于运行状态的VCPU可能会被竞争同一个PCPU的另一个VCPU抢占,当持有自旋锁的VCPU被抢占后,竞争同一自旋锁的其它VCPU将一直等待下去。目前,主要有两种解决自旋锁抢占的方式,方式一是:在做自旋等待的循环代码中插入暂停指令(如:PAUSE指令),当持有自旋锁的VCPU被抢占后,运行暂停指令使竞争同一自旋锁的其它VCPU进入忙等状态,当检测到暂停指令的循环时间超过等待阈值时,将这些VCPU重新放入等待队列中进行等待;方式二是:当持有自旋锁的VCPU被抢占后,调用调度算法调度虚拟机上的VCPU运行,如协同调度(co-scheduling)算法,该算法可以将出现锁抢占问题的虚拟机上的各个VCPU都调度到不同的PCPU上立刻运行。
在方式一中,由于自旋锁的等待阈值是固定的,因此无法随虚拟机管理器(virtual machine monitor,VMM)负载运行的变化而动态的调整等待阈值。上述方式二中,由于目前一个VMM只有一种调度算法,因此,当出现锁抢占时只能调用一种调度算法,但这种算法有可能不能解决此时出现的锁抢占问题。可见,VMM的整体性能比较低。
发明内容
本发明公开了一种自旋锁抢占调度算法选择方法及装置,用于提高虚拟机管理器的整体性能。
本发明第一方面提供一种自旋锁抢占调度算法选择方法,包括:
采集PCPU的实时信息,所述实时信息包括:VMM管理的目标虚拟机上处于非休眠状态的VCPU的数量,所述VMM为所述PCPU上运行的VMM;
根据所述实时信息分析所述目标虚拟机竞争自旋锁的竞争场景;
根据所述竞争场景计算所述目标虚拟机针对所述自旋锁的等待阈值;
从存储的等待阈值与调度算法的关系集中选择所述等待阈值对应的调度算法;
执行选择的所述调度算法调度所述目标虚拟机上的VCPU。
结合本发明第一方面,在本发明第一方面的第一种可能的实现方式中,所述采集PCPU的实时信息之前,所述方法还包括:
将自旋锁的等待阈值划分为多个阈值区间,每个阈值区间分配一种调度算法;
存储所述多个阈值区间与对应的调度算法,得到等待阈值与调度算法的关系集。
结合本发明第一方面,在本发明第一方面的第二种可能的实现方式中,所述实时信息还包括:
所述PCPU运行队列中的进程数量和所述PCPU中处于运行状态的PCPU的数量;
所述根据所述实时信息分析所述目标虚拟机竞争自旋锁的竞争场景,包括:
根据所述实时信息计算所述目标虚拟机竞争自旋锁的竞争指数;
根据所述竞争指数分析所述目标虚拟机竞争所述自旋锁的竞争场景。
结合本发明第一方面的第二种可能的实现方式,在本发明第一方面的第三种可能的实现方式中,所述根据所述竞争指数分析所述目标虚拟机竞争所述自旋锁的竞争场景,包括:
判断所述目标虚拟机竞争所述自旋锁的竞争指数是否小于或等于预设最小指数,若是,则将所述目标虚拟机竞争所述自旋锁的竞争场景的级别识别为低;
若否,则判断所述目标虚拟机竞争所述自旋锁的竞争指数是否小于或等于预设最大指数,若是,则将所述目标虚拟机竞争所述自旋锁的所述竞争场景的级别识别为中;
若否,则将所述目标虚拟机竞争所述自旋锁的所述竞争场景的级别识别为高。
结合本发明第一方面的第三种可能的实现方式,在本发明第一方面的第四种可能的实现方式中,所述根据所述竞争场景计算所述目标虚拟机针对所述自旋锁的等待阈值,包括:
判断所述竞争场景的级别是否为低,若是,则减小所述目标虚拟机针对所述自旋锁的等待阈值;
若否,则判断所述竞争场景的级别是否为中,若是,则保持所述目标虚拟机针对所述自旋锁的等待阈值不变;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310705505.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种全自动充钠机
- 下一篇:应急多功能汽轮机电动盘车装置