发明名称 一种虚拟CPU调度方法
摘要 一种虚拟CPU调度方法,属于计算机虚拟化技术领域,解决无法及时响应I/O处理、负载特性得不到满足及现有调度算法中负载均衡策略过于简单的问题。本发明包括调度初始化步骤、插入虚拟CPU运行队列步骤、虚拟CPU运行步骤、负载均衡步骤、更新信用值与系统负载步骤、重新分配信用值步骤、重新分配物理CPU步骤和更改虚拟机类型步骤。本发明将虚拟机分为三类,对不同类型负载进行了动态隔离,绑定到两组不同类型负载的物理CPU上运行,对运行不同类型负载的虚拟CPU给予不同的时间片,提高了运行效率并保证I/O性能;本发明重新设计了负载均衡策略,除了保证不同类型负载的隔离外,选择迁移开销最小的策略,解决了现有调度算法负载均衡策略过于简单的问题。
申请公布号 CN104503838A 申请公布日期 2015.04.08
申请号 CN201410676265.3 申请日期 2014.11.23
申请人 华中科技大学 发明人 童薇;冯丹;刘景宁;刘珂男
分类号 G06F9/50(2006.01)I;G06F9/455(2006.01)I 主分类号 G06F9/50(2006.01)I
代理机构 华中科技大学专利中心 42201 代理人 曹葆青
主权项 一种虚拟CPU调度方法,包括调度初始化步骤、插入虚拟CPU运行队列步骤、虚拟CPU运行步骤、负载均衡步骤、更新信用值与系统负载步骤、重新分配信用值步骤、重新分配物理CPU步骤和更改虚拟机类型步骤,其特征在于:(1)调度初始化步骤:为每个物理CPU创建物理CPU调度结构:为主物理CPU设置主计时器和调节计时器,其它物理CPU设置次级计时器;为每个虚拟机创建虚拟机调度结构:初始化虚拟机信用值权重,设定虚拟机类型;为每个虚拟机的虚拟CPU初始化虚拟CPU调度结构:初始化每个虚拟CPU的负载变量、I/O任务紧迫程度,为每个虚拟CPU分配信用值;初始化I/O位图A<sub>b</sub>和计算位图A<sub>c</sub>,A<sub>b</sub>中的物理CPU专用于调度运行I/O型负载的虚拟CPU,A<sub>c</sub>中的物理CPU专用于调度运行计算型负载的虚拟CPU,它们是互补的物理CPU位图;初始化全局的I/O负载变量L<sub>b</sub>以及计算负载变量L<sub>c</sub>,L<sub>b</sub>和L<sub>c</sub>分别记录系统中运行I/O型负载以及计算型负载的虚拟CPU所消耗的信用值资源;设置每个虚拟CPU的优先级;(2)插入虚拟CPU运行队列步骤:如果当前虚拟CPU运行计算型负载,则直接插入虚拟CPU运行队列中同一优先级的所有虚拟CPU之后;如果当前虚拟CPU运行I/O型负载,则按其优先级依序插入虚拟CPU运行队列,对于优先级相等的虚拟CPU,则根据I/O紧迫程度从大到小排序;(3)虚拟CPU运行步骤:如果当前物理CPU的队首虚拟CPU信用值小于或等于0,则触发负载均衡,转步骤(4);否则运行队首虚拟CPU,如果当前物理CPU为主物理CPU,运行过程中,次级计时器到时间,转步骤(5),主计时器到时间,转步骤(6),调节计时器到时间,转步骤(7),用户发出修改虚拟机类型命令,执行步骤(8);当前物理CPU为非主物理CPU,运行过程中,次级计时器到时间,转步骤(5),用户发出修改虚拟机类型命令,执行步骤(8);虚拟CPU达到运行时间后转步骤(2),重新插入队列;(4)负载均衡步骤:判断当前物理CPU在I/O位图中对应位是否为1,是则将I/O位图置1位的非空闲物理CPU作为目标CPU组,否则将计算位图置1位的非空闲物理CPU作为目标CPU组;然后从目标物理CPU组中选择迁移最优的物理CPU作为迁移的目标物理CPU,如果未找到迁移最优的物理CPU则放弃本次负载均衡;找到目标物理CPU后,再判断当前物理CPU在I/O位图中对应位是否为1,是则将目标物理CPU的虚拟CPU运行队列中I/O任务最急迫的虚拟CPU作为目标虚拟CPU,否则将目标物理CPU的虚拟CPU运行队列中历史负载最接近目标物理CPU与当前物理CPU历史负载的差值一半的虚拟CPU作为目标虚拟CPU,将目标虚拟CPU从原队列中删除并插入当前物理CPU的虚拟CPU队列队首;转回步骤(3);(5)更新信用值与系统负载步骤:更新当前虚拟CPU的信用值、负载变量,并更新相关物理CPU的历史负载变量,判断运行当前虚拟CPU的物理CPU在I/O位图中对应位值是否为1,是则更新其I/O任务紧迫变量以及全局的I/O负载变量,转回步骤(3);否则更新全局的计算负载变量;转回步骤(3);(6)重新分配信用值步骤:根据当前虚拟CPU的信用值判定优先级,重新计算每个虚拟CPU分配的信用值额度,并更新所有虚拟CPU的信用值,判断更新后虚拟CPU的信用值是否从非正变为正,是则更改其优先级,转回步骤(3);否则有关虚拟CPU的优先级不改变,直接转回步骤(3);(7)重新分配物理CPU步骤:根据全局I/O负载变量及计算负载变量分别计算运行I/O负载的物理CPU数目和运行计算型负载的物理CPU数目;并根据计算出的物理CPU数目修改对应的I/O位图和计算位图,重新建立虚拟CPU与物理CPU之间的亲和性;将I/O负载变量及计算负载变量清0,并更新所有虚拟CPU的I/O任务紧迫程度变量,转回步骤(3);(8)更改虚拟机类型步骤:读取用户命令,根据其中的虚拟机ID、虚拟机类型Q以及虚拟CPU数目X<sub>i</sub>,读取原虚拟机类型S<sub>i</sub>,根据虚拟机类型Q和原虚拟机类型S<sub>i</sub>,重新建立虚拟机的各虚拟CPU与I/O位图或计算位图的亲和性,并修改虚拟机类型变量,转回步骤(3)。
地址 430074 湖北省武汉市洪山区珞喻路1037号