[发明专利]一种虚拟功能的动态调度方法有效
申请号: | 201210521557.0 | 申请日: | 2012-12-06 |
公开(公告)号: | CN103049331B | 公开(公告)日: | 2015-09-23 |
发明(设计)人: | 童薇;冯丹;刘景宁;李宇;张炬 | 申请(专利权)人: | 华中科技大学 |
主分类号: | G06F9/50 | 分类号: | G06F9/50;G06F9/455 |
代理公司: | 华中科技大学专利中心 42201 | 代理人: | 方放 |
地址: | 430074 湖北*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 一种虚拟功能的动态调度方法,属于计算机虚拟化领域,解决单根输入输出虚拟化标准的网卡所提供的虚拟功能使用中可扩展性不足、灵活性差的问题,以提高所述网卡的利用率。本发明包括初始化步骤、创建队列步骤、虚拟机分类步骤、分配虚拟功能步骤、判断唤醒步骤、虚拟机增加步骤、虚拟机减少步骤、动态调整步骤和休眠步骤。本发明在一段时间内,通过统计虚拟机I/O中断次数和睡眠时间,对单根输入输出虚拟化标准(SR-IOV)的网卡所提供的虚拟功能进行动态调度,保证了虚拟功能由I/O优先级值大的虚拟机使用,提高了其网络性能,充分利用了硬件,用于支持设备直接分配方式的虚拟机平台。 | ||
搜索关键词: | 一种 虚拟 功能 动态 调度 方法 | ||
【主权项】:
一种虚拟功能的动态调度方法,包括下述步骤:(1)初始化步骤,顺序包括下述子步骤:(1.1)用户创建配置文件,在配置文件中输入要保证带宽的各虚拟机名称和带宽值,其中带宽值为要求保证的虚拟机带宽值;(1.2)用户启用物理网卡的单根输入输出虚拟化功能,创建物理网卡的虚拟功能;(2)创建队列步骤,顺序包括下述子步骤:(2.1)分别创建第一队列、第二队列和第三队列用于保存虚拟机信息,各队列由节点组成,每个节点包含虚拟机名称、I/O优先级值、带宽值、虚拟功能数,其中I/O优先级值为对应虚拟机名称的虚拟机的I/O优先级;带宽值在第一队列的各节点中为对应虚拟机名称的虚拟机所要保证的带宽,在第二队列和第三队列中,各节点带宽值均为0;虚拟功能数在第一队列的各节点中为对应虚拟机名称的虚拟机所需要的虚拟功能数目,在第二队列的各节点中为1,在第三队列的各节点中为0;第一队列按照虚拟机加入顺序保存具有带宽保证的虚拟机,第二队列按照虚拟机的I/O优先级值从大到小的顺序保存没有带宽保证但已使用虚拟功能的虚拟机,第三队列按照虚拟机的I/O优先级值从大到小的顺序保存没有带宽保证且未使用虚拟功能的虚拟机;(2.2)创建虚拟功能队列用于保存虚拟功能信息,该队列由节点组成,每个节点包括编号、使用情况、虚拟机名称,其中编号为虚拟功能编号,使用情况为该编号虚拟功能使用情况,虚拟机名称为使用该编号虚拟功能的虚拟机名称;将各虚拟功能按编号值从小到大的顺序保存到虚拟功能队列各节点中,同时将各节点中的使用情况设置成未使用,虚拟机名称为空;(2.3)变量E为未使用的虚拟功能数目,变量B为第一队列中所有虚拟机已经使用的虚拟功能总数;将变量E置为虚拟功能总数,将变量B置为0;(3)虚拟机分类步骤,顺序包括下述子步骤:(3.1)判断虚拟机监控器中是否存在虚拟机,是则进行子步骤(3.2),否则转步骤(9);(3.2)将虚拟机监控器中所有的虚拟机按其在虚拟机监控器中的顺序依次加入到第三队列的各节点中,并初始化节点,将各节点的I/O优先级值、带宽值、虚拟功能数设置为0;(3.3)获取配置文件中所有虚拟机名称,使用每一个虚拟机名称查找第三队列,将与该虚拟机名称相同的节点从第三队列移除,依次加入第一队列,同时修改相应节点带宽值和虚拟功能数C,将带宽值修改为配置文件中该虚拟机的带宽值,将虚拟功能数C按照下式计算并修改:虚拟功能数C=带宽值×虚拟功能总数/物理网卡带宽;(3.4)启动定时器,将其时间长度设置为6~12小时;(4)分配虚拟功能步骤,顺序包括下述子步骤:(4.1)判断第一队列是否为空,是则转子步骤(4.6),否则获取第一队列中的第一个节点,进行子步骤(4.2);(4.2)判断是否(B+C)>A,是则转子步骤(4.5),否则进行子步骤(4.3);其中,变量A=虚拟功能总数/4;(4.3)顺序将虚拟功能队列中C个使用情况为未使用的节点所对应的虚拟功能分配给第一队列当前节点对应的虚拟机,将虚拟功能队列中对应这C个节点的虚拟机名称修改为第一队列当前节点的虚拟机名称,对应这C个节点的使用情况设置为已使用,置E=E-C,置B=B+C;(4.4)判断是否为第一队列最后一个节点,是则转子步骤(4.6),否则获取第一队列下一个节点,转子步骤(4.2);(4.5)将第一队列中当前节点以及其后的节点对应的虚拟机关闭,并将这些虚拟机从第一队列和配置文件中移除;(4.6)计算第二队列中、第三队列中各节点的I/O优先级值并排序:从虚拟机监控器中获取第二队列中、第三队列中各节点对应的虚拟机的I/O中断次数、睡眠时间;按照下式计算第二队列中、第三队列中所有节点的I/O优先级值:I/O优先级值=I/O中断次数×P+睡眠时间×(1-P),P为40%~60%;将结果保存到第二队列、第三队列相应节点的I/O优先级值中,按照I/O优先级值从大到小的顺序对第二队列、第三队列排序;(4.7)判断是否第三队列为空,是则转步骤(9),否则获取第三队列第一个节点,进行子步骤(4.8);(4.8)判断是否E>A,是则进行子步骤(4.9),否则转步骤(9);(4.9)将该节点从第三队列移除,并按照从大到小的顺序根据其I/O优先级值将其加入第二队列,将虚拟功能队列中第一个使用情况为未使用的节点所对应的虚拟功能分配给第二队列中加入节点对应的虚拟机,将虚拟功能队列中相应节点的虚拟机名称修改为第二队列中加入节点的虚拟机名称,将虚拟功能队列中相应节点的使用情况设置为已使用,置E=E-1,转子步骤(4.7);(5)判断唤醒步骤:判断是否有唤醒信号,是则进行子步骤(5.1);否则转步骤(9),所述唤醒信号为虚拟机增加信号、虚拟机减少信号、定时完成信号之一;唤醒信号包含类型和虚拟机名称,虚拟机增加信号类型为增加虚拟机、虚拟机名称为新增虚拟机的名称;虚拟机减少信号类型为减少虚拟机、虚拟机名称为减少的虚拟机的名称;定时完成信号类型为定时完成,虚拟机名称为空;(5.1)计算第二队列中、第三队列中各节点的I/O优先级值并排序,其方式与子步骤(4.6)相同;(5.2)判断唤醒信号是否为虚拟机增加信号,是则转步骤(6),否则进行子步骤(5.3);(5.3)判断唤醒信号是否为虚拟机减少信号,是则转步骤(7),否则转步骤(8);(6)虚拟机增加步骤,包括下述子步骤:(6.1)根据虚拟机名称在虚拟机监控器中查询是否存在该虚拟机,是则进行子步骤(6.2),否则转步骤(9);(6.2)读取配置文件,判断所述虚拟机名称是否存在配置文件中,是则进行子步骤(6.3),否则转子步骤(6.9);(6.3)将所述虚拟机名称的虚拟机加入到第一队列队末节点,同时修改相应节点带宽值和虚拟功能数C,将带宽值修改为配置文件中该虚拟机的带宽值,将虚拟功能数C按照下式计算并修改:虚拟功能数C=带宽值×虚拟功能总数/物理网卡带宽;(6.4)判断是否(B+C)>A,是则进行子步骤(6.5),否则转子步骤(6.6);(6.5)关闭新加入第一队列的虚拟机,将其从第一队列和配置文件中删除,转步骤(8);(6.6)判断是否C>(E-A),是则进行子步骤(6.7),否则转子步骤(6.8);(6.7)剥离第二队列队末的(C-(E-A))个节点对应的虚拟机的虚拟功能,并将这些虚拟功能分配给新加入第一队列的虚拟机,将虚拟功能队列中这些虚拟功能对应节点的虚拟机名称修改为第一队列新加入节点的虚拟机名称;将第二队列队末的(C-(E-A))个节点从第二队列移除,并将这些节点按照从大到小的顺序根据其I/O优先级值将其加入第三队列;顺序将虚拟功能队列中(E-A)个使用情况为未使用的节点所对应的虚拟功能分配给第一队列新加入节点的虚拟机,将虚拟功能队列中对应这(E-A)个节点的虚拟机名称修改为第一队列新加入节点的虚拟机名称,对应这(E-A)个节点的使用情况设置为已使用,置E=A,B=B+C,转步骤(8);(6.8)顺序将虚拟功能队列中C个使用情况为未使用的节点所对应的虚拟功能分配给第一队列当前节点的虚拟机,将虚拟功能队列中对应这C个节点的虚拟机名称修改为第一队列当前节点的虚拟机名称,对应这C个节点的使用情况设置为已使用,置E=E-C,置B=B+C,转步骤(8);(6.9)将新增虚拟机加入第三队列队首节点,并将该节点的I/O优先级值设置为第三队列中第二个节点的I/O优先级值,将该节点的带宽值、虚拟功能数设置为0,转步骤(8);(7)虚拟机减少步骤,包括下述子步骤:(7.1)根据虚拟机名称在第一队列查询是否存在相应节点,是则转子步骤(7.3),否则进行子步骤(7.2);(7.2)根据虚拟机名称在第二队列查询是否存在相应节点,是则将所述虚拟机对应的节点移除,转子步骤(7.5),否则转子步骤(7.4);(7.3)将节点从第一队列移除,置B=B-N,转子步骤(7.5),N为所述虚拟机名称对应的虚拟机的虚拟功能数;(7.4)根据虚拟机名称在第三队列查询是否存在相应节点,是则将所述虚拟机对应的节点移除,转步骤(8),否则转步骤(9);(7.5)遍历虚拟功能队列,将所述虚拟机名称对应的节点的使用情况修改为未使用,置E=E+N;(7.6)判断第三队列是否为空,是则转步骤(8),否则获取第三队列第一个节点,进行子步骤(7.7);(7.7)将该节点从第三队列移除,并按照从大到小的顺序根据其I/O优先级值将其加入第二队列,将虚拟功能队列中第一个使用情况为未使用的节点所对应的虚拟功能分配给第二队列中插入的节点所对应虚拟机,将虚拟功能队列中相应节点的虚拟机名称修改为第二队列中插入节点的虚拟机名称,将虚拟功能队列中相应节点的使用情况设置为已使用,置E=E-1,N=N-1;(7.8)判断N是否为0,是则转步骤(8),否则转子步骤(7.6);(8)动态调整步骤,顺序包括下述子步骤:(8.1)判断第二队列队队末节点的I/O优先级值是否大于第三队列队首节点的I/O优先级值,是则进行子步骤(8.2),否则转子步骤(8.3);(8.2)将第三队列中队首的节点从第三队列移除,再按照从大到小的顺序根据其I/O优先级值将其加入第二队列;再将第二队列列末的节点从第二队列移除,按照从大到小的顺序根据其I/O优先级值将其加入第三队列并剥离其虚拟功能,将剥离的虚拟功能分配给新加入第二队列的节点对应的虚拟机,修改虚拟功能队列中这个虚拟功能节点的虚拟机名称,转子步骤(8.1);(8.3)将虚拟机监控器中所有虚拟机的I/O中断次数和睡眠时间设置为0,将定时器时间长度设置为6~12小时,转步骤(9);(9)休眠步骤:休眠0.5~2分钟之后,转步骤(5)。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华中科技大学,未经华中科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201210521557.0/,转载请声明来源钻瓜专利网。