专利名称:一种虚拟机资源分配方法及其系统的制作方法
技术领域:
本发明涉及虚拟机技术领域,尤其涉及一种虚拟机资源分配方法,以及一种虚拟机资源分配系统。
背景技术:
60年代末期兴起的虚拟机技术与虚拟机,随着存储虚拟化技术,以及一批新产品的涌现,在70年代初期达到了它的第一个高峰。但是,随着硬件价格的下降、性能的大幅上升,以及廉价的小型机、个人电脑和多任务操作系统的出现,虚拟机技术开始走向衰落。
90年代,研究者在研究解决大规模并行处理机(MPP,Massively Parallel Processing)不能运行已有的操作系统和编程困难等问题时发现,使用虚拟机技术可以使这些体系结构复杂的机器看起来与已有平台完全相似,从而可以运行现有的操作系统。
虚拟化是一种计算机系统抽象技术,通过物理平台上的虚拟机逻辑层管理计算机资源,并向运行在其上的客户层提供虚拟的资源。客户机操作系统可以通过标准接口访问资源,但是接口并不是与物理的资源直接通信,而是通过虚拟层来对真实资源进行管理,从而使得有限的资源可在多个虚拟机之间复用。直接运行在硬件平台上的虚拟化层称为虚拟机监视器VMM或者Hypervisor,它负责对虚拟机提供硬件资源和软件资源的抽象,为客户操作系统提供运行环境。
在虚拟化过程中,虚拟化软件需要实现对硬件的抽象,资源的分配、调度和管理, 虚拟机与宿主操作系统及多个虚拟机的隔离等功能。VMM对底层的所有硬件资源进行抽象, 然后把它们重新组合并集成到多个虚拟机(Virtual Machine)中实现虚拟化,每个虚拟机都能够运行独立的操作系统实例。
当前,主流的虚拟化技术产品有Vmware、Xen, Hyper-V和KVM等,它们在服务器的整合、资源的控制与优化,成本与能源的节约上都做出了杰出的贡献。虚拟化技术在虚拟集群领域也用很好的应用前景,并逐渐应用在云计算等高端领域中。
然而,通过虚拟化技术,在一台主机上可以运行着多个虚拟机,在每个虚拟机中运行着不同的操作系统和应用,而每个虚拟机都需要占用一定的计算机资源,如CPU资源和 I/O资源。
由于各个虚拟机运行的应用是不同的。有些虚拟机中运行的是实时性应用,例如视频会议;有些虚拟机中运行的是I/O密集型应用,例如本地观看高清电影;有些虚拟机中运行着CPU密集应用,例如进行精确的科学计算;还有些虚拟机运行着通信密集的应用,例如下载。还有很多的应用它是几个特征综合的,例如网上视频点播,它既是实时的、IO密集的,也是通信密集的。当CPU资源充足时,可以保证各种虚拟机的正常运行,但是当CPU 负载非常重时,虚拟机进入争夺计算机资源的状态,此时若缺乏适当的优化措施,很容易导致主机上的所有虚拟机的应用相互影响,而使得各个虚拟机的性能下降。
以一个开放源代码虚拟机监视器Xen为例,它的CPU调度和I/O调度算法对运行在其上的虚拟机非常注重公平和一致性,而不考虑虚拟机上运行的应用的具体资源需求。因此从开始到结束,Xen对所有的虚拟机都是按照初始分配给它的份额Weight来同等对待,并按照基本的分时方法依次轮流执行不同的虚拟CPU。但是在不同的虚拟机中运行着不同的应用程序,并且各个应用程序的特征也不尽相同。例如,实时性的应用,它需要I/O处理要及时,且CPU计算要同步,这样才能满足程序响应时间的要求,而使得用户得到真正的实时感受。
如果对各个虚拟机都分配同等份额的I/O处理资源和CPU,则可能导致需要大量 I/O处理资源的实时性的应用的响应变慢,影响用户体验。发明内容
本发明要解决的技术问题在于提供一种能够对同一计算机上运行的各个虚拟机合理地分配计算机资源的虚拟机资源分配方法。
一种虚拟机资源分配方法,包括以下步骤分别获取在主机上运行的各个虚拟机的单位时间I/O操作次数、VCPU单次执行时间、单位时间指令队列深度、以及单位时间收发数据包数目的统计值,并对主机上运行的所有虚拟机计算每一项所述统计值的平均值;根据各个虚拟机单位时间I/O操作次数的统计值及对应的单位时间I/O操作次数的平均值, 计算所述虚拟机的I/O操作资源分配值;根据各个虚拟机单位时间I/O操作次数的统计值及对应的单位时间I/O操作次数的平均值,以及所述虚拟机VCPU单次执行时间的统计值及对应的VCPU单次执行时间的平均值,计算所述虚拟机的实时响应资源分配值;根据各个虚拟机单位时间指令队列深度的统计值及对应的单位时间指令队列深度的平均值,计算所述虚拟机的运算资源分配值;根据各个虚拟机单位时间收发数据包数目的统计值及对应的单位时间收发数据包数目的平均值,计算所述虚拟机的通信资源分配值;根据所述I/O操作资源分配值,所述实时响应资源分配值,所述运算资源分配值,以及所述通信资源分配值, 计算所述虚拟机的总资源分配值;根据各个所述虚拟机的总资源分配值,调节各个虚拟机的资源分配比例。
与现有技术相比较,本发明的虚拟机资源分配方法中,统计主机上运行的各个虚拟机的单位时间I/O操作次数、VCPU单次执行时间、单位时间指令队列深度、以及单位时间收发数据包数目的统计值,并对主机上运行的所有虚拟机计算每一项所述统计值的平均值。根据单位时间I/O操作次数计算虚拟机的I/O操作资源分配值;根据VCPU单次执行时间计算所述实时响应资源分配值;根据单位时间指令队列深度计算所述运算资源分配值;根据单位时间收发数据包数目,计算所述通信资源分配值。最后获得对各个虚拟机分配资源的总资源分配值,根据所述总资源分配值来调节各个虚拟机占用的计算机资源分配比例。
例如,在统计获得某一虚拟机的单位时间I/O操作次数较多时,其对应的I/O操作资源分配值增大,从而使其对应的总资源分配值也增大,获得更多的计算机资源分配比例, 保证所述计算机能够运行顺畅。同样,当其他的统计值增大时,也会相应地增加其对应的资源分配值,因此可以实现同一计算机上运行的各个虚拟机之间的合理资源调配。
进一步地,还可以通过设置各个资源分配值在所述总资源分配值中所占的权重, 从而可以对各个虚拟机设定资源分配的优先级,例如,设定所述I/O操作资源分配值在所述总资源分配值中所占的权重较大,则对单位时间I/O操作次数较多的虚拟机,将优先分配更多计算机资源。
本发明要解决的技术问题在于提供一种能够对同一计算机上运行的各个虚拟机合理地分配计算机资源的虚拟机资源分配系统。
一种虚拟机资源分配系统,包括监控模块、操作资源分配值计算模块、实时资源分配值计算模块、运算资源分配值计算模块、通信资源分配值计算模块、总资源分配值计算模块和资源调度模块。所述监控模块用于获取在主机上运行的各个虚拟机的单位时间I/O 操作次数、VCPU单次执行时间、单位时间指令队列深度、以及单位时间收发数据包数目的统计值,并对主机上运行的所有虚拟机计算每一项所述统计值的平均值。所述操作资源分配值计算模块用于根据各个虚拟机单位时间I/O操作次数的统计值及对应的单位时间I/O操作次数的平均值,计算所述虚拟机的I/O操作资源分配值。所述实时资源分配值计算模块用于根据各个虚拟机单位时间I/O操作次数的统计值及对应的单位时间I/O操作次数的平均值,以及所述虚拟机VCPU单次执行时间的统计值及对应的VCPU单次执行时间的平均值, 计算所述虚拟机的实时响应资源分配值。所述运算资源分配值计算模块用于根据各个虚拟机单位时间指令队列深度的统计值及对应的单位时间指令队列深度的平均值,计算所述虚拟机的运算资源分配值。所述通信资源分配值计算模块用于根据各个虚拟机单位时间收发数据包数目的统计值及对应的单位时间收发数据包数目的平均值,计算所述虚拟机的通信资源分配值。所述总资源分配值计算模块用于根据所述I/O操作资源分配值,所述实时响应资源分配值,所述运算资源分配值,以及所述通信资源分配值,计算所述虚拟机的总资源分配值。所述资源调度模块用于根据各个所述虚拟机的总资源分配值,调节各个虚拟机的资源分配比例。
与现有技术相比较,本发明的虚拟机资源分配系统中,所述监控模块统计主机上运行的各个虚拟机的单位时间I/O操作次数、VCPU单次执行时间、单位时间指令队列深度、 以及单位时间收发数据包数目的统计值,并对主机上运行的所有虚拟机计算每一项所述统计值的平均值。所述操作资源分配值计算模块根据单位时间I/O操作次数计算虚拟机的 I/O操作资源分配值;所述实时资源分配值计算模块根据VCPU单次执行时间计算所述实时响应资源分配值;所述运算资源分配值计算模块根据单位时间指令队列深度计算所述运算资源分配值;所述通信资源分配值计算模块根据单位时间收发数据包数目,计算所述通信资源分配值。最后由所述总资源分配值计算模块获得对各个虚拟机分配资源的总资源分配值,并由所述资源调度模块根据所述总资源分配值来调节各个虚拟机占用的计算机资源分配比例。
例如,在统计获得某一虚拟机的单位时间I/O操作次数较多时,其对应的I/O操作资源分配值增大,从而使其对应的总资源分配值也增大,获得更多的计算机资源分配比例, 保证所述计算机能够运行顺畅。同样,当其他的统计值增大时,也会相应地增加其对应的资源分配值,因此可以实现同一计算机上运行的各个虚拟机之间的合理资源调配。
进一步地,还可以通过设置各个资源分配值在所述总资源分配值中所占的权重, 从而可以对各个虚拟机设定资源分配的优先级,例如,设定所述I/O操作资源分配值在所述总资源分配值中所占的权重较大,则对单位时间I/O操作次数较多的虚拟机,将优先分配更多计算机资源。
图1是本发明虚拟机资源分配方法的流程示意图;图2是本发明虚拟机资源分配系统的结构示意图。
具体实施例方式请参阅图1,图1是本发明虚拟机资源分配方法的流程示意图。本发明虚拟机资源分配方法包括以下步骤Si,分别获取在主机上运行的各个虚拟机的单位时间I/O操作次数、VCPU单次执行时间、单位时间指令队列深度、以及单位时间收发数据包数目的统计值,并对主机上运行的所有虚拟机计算每一项所述统计值的平均值;在本步骤中,通过对各个虚拟机的运行情况的监控,获取上述各项统计值。即通过监控各个虚拟机的I/O操作,获取所述虚拟机的单位时间I/O操作次数的统计值;通过监控各个虚拟机的VCPU单次执行时间,获取所述虚拟机的VCPU单次执行时间的统计值;通过监控各个虚拟机的指令队列,获取所述单位时间指令队列深度的统计值;通过监控各个虚拟机的数据包收发,获取所述单位时间收发数据包数目的统计值。进一步可设定每隔一个预定周期对各个虚拟机的运行情况发起一次上述监控,以获得最新的统计值数据。然后对上述各项统计值,在主机上运行的所有虚拟机范围内求取其平均值。例如, 根据各个虚拟机的单位时间I/O操作次数的统计值,计算单位时间I/O操作次数的平均值; 根据各个虚拟机的VCPU单次执行时间,计算VCPU单次执行时间的平均值;根据各个虚拟机的单位时间指令队列深度,计算单位时间指令队列深度的平均值;根据各个虚拟机的单位时间收发数据包数目,计算单位时间收发数据包数目的平均值。S2,根据各个虚拟机单位时间I/O操作次数的统计值及对应的单位时间I/O操作次数的平均值,计算所述虚拟机的I/O操作资源分配值;在本步骤中,优选按照以下公式计算所述虚拟机的I/O操作资源分配值
权利要求
1.一种虚拟机资源分配方法,其特征在于,包括以下步骤分别获取在主机上运行的各个虚拟机的单位时间I/O操作次数、VCPU单次执行时间、 单位时间指令队列深度、以及单位时间收发数据包数目的统计值,并对主机上运行的所有虚拟机计算每一项所述统计值的平均值;根据各个虚拟机单位时间I/O操作次数的统计值及对应的单位时间I/O操作次数的平均值,计算所述虚拟机的I/O操作资源分配值;根据各个虚拟机单位时间I/O操作次数的统计值及对应的单位时间I/O操作次数的平均值,以及所述虚拟机VCPU单次执行时间的统计值及对应的VCPU单次执行时间的平均值, 计算所述虚拟机的实时响应资源分配值;根据各个虚拟机单位时间指令队列深度的统计值及对应的单位时间指令队列深度的平均值,计算所述虚拟机的运算资源分配值;根据各个虚拟机单位时间收发数据包数目的统计值及对应的单位时间收发数据包数目的平均值,计算所述虚拟机的通信资源分配值;根据所述I/O操作资源分配值,所述实时响应资源分配值,所述运算资源分配值,以及所述通信资源分配值,计算所述虚拟机的总资源分配值;根据各个所述虚拟机的总资源分配值,调节各个虚拟机的资源分配比例。
2.如权利要求1所述的虚拟机资源分配方法,其特征在于,根据以下公式计算所述虚拟机的总资源分配值Weight = W1X F (χ)+w2 X G (χ,t)+w3X H (y)+w4 X I (η)其中,Weight是所述虚拟机的总资源分配值,W1, W2, W3和W4分别为预先设定的各种资源分配值的权重,F(X)为所述虚拟机的I/O操作资源分配值,G(x,t)为所述虚拟机的实时响应资源分配值,H(y)为所述虚拟机的运算资源分配值,I (η)为所述虚拟机的通信资源分配值。
3.如权利要求2所述的虚拟机资源分配方法,其特征在于,根据以下公式计算所述虚拟机的I/O操作资源分配值
4.如权利要求2所述的虚拟机资源分配方法,其特征在于,在计算所述虚拟机的总资源分配值之前,进一步包括根据用户指令,调整各种资源分配值的权重的步骤。
5.如权利要求1至4中任一项所述的虚拟机资源分配方法,其特征在于,根据各个所述虚拟机的总资源分配值,调节各个虚拟机的资源分配比例的步骤包括计算各个所述虚拟机的总资源分配值的总和; 计算各个所述虚拟机的总资源分配值与所述总和的比值; 根据所述比值调整各个虚拟机的资源分配比例。
6.一种虚拟机资源分配系统,其特征在于,包括监控模块,用于获取在主机上运行的各个虚拟机的单位时间I/O操作次数、VCPU单次执行时间、单位时间指令队列深度、以及单位时间收发数据包数目的统计值,并对主机上运行的所有虚拟机计算每一项所述统计值的平均值;操作资源分配值计算模块,用于根据各个虚拟机单位时间I/O操作次数的统计值及对应的单位时间I/O操作次数的平均值,计算所述虚拟机的I/O操作资源分配值;实时资源分配值计算模块,用于根据各个虚拟机单位时间I/O操作次数的统计值及对应的单位时间I/O操作次数的平均值,以及所述虚拟机VCPU单次执行时间的统计值及对应的VCPU单词执行时间的平均值,计算所述虚拟机的实时响应资源分配值;运算资源分配值计算模块,用于根据各个虚拟机单位时间指令队列深度的统计值及对应的单位时间指令队列深度的平均值,计算所述虚拟机的运算资源分配值;通信资源分配值计算模块,用于根据各个虚拟机单位时间收发数据包数目的统计值及对应的单位时间收发数据包数目的平均值,计算所述虚拟机的通信资源分配值;总资源分配值计算模块,用于根据所述I/O操作资源分配值,所述实时响应资源分配值,所述运算资源分配值,以及所述通信资源分配值,计算所述虚拟机的总资源分配值;资源调度模块,用于根据各个所述虚拟机的总资源分配值,调节各个虚拟机的资源分配比例。
7.如权利要求6所述的虚拟机资源分配系统,其特征在于,所述总资源分配值计算模块根据以下公式计算所述虚拟机的总资源分配值Weight = W1X F (χ)+w2 X G (χ,t)+w3X H (y)+w4 X I (η)其中,Weight是所述虚拟机的总资源分配值,W1, W2, W3和W4分别为预先设定的各种资源分配值的权重,F(X)为所述虚拟机的I/O操作资源分配值,G(x,t)为所述虚拟机的实时响应资源分配值,H(y)为所述虚拟机的运算资源分配值,I (η)为所述虚拟机的通信资源分配值。
8.如权利要求7所述的虚拟机资源分配系统,其特征在于,所述操作资源分配值计算模块根据以下公式计算所述虚拟机的I/O操作资源分配值
9.如权利要求7所述的虚拟机资源分配系统,其特征在于,进一步包括优先级调整模块,所述优先级调整模块用于根据用户指令,调整各种资源分配值的权重。
10.如权利要求6至9中任一项所述的虚拟机资源分配系统,其特征在于,所述资源调度模块计算各个所述虚拟机的总资源分配值的总和,并计算各个所述虚拟机的总资源分配值与所述总和的比值,根据所述比值调整各个虚拟机占用的资源分配比例。
全文摘要
本发明提供一种虚拟机资源分配方法及其系统,统计主机上运行的各个虚拟机的单位时间I/O操作次数、VCPU单次执行时间、单位时间指令队列深度、以及单位时间收发数据包数目的统计值,并对主机上运行的所有虚拟机计算每一项所述统计值的平均值。根据单位时间I/O操作次数计算虚拟机的I/O操作资源分配值;根据VCPU单次执行时间计算所述实时响应资源分配值;根据单位时间指令队列深度计算所述运算资源分配值;根据单位时间收发数据包数目,计算所述通信资源分配值。最后获得对各个虚拟机分配资源的总资源分配值,根据所述总资源分配值来调节各个虚拟机占用的计算机资源分配比例。以达到根据虚拟机的应用特征来优化虚拟机性能的目的。
文档编号G06F9/50GK102521055SQ201110421298
公开日2012年6月27日 申请日期2011年12月15日 优先权日2011年12月15日
发明者何利明, 周冠宇, 朱凌峰 申请人:广州杰赛科技股份有限公司