一种虚拟功能的动态调度方法技术

技术编号:8593835 阅读:193 留言:0更新日期:2013-04-18 06:59
一种虚拟功能的动态调度方法,属于计算机虚拟化领域,解决单根输入输出虚拟化标准的网卡所提供的虚拟功能使用中可扩展性不足、灵活性差的问题,以提高所述网卡的利用率。本发明专利技术包括初始化步骤、创建队列步骤、虚拟机分类步骤、分配虚拟功能步骤、判断唤醒步骤、虚拟机增加步骤、虚拟机减少步骤、动态调整步骤和休眠步骤。本发明专利技术在一段时间内,通过统计虚拟机I/O中断次数和睡眠时间,对单根输入输出虚拟化标准(SR-IOV)的网卡所提供的虚拟功能进行动态调度,保证了虚拟功能由I/O优先级值大的虚拟机使用,提高了其网络性能,充分利用了硬件,用于支持设备直接分配方式的虚拟机平台。

【技术实现步骤摘要】

本专利技术属于计算机虚拟化领域,具体涉及,用于支持设备直接分配方式的虚拟机平台,对单根输入输出虚拟化标准(SR-1OV)的网卡所提供的虚拟功能进行动态调度。
技术介绍
随着科技的进步,虚拟化技术应用范围越来越广。虚拟化技术可以分为CPU虚拟化、内存虚拟化和I/o虚拟化。目前,CPU虚拟化和内存虚拟化技术已经比较成熟,而I/O虚拟化的性能有待提闻。虚拟机使用的I/O设备分为两类,软件模拟的I/O设备和通过设备直接分配方式分配的I/o设备。软件模拟的I/O设备包括泛虚拟化方式模拟的设备和完全虚拟化方式模拟的设备。设备直接分配方式分配的I/o设备包括物理设备和支持单根输入输出虚拟化标准的设备的虚拟功能。软件模拟I/O设备方式具有扩展性好的优点,但是该方式下所有的I/O操作需要被虚拟机监控器捕获再执行,增加了虚拟机切换次数,频繁的上下文切换以及I/o路径的增长,使得这种方式I/o性能较差。使用设备直接分配方式分配物理设备是将硬件平台的物理设备分配给某一个虚拟机独占使用,而其他的虚拟机不能够使用。这种方式虽然性能较好,但是可扩展性差,资源的利用率较低。互连外围设备专业组(PC1-SIG)公布的新标准单根输入输出虚拟化,旨在将一个高速外设部件互连标准(PC1-E)物理功能抽象成多个虚拟功能,并能将虚拟功能分配给虚拟机直接使用。相比于软件模拟I/O设备方式,其I/O性能提高;相比于使用设备直接分配方式分配物理设备,在略微影响I/O性能的前提下,提高了可扩展性,为将基于以太网光纤通道等对IO性能要求较高的一类应用部署到虚拟机中提供了基础。然而单根输入输出虚拟化标准的设备依然存在一些问题1、可扩展性不足,一个遵循单根输入输出虚拟化标准的设备能够创建的虚拟功能个数受到硬件资源的限制。2、对虚拟功能的使用缺乏灵活性,当分配虚拟功能给一个虚拟机之后,虚拟功能就一直由该虚拟机占用。其使用与虚拟机的I/O中断次数、睡眠时间变化无关,可能会降低设备的利用率。为了清楚地理解本专利技术,以下对本专利技术中所使用的术语进行解释单根输入输出虚拟化标准(SR-1OV,Single Root I/O Virtualization):互连外围设备专业组(PC1-SIG, Peripheral Component InterconnectSpecial Interest Group)公布的设备虚拟化标准,遵循该标准的设备具备单根输入输出虚拟化功能,可以让物理设备成为共享设备。外设互联标准(PCI,Peripheral Component Interconnect)一种连接电子计算机主板和外部设备的总线标准。高速外设部件互连标准(PCI Express,简称PC1-E):是电脑总线外设互联标准的一种,它沿用了现有的外设互联标准编程概念及通讯标准,但基于更快的串行通信系统。物理功能(PF, Physical Function):在高速外设部件互连标准中,物理设备(Physical Device)也叫做物理功能;本专利技术指支持单根输入输出虚拟化标准的物理设备。虚拟功能(VF, Virtual Function也称为虚拟设备)物理功能遵循单根输入输出虚拟化标准创建虚拟功能,并共享一个或者多个物理资源,虚拟机可以直接使用虚拟功能。虚拟机(VM, Virtual Machine):指通过软件模拟的、具有完整硬件系统功能的、运打在Iv完全隔尚环境中的完整计算机系统。虚拟机监控器(VMM,Virtual Machine Monitor 也称为 Hypervisor)一种运行在基础物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用软件共享硬件。设备直接分配虚拟机监控器直接分配设备给虚拟机,虚拟机内的设备驱动程序可直接访问设备,只需要经过少量虚拟机监控器的管理。泛虚拟化(Paravirtualization): —种向虚拟机提供与底层硬件类似但不相同的软件接口技术。物理网卡(NIC, Network Interface Controller也称为网络接口控制器)是一块被设计用来允许计算机在计算机网络上进行通讯的计算机硬件,本专利技术采用遵循单根输入输出虚拟化标准的物理网卡。虚拟网卡(VNIC,VirtualNetwork Interface Controller):虚拟化平台中,通过软件模拟出来的提供给虚拟机使用的网络接口控制器。完全虚拟化(Full virtualization):一种能够模拟完整的硬件环境的虚拟化技术。
技术实现思路
本专利技术提供,解决单根输入输出虚拟化标准的网卡所提供的虚拟功能使用中可扩展性不足、灵活性差的问题,以提高所述网卡的利用率。本专利技术所提供的,包括下述步骤(I)初始化步骤,顺序包括下述子步骤(1.1)用户创建配置文件,在配置文件中输入要保证带宽的各虚拟机名称和带宽值,其中带宽值为要求保证的虚拟机带宽值;(1.2)用户启用物理网卡的单根输入输出虚拟化功能,创建物理网卡的虚拟功倉泛;(2)创建队列步骤,顺序包括下述子步骤(2.1)分别创建第一队列、第二队列和第三队列用于保存虚拟机信息,各队列由节点组成,每个节点包含虚拟机名称、I/o优先级值、带宽值、虚拟功能数,其中1/0优先级值为对应虚拟机名称的虚拟机的I/O优先级;带宽值在第一队列的各节点中为对应虚拟机名称的虚拟机所要保证的带宽,在第二队列和第三队列中,各节点带宽值均为O ;虚拟功能数在第一队列的各节点中为对应虚拟机名称的虚拟机所需要的虚拟功能数目,在第二队列的各节点中为1,在第三队列的各节点中为O ;第一队列按照虚拟机加入顺序保存具有带宽保证的虚拟机,第二队列按照虚拟机的I/o优先级值从大到小的顺序保存没有带宽保证但已使用虚拟功能的虚拟机,第三队列按照虚拟机的I/o优先级值从大到小的顺序保存没有带宽保证且未使用虚拟功能的虚拟机;(2. 2)创建虚拟功能队列用于保存虚拟功能信息,该队列由节点组成,每个节点包括编号、使用情况、虚拟机名称,其中编号为虚拟功能编号,使用情况为该编号虚拟功能使用情况,虚拟机名称为使用该编号虚拟功能的虚拟机名称;将各虚拟功能按编号值从小到大的顺序保存到虚拟功能队列各节点中,同时将各节点中的使用情况设置成未使用,虚拟机名称为空;(2. 3)将变量E设置为总虚拟功能数,将变量B设置为O ;变量E为未使用的虚拟功能数目,变量B为第一队列中所有虚拟机已经使用的虚拟功能总数;(3)虚拟机分类步骤,顺序包括下述子步骤(3.1)判断虚拟机监控器中是否存在虚拟机,是则进行子步骤(3. 2),否则转步骤(9);(3. 2)将虚拟机监控器中所有的虚拟机按其在虚拟机监控器中的顺序依次加入到第三队列的各节点中,并初始化节点,将各节点的I/O优先级值、带宽值、虚拟功能数设置为O ;(3. 3)获取配置文件中所有虚拟机名称,使用每一个虚拟机名称查找第三队列,将与该虚拟机名称相同的节点从第三队列移除,依次加入第一队列,同时修改相应节点带宽值和虚拟功能数,将带宽值修改为配置文件中该虚拟机的带宽值,将虚拟功能数按照下式计算并修改虚拟功能数=带宽值X虚拟功能总数/物理网卡带宽;(3. 4)启动定时器,将其时间长度设置为6 12小时;(4)分配虚拟功能步骤,顺序包括下述子步骤(4.1)判断第一队本文档来自技高网
...

