一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种类型有限的虚拟机分配方法

2022-06-01 00:29:00 来源:中国专利 TAG:


1.本发明涉及虚拟机分配技术领域,尤其涉及一种类型有限的虚拟机分配方法。


背景技术:

2.虚拟机(virtual machine,简称vm)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,一般的虚拟机实际使用的硬件所在的计算机称为物理机(physical machine,简称pm)。随着计算机技术的不断发展,云服务逐渐成为了各大科技公司的重要产品,通过整合更多的资源,一方面提高了资源的使用率,降低了能源消耗,另一方面从长远来看也是更经济、方便的用户选择,这符合绿色低碳经济的发展要求。云虚拟机则是云服务中的一项基本服务,它为用户提供了基本的计算和存储需求。云服务中的一个基本问题是——虚拟机该如何分配到物理机中,在满足物理机的硬件要求下,最小化使用的物理机的数量。


技术实现要素:

3.鉴于目前虚拟机分配领域存在的上述不足,本发明提供一种类型有限的虚拟机分配方法,能够通过对不同类型虚拟机的预先组合,通过对虚拟机类型的分析,给出了简单实用的装箱策略,从而在兼顾运行时间的同时,保证了装箱的效率。
4.为达到上述目的,本发明的实施例采用如下技术方案:
5.一种类型有限的虚拟机分配方法,所述方法包括以下步骤:
6.分别获取虚拟机及其类型信息和物理机及其规格信息;
7.对获取的虚拟机按照类型进行预组合得到组合后的虚拟机序列;
8.根据物理机规格将组合后的虚拟机序列通过预定策略进行物理机分配。
9.依照本发明的一个方面,所述对获取的虚拟机按照类型进行预组合得到组合后的虚拟机序列包括:根据虚拟机的类型将虚拟机分为多个类型集合。
10.依照本发明的一个方面,所述预定策略包括:第一策略、第二策略和第三策略。
11.依照本发明的一个方面,所述第一策略包括:将物理机规格划分为分别与每种类型虚拟机一一对应的多个部分,分别用于各自对应类型虚拟机的装入。
12.依照本发明的一个方面,所述第二策略包括:将物理机规格划分为多个部分与处于两端的多种类型虚拟机一一对应,分别用于各自对应类型虚拟机的装入。
13.依照本发明的一个方面,所述第三策略包括:对每一种类型的虚拟机,按照cpu的降序对每个虚拟机装入物理机中;具体装法是,若当前的物理机序列的最后一个使用的物理机可以装入当前虚拟机则将其装入,否则就将其放入下一个空的物理机中。
14.依照本发明的一个方面,所述通过预定策略进行物理机分配包括:依次采用第一策略、第二策略和第三策略将虚拟机装入物理机中。
15.依照本发明的一个方面,所述类型有限的虚拟机分配方法包括:第一阶段,进行虚拟机类型的预组合;第二阶段,采用第一策略将虚拟机装入物理机;第三阶段,采用第二策
略将虚拟机装入物理机;第四阶段,采用第三策略将虚拟机装入物理机。
16.依照本发明的一个方面,所述类型有限的虚拟机分配方法的时间复杂度为第一阶段、第二阶段、第三阶段和第四阶段的时间复杂度之和。
17.依照本发明的一个方面,所述物理机和虚拟机cpu类型的个数为预先给定的值。
18.本发明实施的优点:结合虚拟机的类型以及物理机的规格分析,制定了虚拟机的组合策略以及装箱策略,并确定了不同策略的应用顺序。针对典型的云端虚拟机的分配场景,提出了一种基于箱子类型预处理和组合装箱的线性时间算法。在预处理阶段,通过对不同类型虚拟机的预先组合,一方面减少了虚拟机的数量,另一方面会更有利于后续的装箱。在装箱阶段,我们通过对虚拟机类型的分析,给出了简单实用的装箱策略,从而在兼顾运行时间的同时,保证了装箱的效率。
附图说明
19.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
20.图1为本发明所述的类型有限的虚拟机分配方法示意图。
21.图2为本发明实施例所述的packing-vm流程示意图;
22.图3为本发明实施例所述的collect-vms流程示意图;
23.图4为本发明实施例所述的enlarge-vm流程示意图。
具体实施方式
24.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
25.如图1所示,一种类型有限的虚拟机分配方法,所述方法包括以下步骤:
26.步骤s1:分别获取虚拟机及其类型信息和物理机及其规格信息;
27.本实施例中,只考虑vm和pm的计算核心(cpu)大小和内存(mem)大小这两方面的因素。给定n个虚拟机的请求序列l=ln=(vm1,

,vmn),令vmi的cpu大小为ci,mem大小为mi,物理机pm的规格统一,其cpu大小为c,mem大小为m。在实际问题中ci,mi,c,m一般均为2的幂,例如一般的各大云服务提供商提供的vm规格有1核2g,2核2g,2核4g,2核8g等等。从cpu和men的比值看,一般的pm的规格为m=2c,而vm的mi=ci·2s
,其中0≤s≤s,s为常数表示mem/cpu的类型数量。从cpu大小看ci=2
t
,0≤t≤t,t为常数表示cpu的类型个数。pm的mem要容纳最大的vm的mem的,即2c=m≥2s·2t
=2
s t
,log2c≥s t-1。对给定的ln,求最小的pm数量,使得ln的请求被满足。
28.c为pm的cpu的物理规格,由实际机器参数确定。s,t为vm的类型规格数量,由云服务提供商确定。而ln为vm的实际请求序列,由用户请求确定。本文中,考虑c,s,t为事先指定的常数,ln为输入的vm装箱问题和算法,明显地s*t为vm的类型数量。
29.本实施例的假设条件如下。
30.·ci
,mi,c,m均为2的幂。
31.·
取m=2c,即研究一般的应用场景。
32.·
取s=2。根据各个云服务厂商的产品观察到,一般地vm的mem/cpu主要是1,2,4。
33.·
取t=log2c-2≥0。由于1 t=s t-1≤lgc,但若t 1=log2c,则当pm装入ci=2
t
=c/2,mi=2
s t
=2
t 2
=2c的vmi后,剩余cpu为2
t
=c/2,剩余mem为0,因此这样必然造成cpu的浪费,因此取t=log2c-2更合适,即c=2
t 2

