本发明具体涉及一种云计算环境下虚拟机资源的分配方法及分配系统。
背景技术:
随着经济技术的发展和人们生活水平的提高,云计算环境下的虚拟机已经得到了广泛的应用,给人们的生产和生活带来了许多便利。
依托虚拟机化技术,云服务商能够以虚拟机的形式向用户提供基础设施类服务(infrastructure-as-a-service,iaas),用户按照实际使用情况向服务商支付费用。因此,在云计算环境中,虚拟机资源的高效分配与定价已成为云服务商当前急需解决的挑战之一。相对于固定价格模式,基于拍卖的虚拟机资源分配与定价模式可以更好的动态平衡供需双方的利益,激励用户根据供需情况去规划自己的消费行为。拍卖机制的设计一般需要涉及几个关键属性,如可信性,无妒性,经济效用等。可信性指拍卖的售价与用户出价无关,用户的支配策略为报告自己的真实出价。可信性属性是服务商利益最大化的保证,但在组合拍卖中,可信性与无妒性一般不能同时取得。无妒性指拍卖结果对所有用户都是公平的,用户不妒忌其他用户的结果。无妒性属性是拍卖机制稳定可行的保证,但无妒性下的定价不一定是用户出价无关的,因此不保证可信性。无论哪一种分配定价机制,追求经济效用的最大化,是云服务商提供服务资源的内在原始动力。
vcg拍卖方法(vickrey-clarke-groves拍卖方法)是目前被证明唯一能够同时取得可信性与经济高效性的方法,它的基本原理是使面向用户的售价与用户的出价无关,以此保证机制的可信性。目前云服务商在基于此类方法的运行环境中,常常假设云服务商可提供的资源少于用户的需求,虚拟机资源的以静态或者动态的方式供给,虚拟机的种类为单一形式或者多种类型(不同类型之间资源的差异以倍乘的方式表示)。此类方法决定资源分配与定价的一般过程如下:首先设定一个不包含当前用户的用户集,计算在该用户集下的最大化社会效用,然后计算在当前用户参与但不包含该用户效用的最大化社会效用,以两者之差为当前用户的支付费用。该方法需要为每个用户重复上述计算过程来确定用户的售价。如果一个用户在该方法下的支付费用为零,则该用户在此次竞拍中失败,不会被分配任何资源,否则该用户被收取计算出的费用并获得请求的虚拟机。
由于vcg模型能够兼容可信性与社会经济效用最大化,现有的虚拟机资源拍卖方法大多基于vcg模型进行演化或改良。基于此类模型的方法需要为每个用户计算最终售价,因此需要多次重复计算,其计算代价很大,特别在系统规模庞大时,方法的实现变得非常困难。在演化或改良的模型中,各种近似算法被提出以减少系统计算的复杂度,但是近似算法的引入,使得可信性属性无法得到保证。此外,目前的技术应用环境也只考虑供少于求的情况,在这种情况下,社会经济效用与服务商的效用是一致的,但是当供大于求的情况出现时,应用此类方法两者的目标就不一致,服务商所取得经济效用可能会变得很低,这是服务商不能容忍的。除了上述不足,目前的技术少有考虑机制的无妒性,这些应用产生的结果不一定是无妒性,用户有可能更偏好其他用户的结果,这使得机制在运行中并不是稳定的。
技术实现要素:
本发明的目的之一在于提供一种在实现虚拟机资源分配与定价时能够无视市场的供求状况,在寻求云服务商利益最大化的同时也保证系统的无妒性和高概率可信性的云计算环境下虚拟机资源的分配方法。
本发明的目的之二在于提供一种用于实现所述云计算环境下虚拟机资源的分配方法的分配系统。
本发明提供的这种云计算环境下虚拟机资源的分配方法,包括如下步骤:
s1.对系统所提供的虚拟机资源进行分类量化;
s2.当进入实际拍卖流程时,收集用户的订单信息,根据步骤s1的分类量化结果计算各个用户的出价密度;
s3.根据步骤s2得到的出价密度,计算系统的总收益作为目标收益的上限;
s4.根据步骤s3得到的目标收益上限,提取出服务商的最终目标收益;
s5.根据步骤s4得到的最终目标收益,确定竞得资源的用户及其应支付的费用。
步骤s1所述的对虚拟机资源进行分类量化,具体为采用如下步骤进行分类量化:
a.采用如下公式计算第j类虚拟机的第k类资源数量的量化结果:
其中
b.采用如下公式计算虚拟机提供的各类资源的加权价格:
式中σk为第k类资源的加权价格,vk表示第k类资源
c.根据步骤a得到的量化结果和步骤b得到的加权价格,采用如下公式计算每一类虚拟机占用各类资源的统一量化结果:
式中nj为第j类虚拟机占用各类资源的统一量化结果。
步骤s3所述的计算系统的总收益,为采用最优单价方法计算与出价相关的总收益,具体为采用如下步骤计算总收益:
a.删除出价密度低于虚拟机服务商的保留价格或请求数量大于预设值的用户,并将剩余的用户归入有效用户集,并以出价密度为基准对有效用户集进行降序排序;
b.以虚拟机系统能够提供的有效资源确定可接纳的用户订单集;
c.寻找一个l值,使得步骤b中降序排序的可接纳用户集中的第1个用户至第l个用户的订单总数与第l个用户的出价密度的乘积最大;从而得到系统目标收益上限p、第1到第l个用户的虚拟机订单总数s,所述l为正整数。
步骤s4所述的提取出服务商的最终目标收益,为设计一个概率函数并计算服务商的最终目标收益,具体为采用如下步骤计算最终目标收益:
1)从[0,1]区间随机选取一个实数作为参数u的值;
2)从可接纳的用户订单集中选取最大的用户订单数量ξ;
3)采用如下公式计算中间变量α:
式中s为订单总数,τ为调整参数;τ的取值越大,则可信概率越高但目标受益越低,τ的取值越小,则可信概率越低但目标受益越高。
4)采用如下公式计算中间变量θ:
式中p为目标受益上限,计算符号
5)采用如下算式计算服务商的最终目标收益:
f=αθ+u
式中f为服务商的最终目标收益。
步骤s5所述的确定竞得资源的用户及其应支付的费用,具体为采用如下步骤确定竞得资源的用户并计算相应的支付费用:
(1)根据步骤s4得到的服务商的最终目标收益f,在可接纳用户集中寻找最大的m值,并计算从第1个用户到第m个用户所请求的总虚拟机数量sum,并使得第m个用户的出价密度不低于f/sum,所述m为正整数;
(2)确定第m+1个用户及其后面的用户竞价失败,不对该类用户分配资源,也不收取费用;
(3)确定第1个用户至第m个用户为竞价胜出者,为各个用户分配各自所请求的虚拟机资源,并对各个用户收取费用,所述各个用户收取的费用等于该用户的虚拟机资源请求量与f/sum的乘积。
本发明还提供了一种实现所述云计算环境下虚拟机资源的分配方法的分配系统,包括依次串接的资源分类量化模块,用户订单收集与计算模块,系统目标收益计算模块,最终目标收益计算模块和资源分配与计费模块;资源分类量化模块用于对系统所提供的虚拟机资源进行分类量化,用户订单收集与计算模块用于收集用户的订单信息并计算各个用户的出价密度,系统目标收益计算模块用于驾驶员系统的总收益,最终目标收益计算模块用于提取服务商的最终目标收益,资源分配与计费模块用于确定竞得资源的用户及其应支付的费用。
本发明提供的这种云计算环境下虚拟机资源的分配方法及其分配系统,是在虚拟机统一量化的前提下执行的,这使得机制能够适用于异构虚拟机资源的组合拍卖;在计算目标收益上限时采用属于贪心算法的最优单价计算方法,因此本发明的方法能够无视市场的供求状况,即使在市场供大于求的情况下(这是云服务商常面对的情况),也能够为服务商提供接近于最优的收益;本发明中采用松弛约束条件的策略,借由概率函数实现拍卖价格与用户出价高概率无关,使机制的可信性由完全可信转变为在一个可接受的高概率范围内,保证了用户不妒嫉其他用户的拍卖结果,用户的支配策略就是报告自己的真实评估,因此本发明实现的机制具有很好的稳定性能够保证服务商利益的最大化。
附图说明
图1为本发明的方法流程图。
图2为本发明的分配系统的功能模块图。
具体实施方式
如图1所示为本发明的方法流程图:本发明提供的这种云计算环境下虚拟机资源的分配方法,包括如下步骤:
s1.对系统所提供的虚拟机资源进行分类量化;
首先对各类虚拟机资源的组成成份进行量化,计算其与服务商所提供的虚拟机占用对应类型资源(cpu,内存,存储等)最大值的比值;因此,具体为采用如下步骤进行分类量化:
a.采用如下公式计算第j类虚拟机的第k类资源数量的量化结果:
其中
b.由于不同类型的资源在价格方面也是不同的,如cpu,内存等的价格是不一样的,因此采用如下公式计算虚拟机提供的各类资源的加权价格:
式中σk为第k类资源的加权价格,vk表示第k类资源
c.根据步骤a得到的量化结果和步骤b得到的加权价格,采用如下公式计算每一类虚拟机占用各类资源的统一量化结果:
式中nj为第j类虚拟机占用各类资源的统一量化结果
s2.当进入实际拍卖流程时,收集用户的订单信息,根据步骤s1的分类量化结果计算各个用户的出价密度:先收集用户的订单信息(订单包含用户的虚拟机需求包及总出价),然后以存储的虚拟机量化信息计算各个用户的出价密度,并以它们的降序形式对用户订单执行排序;
s3.根据步骤s2得到的出价密度,以最优单价方法(属于贪心算法的一种)计算系统的目标收益上限;
最优单价计算方法首先删除那些出价密度低于服务商保留价格或者请求数量大于预设值的用户,然后将剩余的用户归入有效用户集o中,并以他们的出价密度对集合o进行降序排序;接着以系统可提供的有效资源确定可接纳的用户订单集a;最后寻找最大的l,使得第1个用户到第l个用户的订单总数s与第l个用户的出价密度乘积p(目标收益上限)最大,最后返回a,p,s的值给系统作为下一步方案的输入数据;
具体的,定义如下变量:
qi,表示第i个用户的资源量化值;
cres,云服务商为单位虚拟机设置的保留价格;
n,云服务商允许单个用户可申请的虚拟机数量上限;
bi,表示第i个用户的出价;
di,表示第i个用户的出价密度;
o,有效用户订单集合;
oi,第i个用户的订单;
a,可接纳用户订单集合;
p,目标收益上限;
s,产生目标收益上限的最大资源请求数量;
最优单价算法实现流程表示如下:
1.可接受用户集a设置为空:
2.设置保留价格cres
3.计算各个用户资源需求的量化值:
4.计算各个用户的出价密度:
5.移除出价密度低于保留价格cres或者请求数量大于最大预设值n的用户,获得有效用户订单集o;
6.以用户出价密度di对订单集合o降序排序;
7.foralloi∈odo
if系统有足够的资源分配给用户i
用户i的订单归入集合a中:a=a∪{oi}
endif
8.endfor
9.在集合a中寻找最大的l,使得第1个用户到第l个用户的订单总数与第l个用户出价密度的乘积p最大,即
10.计算第1个用户到第l个用户的订单总数s,即
11.向系统还回p,a,s的值;
s4.根据步骤s3得到的目标收益上限,为设计一个概率函数并计算服务商的最终目标受益;
概率函数设计的目标就是使用户相信成交价与自身出价无关的概率在一个高的范围之内,从而用户的支配策略为出真实价格,最终达到服务商利益的最大化;
定义相关的变量:
p,为目标收益上限;
s,产生目标收益上限的最大资源请求数量;
τ,为一个取值大于1的实数,在本发明中,建议取值范围[10,15];
ξ,可接纳订单集a中最大的单个用户订单数量;
f,云服务商的目标收益;
概率函数的设计方法如下:
设随机变量u均匀分布在[0,1]区间,针对目标收益上限p,概率函数f(p)等于表达式αθ+u最接近于p的值,其中θ为满足该条件下的最大整数,α的取值为
通过概率函数所取得值即为服务商的目标收益,实现过程如下:
1.从[0,1]区间随机选取一个实数作为参数u的值;
2.从可接纳用户订单集a选取最大的用户订单数量ξ;
3.计算α的值:
4.计算θ的值:
5.计算服务商的目标收益f:f←αθ+u;
6.向系统返回f;
s5.根据步骤s4得到的最终目标收益,确定竞得资源的用户及其应支付的费用;在获得服务商的目标收益f之后,在有效用户订单集中寻找最大的l,计算从第1到第l个用户所请求的总虚拟机数量sum,使得第l个用户的出价密度不低于f/sum;确定第l+1之后的用户竞价失败,不分配资源也不收取费用;第1到第l个用户为竞价胜出者,分配用户请求的虚拟机资源,各个用户收取的费用为其虚拟机请求量与f/sum的乘积;
定义相关变量:
l,表示第l个用户;
|a|,表示系统可接纳的用户订单集;
sum,表示从第1到第l个用户所请求的总虚拟机数量;
p,表示单位虚拟机的售价;
具体实现步骤为:
1.计算可接纳用户订单集a中总虚拟机请求数sum;
2.forl←|a|to1do
sum←sum-第l个用户的虚拟机请求数
else
退出循环
endif
3.endfor
4.计算单位虚拟机的售价p:
5.if售价p低于第l+1用户的出价密度;
p←第l+1用户的出价密度
6.endif
7.第1到第l个用户的费用为其虚拟机请求量与p的乘积;
8.为第1到第l个用户分配虚拟机资源;
如图2所示为本发明的分配系统的功能模块图:本发明提供的这种实现所述云计算环境下虚拟机资源的分配方法的分配系统,包括依次串接的资源分类量化模块,用户订单收集与计算模块,系统目标收益计算模块,最终目标收益计算模块和资源分配与计费模块;资源分类量化模块用于对系统所提供的虚拟机资源进行分类量化,用户订单收集与计算模块用于收集用户的订单信息并计算各个用户的出价密度,系统目标收益计算模块用于驾驶员系统的总收益,最终目标收益计算模块用于提取服务商的最终目标收益,资源分配与计费模块用于确定竞得资源的用户及其应支付的费用。