[发明专利]虚拟化环境下基于群调度的同步优化调度系统和调度方法有效
| 申请号: | 201310710423.8 | 申请日: | 2013-12-20 |
| 公开(公告)号: | CN103777995B | 公开(公告)日: | 2017-02-01 |
| 发明(设计)人: | 廖小飞;金海;刘凌辉 | 申请(专利权)人: | 华中科技大学 |
| 主分类号: | G06F9/455 | 分类号: | G06F9/455;G06F9/50 |
| 代理公司: | 华中科技大学专利中心42201 | 代理人: | 朱仁玲 |
| 地址: | 430074 湖北*** | 国省代码: | 湖北;42 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 虚拟 环境 基于 调度 同步 优化 系统 方法 | ||
技术领域
本发明属于计算机多核虚拟化调度领域,更具体地,涉及一种虚拟化环境下基于群调度的同步优化调度系统和调度方法。
背景技术
在虚拟化环境下,调度分为两层:一层是虚拟机(Virtural Machine,简称VM)内部的进程调度,一层是虚拟机管理器(Virtural Machine Manager,简称VMM)对虚拟处理器(Virtual CPU,简称VCPU)的调度。VM对进程的调度相对于VMM基本是透明的,VMM仅根据当前VCPU中是否有任务运行来判断当前VCPU是否可被调度。由于进程运行状态信息无法直接通过VCPU反应给VMM,导致VMM对VCPU的调度和VM对进程的调度之间容易产生理解偏差,对系统性能产生较大影响。
一般情况下用户会在虚拟化环境下运行大量并行负载,并行负载需要锁机制进行同步,其中一个主要的锁是自旋锁。由于VCPU会被VMM抢断以运行其它VCPU,使得可能持有自旋锁的VCPU被外层调度抢断,导致将来某个时间片需要该锁的VCPU试图请求该自旋锁,而该锁已经被不在运行的VCPU占有,这样会导致忙等待,从而浪费当前CPU时间片,最终导致线程同步开销增大,系统性能下降,这个问题称之为锁持有问题(Lock Holder Problem,简称LHP)。
目前业界通过群调度来解决LHP问题,它的主要思想是同时调度并行程序集合来减少同步延迟。同时调度VM上的所有VCPU,使其像原生系统一样运行,不会抢断VM上的VCPU,这使得一个VCPU尝试获得自旋锁时持有该锁的VCPU是正在运行的,从而减少同步开销。但是群调度有一个很致命的缺点,即CPU碎片问题:当前的物理CPU资源不够但是还有空闲的CPU时群调度并不会调度任何VCPU,即使当前有空闲的CPU资源,也会减少CPU利用率和延迟VCPU的执行。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种虚拟化环境下基于群调度的同步优化调度系统和调度方法,其目的在于,解决现有群调度中存在CPU碎片的技术问题。
为实现上述目的,按照本发明的一个方面,提供了一种虚拟化环境下基于群调度的同步优化调度系统的调度方法,包括以下步骤:
(1)VCPU初始映射模块判断当前虚拟机的类型是并行虚拟机还是非并行虚拟机,如果是并行虚拟机,则转入步骤(2),否则转入步骤(3);
(2)VCPU初始映射模块依次将当前虚拟机的每个CPU映射到不同的物理CPU的运行队列中,然后进入步骤(4);
(3)VCPU初始映射模块依次将当前虚拟机的每个CPU映射到负载最低的物理CPU的运行队列中;
(4)Credit分发模块每隔S个时间片根据所有虚拟机的权重为所有虚拟机的CPU分配信用值,其中S为正整数;具体而言,当前虚拟机的每个CPU获得的信用值的大小等于(当前虚拟机的权重/所有虚拟机的权重之和)*S/当前虚拟机的CPU数量;
(5)VCPU调度模块获取当前物理CPU的运行队列中信用值最大的虚拟机CPU作为当前虚拟机CPU;
(6)VCPU调度模块判断当前虚拟机CPU的类型是并行CPU还是非并行CPU,如果是并行CPU,则转入步骤(7),如果是非并行CPU,则进入步骤(8);
(7)VCPU调度模块判断当前虚拟机CPU是否为该虚拟机的第一个CPU,若是则转入步骤(9),否则获取当前物理CPU的运行队列中信用值仅次于当前虚拟机CPU的虚拟机CPU作为当前虚拟机CPU,并返回步骤(6);
(8)VCPU调度模块将当前物理CPU提供给非并行CPU使用,然后进入步骤(10);
(9)VCPU调度模块发送重新调度中断到其它物理CPU,以让系统能够同时调度该虚拟机的前N个CPU,其中N为群粒度的大小;
(10)Credit消耗模块减少当前虚拟机CPU的信用值减少1,同时Credit历史统计模块统计当前虚拟机CPU的减少值,然后返回步骤(4)。
优选地,步骤(2)具体为,将虚拟机的第一个CPU映射到负载最低的物理CPU的运行队列中,将虚拟机的第二个CPU映射到负载倒数第二低的物理CPU的运行队列中,…,以此类推。
优选地,在步骤(3)中,在某个物理CPU的负载一直最低的情况下,不同的CPU会被映射到该物理CPU的运行队列中。
优选地,群粒度的大小N的值等于当前CPU个数*P/(P+Q),其中P表示目前为止并行负载使用的CPU时间,Q表示目前为止非并行负载使用的CPU时间。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华中科技大学,未经华中科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310710423.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:发光器件
- 下一篇:一种防堵星形排料装置