【技术保护点】
一种虚拟功能的动态调度方法,包括下述步骤:(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设置为0;变量E为未 使用的虚拟功能数目,变量B为第一队列中所有虚拟机已经使用的虚拟功能总数;(3)虚拟机分类步骤,顺序包括下述子步骤:(3.1)判断虚拟机监控器中是否存在虚拟机,是则进行子步骤(3.2),否则转步骤(9);(3.2)将虚拟机监控器中所有的虚拟机按其在虚拟机监控器中的顺序依次加入到第三队列的各节点中,并初始化节点,将各节点的I/O优先级值、带宽值、虚拟功能数设置为0;(3.3)获取配置文件中所有虚拟机名称,使用每一个虚拟机名称查找第三队列,将与该虚拟机名称相同的节点从第三队列移除,依次加入第一队列,同时修改相应节点带宽值和虚拟功能数,将带宽值修改为配置文件中该虚拟机的带宽值,将虚拟功能数按照下式计算并修改:虚拟功能数=带宽值×虚拟功能总数/物理网卡带宽;(3.4)启动定时器,将其时间长度设置为6~12小时;(4)分配虚拟功能步骤,顺序包括下述子步骤:(4.1)判断第一队列是否为空,是则转子步骤(4.6),否则获取第一队列中的第一个节点,进行子步骤(4.2);(4.2)判断是否(B+C)>A,是则转子步骤(4.5),否则进行子步骤(4.3);其中,变量A=虚拟功能总数/4,变量C为当前节点的虚拟功能数;(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)判...

【技术特征摘要】
1.一种虚拟功能的动态调度方法,包括下述步骤 (1)初始化步骤,顺序包括下述子步骤 (1.1)用户创建配置文件,在配置文件中输入要保证带宽的各虚拟机名称和带宽值,其中带宽值为要求保证的虚拟机带宽值; (1. 2)用户启用物理网卡的单根输入输出虚拟化功能,创建物理网卡的虚拟功能; (2)创建队列步骤,顺序包括下述子步骤 (2.1)分别创建第一队列、第二队列和第三队列用于保存虚拟机信息,各队列由节点组成,每个节点包含虚拟机名称、I/O优先级值、带宽值、虚拟功能数,其中I/O优先级值为对应虚拟机名称的虚拟机的I/O优先级;带宽值在第一队列的各节点中为对应虚拟机名称的虚拟机所要保证的带宽,在第二队列和第三队列中,各节点带宽值均为O ;虚拟功能数在第一队列的各节点中为对应虚拟机名称的虚拟机所需要的虚拟功能数目,在第二队列的各节点中为1,在第三队列的各节点中为O ;第一队列按照虚拟机加入顺序保存具有带宽保证的虚拟机,第二队列按照虚拟机的I/O优先级值从大到小的顺序保存没有带宽保证但已使用虚拟功能的虚拟机,第三队列按照虚拟机的I/O优先级值从大到小的顺序保存没有带宽保证且未使用虚拟功能的虚拟机; (2. 2)创建虚拟功能队列用于保存虚拟功能信息,该队列由节点组成,每个节点包括编号、使用情况、虚拟机名称,其中编号为虚拟功能编号,使用情况为该编号虚拟功能使用情况,虚拟机名称为使用该编号虚拟功能的虚拟机名称; 将各虚拟功能按编号值从小到大的顺序保存到虚拟功能队列各节点中,同时将各节点中的使用情况设置成未使用,虚拟机名称为空; (2. 3)将变量E设置为总虚拟功能数,将变量B设置为O ;变量E为未使用的虚拟功能数目,变量B为第一队列中所有虚拟机已经使用的虚拟功能总数; (3)虚拟机分类步骤,顺序包括下述子步骤(3.1)判断虚拟机监控器中是否存在虚拟机,是则进行子步骤(3. 2),否则转步骤(9);(3. 2)将虚拟机监控器中所有的虚拟机按其在虚拟机监控器中的顺序依次加入到第三队列的各节点中,并初始化节点,将各节点的I/O优先级值、带宽值、虚拟功能数设置为O ; (3. 3)获取配置文件中所有虚拟机名称,使用每一个虚拟机名称查找第三队列,将与该虚拟机名称相同的节点从第三队列移除,依次加入第一队列,同时修改相应节点带宽值和虚拟功能数,将带宽值修改为配置文件中该虚拟机的带宽值,将虚拟功能数按照下式计算并修改 虚拟功能数=带宽值X虚拟功能总数/物理网卡带宽; (3. 4)启动定时器,将其时间长度设置为6 12小时; (4)分配虚拟功能步骤,顺序包括下述子步骤 (4.1)判断第一队列是否为空,是则转子步骤(4. 6),否则获取第一队列中的第一个节点,进行子步骤(4.2); (4. 2)判断是否(B+C) > A,是则转子步骤(4. 5),否则进行子步骤(4. 3); 其中,变量A =虚拟功能总数/4,变量C为当前节点的虚拟功能数; (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中断次数XP+睡眠时间X (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),所述唤醒信号为虚拟机增加信号、虚拟机减少信号、定时完成信号之一;唤醒信号包含类型和虚拟机名称,虚拟机增加信号类型为增加虚拟机、虚拟机...

【专利技术属性】
技术研发人员:童薇冯丹刘景宁李宇张炬
申请(专利权)人:华中科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1