34.表格1不同类型的虚拟机vm类型和规格
35.定义vmi的类型为(t,s)当且仅当ci=2
t
且mi/ci=2s,为了方便同时称vmi的规格为[2
t
,2
t s
],本实例中的vm的类型和规格已列在表格1中,定义#(l,t,s)为l中(t,s)型vm的数量。在分配虚拟机的过程中,一个pm可以接收新的vm时,称此pm为打开的,否则称其为关闭的。
[0036]
步骤s2:对获取的虚拟机按照类型进行预组合得到组合后的虚拟机序列;
[0037]
在本实施例中,任意两个虚拟机vmi和虚拟机vmj满足且i≠j时,此问题退化为一维的情形,此时将vmi按照cpu的大小顺序,采用next fit算法即可获得最优的虚拟机分配结果。
[0038]
进一步地,若对所有的vmi都有时,上述方法还可保证除最后一个pm外,其余的pm的cpu和mem全部用满。当时,所有pm都会浪费至少一半的mem资源,当时,所有pm都会浪费至少一半的cpu资源。时pm资源利用率最高是因为因此,对于给定的ln,的vm越多越有利于提升pm的利用率,减少使用的pm数量,即(*,1)型的vm越多越好。
[0039]
当ln给定时,如何产生更多的(*,1)型的vm?我们有如下观察。
[0040]
令某个pm装入的vm的下标集合为k,令k1={i|mi=ci},k2={i|mi=2ci},k3={i|mi=4ci},显然k=k1∪k2∪k3,令,令若此pm的cpu和mem均装满,那么必有x=2z。这是因为c=x y z,m=x 2y 4z和m=2c。
[0041]
即一个pm不浪费资源时,类型为(*,0)的vm贡献的cpu是类型(*,2)的2倍。例如,2个(t,0)型,1个(t,1)和1个(t,2)的vm刚好装满一个pm。更普遍的规律是,2个(t,0)型,1个
(t,1)和1个(t,2)的vm的cpu和mem大小与1个(t 2,1)型的vm的cpu和mem大小相等,即
[0042]2·2t
2
t
2
t
=2
t 2
且2
·2t
2
t 1
2
t 2
=2
t 3

