一种断电时云系统提供持续服务的调度算法的制作方法

文档序号:11154616阅读:482来源:国知局
一种断电时云系统提供持续服务的调度算法的制造方法与工艺

本发明涉及云系统技术领域,尤其是一种断电时云系统提供持续服务的调度算法。



背景技术:

在云系统中,保持服务的持续性是至关重要的,断电是一个对持续性最常见也最严重的威胁。为了提高断电时云的恢复能力,云服务供应商通常会在数据中心部署紧急电力供应如电池和发电机,也可能会在断电发生时将服务复制到其他的数据中心。但上述方法都存在缺陷,能量的供给是有限的,每一个服务在受影响的数据中心需求的服务时间是不一样的,需要高效的云服务持续性调度算法提高服务收益。



技术实现要素:

本发明所要解决的技术问题在于,提供一种断电时云系统提供持续服务的调度算法,可以确保激活物理机时每单元通电时间的使用效率,最大化物理机上被操作的虚拟机的收益。

为解决上述技术问题,本发明提供一种断电时云系统提供持续服务的调度算法,包括如下步骤:

(1)初始化k=1,

(2)当且时计算如果则进行Ak=REVENUEBUNDLE(V,(J\Sk-1)≤t,激活一台新的物理机PM来运行Ak中的虚拟机VMs,令Sk=Sk-1∪Ak,k=k+1,判断是否剩余能量充足以继续循环激活新一台PM或结束;

(3)计算令如果Sk中的收益比大,则返回Sk的收益;否则,返回中的收益;其中,J为数据中心断电前运行的虚拟机的集合;V为单个物理机PM的资源数;sj为第j台虚拟机所需要的cpu资源大小;dj为第j台虚拟机的截止时间;J≤t为虚拟机集合J中满足dj≤t的集合;pj为第j台虚拟机在截止时间前运行完成所带来的利润;T为数据中心供电恢复的时间;I为数据中心中物理机的集合;U为数据中心中断电后可供使用的紧急供电总量;Ak为在第k轮迭代中被分配的虚拟机子集;Sk为前k轮中已被分配的虚拟机集合,即Sk=∪1≤i≤kAi;为算法中,对于满足给定截止时间下的剩 余未被分配的虚拟机子集中,满足给定资源容量上限并使所获得收益最大化的子集合; 为算法中,单位时间内中收益最大化的截止时间;为在容量V下单个物理机下分配物理机集时能得到的最大收益;为在容量V下单个物理机下分配物理机集时达到最大收益的物理机集合。

本发明的有益效果为:对于断电情况下如何利用有限备用能源的问题,提供了一个在平均性能上能够逼近最优解的解决方案,可以确保激活物理机时每单元通电时间的使用效率,最大化物理机上被操作的虚拟机的收益,从而保证能源的使用效率。

附图说明

图1为本发明的断电时云系统的结构示意图。

图2为持续服务所需时间的评估方式示意图。

图3为本发明的算法流程示意图。

图4(a)为本发明的在可获得的物理机和通电时间有限的情况下的虚拟机数量不同对于收益值影响的示意图。

图4(b)为本发明的不同的物理机为可利用状态时收益变化的示意图。

具体实施方式

如图1所示,一种断电时云系统的结构,本地数据中心拥有物理机、物理机和紧急备用电力(UPS等),远端数据中心(公有云等)提供备用虚拟机服务。当灾难或断电情况发生时,本地数据中心对本地资源数和虚拟机持续性所需时间、收益进行评估,运行云系统持续服务调度算法,借助迁移或重定向到远端数据中心实现服务持续性。其中,服务所需时间根据不同情况进行评估。

如图2所示,断电情况下,虚拟机维持持续性所需时间可由以下不同情况进行评估:当选择本地执行完时所需时间由虚拟机本地迁移和任务执行所需时间确定;当需要重定向到远端数据中心时,如果远端已有对应的虚拟机则所需时间由重定向时间确定,而如果远端无对应的虚拟机,则通过区分新建虚拟机、建虚拟机且迁移数据、移植虚拟机三种子情况确定所需时间。

如图3所示,一种断电时云系统提供持续服务的调度算法,包括如下步骤:

(1)初始化k=1,

(2)当且时计算如果则进行Ak=REVENUEBUNDLE(V,(J\Sk-1)≤t,激活一台新的物理机PM来运行Ak中的虚拟机VMs,令Sk=Sk-1∪Ak,k=k+1,判断是否剩余能量充足以继续循环激活新一台PM或结束;

(3)计算令如果Sk中的收益比大,则返回Sk的收益;否则,返回中的收益;其中,J为数据中心断电前运行的虚拟机的集合;V为单个物理机PM的资源数;sj为第j台虚拟机所需要的cpu资源大小;dj为第j台虚拟机的截止时间;J≤t为虚拟机集合J中满足dj≤t的集合;pj为第j台虚拟机在截止时间前运行完成所带来的利润;T为数据中心供电恢复的时间;I为数据中心中物理机的集合;U为数据中心中断电后可供使用的紧急供电总量;Ak为在第k轮迭代中被分配的虚拟机子集;Sk为前k轮中已被分配的虚拟机集合,即Sk=U1≤i≤kAi;为算法中,对于满足给定截止时间下的剩余未被分配的虚拟机子集中,满足给定资源容量上限并使所获得收益最大化的子集合; 为算法中,单位时间内中收益最大化的截止时间;为在容量V下单个物理机下分配物理机集时能得到的最大收益;为在容量V下单个物理机下分配物理机集时达到最大收益的物理机集合。

假定有t个单位的通电时间,在[0,t)区间内从J中选择多个虚拟机在单个容量为V的物理机上运行,定义是最终期限满足dj≤t的虚拟机的集合,只有最终期限不大于t的虚拟机能够在这样一个物理机上运行。因此,只需要考虑J≤t。

从已得的集合找到一个虚拟机的子集,该集合满足总收益在被选择的虚拟机的总资源需求不超过V的限制条件下最大化。已得一个虚拟机集合和容量V,使程序procedure返回需求的子集,同时为最大收益。定义是在v容量前提下只使用前j个虚拟机的最大收益。收益当第j个虚拟机没有被选择的时候等于或者是当第j个虚拟机被选择的时候等于由此,递归函数是:

通过编译执行编译rev(n,V,J)的时间复杂度是O(nV)。一旦需要,能够更进一步通过将它缩放到δV移除值V的时间复杂度的依赖性来达成收益至少(1-δ)rev(n,V,J),在误差范围为δ的条件下使用运行时间。

为了解决这个关键子问题,只需要调用程序REVENUEBUNDLE(V,J≤t),这里的J≤t是 截止时间满足dj≤t的虚拟机集合。

在上述方案的基础上解决有大量物理机的CSC问题。激活一个物理机来运行多个虚拟机,这样能够高效地利用资源容量并能首先满足通电时间的使用效率,然后在满足通电时间约束的条件下迭代地激活虚拟机。

在有了REVENUEBUNDLE算法的帮助下,已知区间[0,t),计算最大收益rev(V,J≤t)。第一批虚拟机在所有可能的t∈[0,T]条件下达到最大值接下来,这个算法迭代地找到剩下的虚拟机。

这个算法的具体设计在BRP有展现。这个算法迭代地选择虚拟机的一个子集,并为了他们激活一个新的物理机。设Ak为分配在迭代k和Sk=∪1≤i≤kAi上的虚拟机子集。在迭代k中,该算法调用程序REVENUEBUNDLE(V,(J\Sk-1)≤t)来测试每个时间t∈[1,T]以找到一个时间并设Ak为t满足rev(V,(J\sk-1)≤t)的虚拟机。它激活一个新的物理机来分配Ak的虚拟机,消耗t时间单元来获得收益这个算法迭代地找到接下来的集合Sk+1并在所有的虚拟机都被选择或者所有的时间在增加了集合Sk+1后达到了容量U的情况下结束。当这种情况出现,这个算法返回有更大Sk和之间的收益的集合。此时是在有J个虚拟机输入,U个时间单元,一个物理机的情况下可达到的最大收益。

因为计算云服务持续性问题CSC的最优解是NP-hard的,我们将本发明调度算法称之为CSC-SCHEDULE的执行和简单贪心、最优解的上界进行比较。最优解表示为OPT UB,这是通过将ILP(整数规划)放松成xij∈[0,1]的LP(线性规划)得到的。本发明算法的评估如下所示。

图4(a)表示了在可获得的物理机和通电时间是有限的情况下的虚拟机数量不同对于收益值的影响。在这种情况下,虚拟机的数量n∈[50,500],物理机的数量m=100,通电时间U=5000。

通常来说,这三种种算法的收益都随着虚拟机的数量的增长而增长。当虚拟机数量小于200时,三种种算法的差异是微不足道的。在此之后,本发明算法的收益保持稳定因为通电时间处于瓶颈。平均来说,本发明算法比贪心算法好不少,且收益至多为OPT UB的0.41倍。

图4(b)阐述了当不同的物理机为可利用状态时收益的变化。物理机数量在[50,200]间变化,虚拟机数固定为500。平均来说,本发明算法比贪心算法好不少,且收益十分逼近最优解。

尽管本发明就优选实施方式进行了示意和描述,但本领域的技术人员应当理解,只要不超出本发明的权利要求所限定的范围,可以对本发明进行各种变化和修改。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1