[0043]
例,2个规格为[16,16],1个规格为[16,32],1个规格为[16,64]的vm刚好相当于一个规格为[64,128]的vm。
[0044]
因此,通过(*,0),(*,1)和(*,2)型的vm组合,相当于将若干cpu小的vm组成了一个cpu大的vm,或者理解为扩充了某个小的vm,这是一种对vm的预处理。
[0045]
步骤s3:根据物理机规格将组合后的虚拟机序列通过预定策略进行物理机分配。
[0046]
本实施例中,下面给出了组合后的vm装入pm的几种方法:
[0047]
第一策略,即211策略:将1个pm的规格[c,2c]分成三部分,即分别用于(*,0),(*,1)和(*,2)型的vm的装入,对每种类型的vm来说,其分配的空间都能装入最大规格的vm的,且空间与vm的mem/cpu比例相同,这就退化为了一维的情形。此时pm的cpu和mem的利用率理论上可以达到100%。
[0048]
第二策略,即301策略:将1个pm的规格[c,2c]分成三部分,即第一、三部分分别用于(*,0)和(*,2)型的vm的装入,对每种类型的vm来说,像211策略一样,退化为了一维的情形。此时pm的cpu的利用率理论上可达100%,而mem将浪费至少2
t 3-3
·2t-2
t 2
=2
t
的空间,即mem利用率最多为87.5%。
[0049]
第三策略,即next fit策略:对(*,0),(*,1),(*,2)每一种类型的vm,按照cpu(即ci)的降序对每个vmi装入pm中,具体装法是若当前的pm序列的最后一个使用的pmj可以装入vmi则将其装入,否则就将其放入空的pm
j 1
中。也就是当前pm不可装时,就装入下一个新的pm中。
[0050]
以上三种策略是按照我们介绍的顺序进行使用的。
[0051]
在本实施例中,所述类型有限的虚拟机分配方法具体通过如下步骤实现:
[0052]
首先,为了提升pm的资源利用率,采用了预先组合的方法将规格小的vm组成类型为(*,1)的虚拟机集合,并将这个集合看成是一个vm进行后边的装入。其次,为了减小使用的pm数量,依次采用211策略,301策略,next fit策略将vm装入pm中。数值实验反应了此算法的最终效率。称如下算法为packing-vm。
[0053]
如图2所示,该方法主要包括以下步骤:
[0054]
输入:vm的序列l和pm的cpu容量c。
[0055]
s101、创建一个pm的序列pm用于放置vm,并令参数t=log2c-2。
[0056]
s102、计算(*0)型的vm的cpu之和c0和采用211策略可以装的pm的数量n0。
[0057]
s103、计算(*1)型的vm的cpu之和c1和采用211策略可以装的pm的数量n1。
[0058]
s104、计算(*2)型的vm的cpu之和c2和采用211策略可以装的pm的数量n2。
[0059]
s105、令迭代变量t=t。
[0060]
s106、如果t≥0转到s107,否则转到s113。
[0061]
s107、令迭代变量x=#(l,t,1),其中#(l,t,1)为l中(t,1)型的vm的数量。
[0062]
s108、如果x≥1转到s109,否则转到s112。
[0063]
s109、如果n1≥min(n0,n2)转到s113,否则转到s110。
[0064]
s110、选择一个(t,1)型的vmi,执行enlarge-vm(vmi,l)。
[0065]
s111、更新c0,n0,c1,n1,c2,n2,且x=x-1,转到s108。
[0066]
s112、t=t-1,转到s106。
[0067]
s113、令当前可用的pm的下标j=1,开始将vm装入pm中。
[0068]
s114、执行
[0069]
s115、执行
[0070]
s116、执行
[0071]
s117、如果q0=φ或q1=φ或q2=φ则转到s119,否则转到s118。
[0072]
s118、将q0,q1,q2中的vm装入pm[j]中,l=l-q
0-q
1-q2,j=j 1,转到s114。
[0073]
s119、执行
[0074]
s120、执行
[0075]
s121、如果q0=φ或q2=φ则转到s123,否则转到s122。
[0076]
s122、将q0,q2中的vm装入pm[j]中,l=l-q
0-q2,j=j 1,转到s119。
[0077]
s123、令迭代变量s=2。
[0078]
s124、如果s≥0则转到s125,否则转到s136。
[0079]
s125、令迭代变量t=t。
[0080]
s126、如果t≥0则转到s127,否则转到s135。
[0081]
s127、令x=#(l,t,s),即l中(t,s)型vm的数量。
[0082]
s128、如果x≥0则转到s129,否则转到s134。
[0083]
s129、选择一个(t,s)型的vmi。
[0084]
s130、如果vmi可以放入pm[j]中则转到s132,否则转到s131。
[0085]
s131、j=j 1。
[0086]
s132、将vmi放入pm[j]中。
[0087]
s133、x=x-1,转到s128。
[0088]
s134、t=t-1,转到s126。
[0089]
s135、s=s-1,转到s124。
[0090]
s136、返回j。
[0091]
其中,collect-vms是从l的(*,s)型的vm中收集若干个vm放入q中,使得如图3所示,函数具体步骤如下:
[0092]
输入:待收集的cpu之和c,待收集的vm的类型s,vm序列l。
[0093]
s101、令q=φ,
[0094]
s102、如果t≥0则转到s103,否则转到s106。
[0095]
s103、令即需要的(t,s)型的vm数量。
[0096]
s104、将k个(t,s)型的vm放入q中。
[0097]
s105、更新c=c-k*2
t
,t=t-1,转到s102。
[0098]
s106、如果c=0,则转到s108,否则转到s107。
[0099]
s107、q=φ。
[0100]
s108、返回q。
[0101]
其中,enlarge-vm是利用211策略将(*,0),(*,1),(*,2)型的vm扩充为一个新的vm,这是对vm的预先组合,如图4所示,函数具体步骤如下:
[0102]
输入:待扩充的某个vmi,vm的序列l。
[0103]
s101、令q0=collect-vms(2ci,0,l)。
[0104]
s102、令q2=collect-vms(ci,2,l)。
[0105]
s103、如果ci>2
t-2
或q0=φ或q2=φ则转到s107,否则转到s104。
[0106]
s104、l=l-q
0-q2。
[0107]
s105、ci=4*ci,mi=4*mi。
[0108]
s106、执行enlarge-vm(vmi,l)。
[0109]
s107、返回。
[0110]
packing-vm算法分为四个阶段。
[0111]
第一阶段是vm的预组合阶段,对应于s101到s112,本阶段通过采用211策略,将(*,0)和(*,1)和(*,2)型的vm进行了预先的组合,增加了(*,1)型vm的cpu之和,这有助于后续的vm的装入。
[0112]
第二阶段是采用211策略装入vm的阶段,对应于s113到s118。即将一个pm的规格[c,2c]分为三部分,分别装入(*,0)和(*,1)和(*,2)三种类型的vm。
[0113]
第三阶段是采用301策略装入vm的阶段,对应于s119到s122。即将一个pm的规格[c,2c]分为三部分,第一、三部分分别装入(*,0)和(*,2)两种类型的vm。
[0114]
第四阶段是采用next fit策略装入vm的阶段,对应于s123到s136。即对每种(t,s)型的每个vmi分配pm。这里采用了最简单的next fit策略,当最后一个打开的pm不能装入vmi时,就打开一个新的pm将vmi装入。
[0115]
关于packing-vm的时间复杂度分析如下。首先collect-vms的时间复杂度为o(log2c)。令enlarge-vm的时间复杂度为t(ci),则有如下关系。
[0116][0117]
其中ci为输入vmi的cpu,据此,可以分析出t(ci)=o(t2)。因此,packing-vm的时间复杂度为o(nt2) o(nt) o(nt) o(n)=o(nt2),这四部分分别对应了四个阶段的时间复杂度。
[0118]
下面是packing-vm的数值实验结果,这里取c=28,则t=6。令参数n'为每种(t,s)型的vm的数量上界,即初始生成的l中#(l,t,s)=random[0,n'],随机函数使用c 标准函
数库的rand()函数实现。那么我们对n'=100,1000,10000的条件进行了数值实验。实现语言为c ,测试机器为intel celeron 1005m 1.9ghz,12gb ram,实验结果如下。这里定义和显然lb1和lb2为pm数量的下界。我们用#pm表示算法packing-vm使用的pm数量,并令其表示了算法packing-vm的装箱效率。
[0119]
表格2算法packing-vm的结果
[0120][0121]
对每个n'的取值,做了1000次实验,其中最好的ρ列在bestcase中,最坏的ρ列在worstcase中,平均的ρ列在averagecase中。
[0122]
显然,当(*,1)型的vm较少时,packing-vm装箱效率会有所下降,因此我们限制原始l中(*,1)型的vm数量不超过的情形下,重复了上述实验,实验结果如下。
[0123]
表格3(*,1)型vm不超过时的结果
[0124][0125]
从上述实验中,我们发现packing-vm很好的利用了不同类型的vm,对vm进行预组合并结合多种装箱策略的效果,结合其线性时间性(因t会提前给定,所以nt2是vm数量n的线性函数),我们认为packing-vm是适用于典型场景的一种高效算法。
[0126]
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
[0127]
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施
例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0128]
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
[0129]
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0130]
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0131]
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
[0132]
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本领域技术的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献