算法设计与分析2.doc
上传人:sy****28 上传时间:2024-09-15 格式:DOC 页数:3 大小:41KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

算法设计与分析2.doc

算法设计与分析2.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

PAGE\*MERGEFORMAT3弹性云计算的实现以及算法一、弹性云计算的概念弹性云计算最早是亚马逊提出的概念,弹性云计算针对的是云应用本身的一种动态的扩展,在云应用运行期间实现支撑云应用的虚拟机实例个数的动态增加或者减少,通俗点就是在负载较高的时候启动较多的实例,负载较低的情况停止一些实例。你可以看到资源的使用和整体的性能。你可以让你的应用软件在流量和系统负载的基础上随需进行扩展。你也可以在多重网络服务器上分配输入的流量来实现高可用性和更好的性能。你也可以利用云上提供的功能强大的基础架构优势来研发应用软件,同时你也可以减少系统管理员管理和运作的负担。弹性云计算为云应用实现了真正意义上的资源按需分配。弹性云计算并不是简简单单的凭空复制,对于应用服务来说,增加服务器个数只是增加资源计算能力,还需要传统意义上的“集群”技术将它联合成一个整体对外提供服务。对于IaaS来说,它不会因为特殊的业务规则对应用进行限制,导致应用做相应的更改,这违背了它产生的本意,它更多的是关注整体行为,无论什么应用都可以在其运行,并享受它一致各种服务。由此可见弹性云计算中对应用部署所需的虚拟机是预先创建的,并由应用实施者通过内网组建一个集群,这些虚拟机放入到一个pool中,按照策略进行启动所需的虚拟机实例,说白了IaaS管理服务只关注池里面有多少虚拟机,然后按策略停止或者启动这些虚拟机。二、弹性云计算实现首先云用户通过管理portal,可以定义一个pool,将需要实现弹性云计算的虚拟机加入到pool,原则上是一个应用对应一个pool,并设置弹性云计算策略,主要是IaaS管理服务调度算法涉及的参数有关,如下所示:Poolmaxsize:这与云用户加入的虚拟机个数有关;Poolminsize:该值缺省为1,表示最小运行情况下的虚拟机个数;Highloadlimit:表示整体运行负载超过该值时,就需要投运新虚拟机;Lowerloadlimit:表示整体运行负载低于该值时,就需要停运虚拟机,将虚拟机放入到闲置的pool中。Stepstartcount:该值缺省为1,表示每次投运的个数Stepstopcount:该值缺省为1,表示每次停运的个数然后对于云用户来说还需要一个动态监控的界面,监控该pool动态变化。对于IaaS平台来说要实现弹性云计算,首先要实现性能监控模块,对池中的投运的虚拟机进行性能监控,根据监控数据,实时的cpu利用率计算整体运行负载,然后按策略进行调度。下面我讲详细的讲解弹性云计算算法。三、弹性云计算算法假设前提:闲置池:freePool={V1,V2,……}投运池:usedPool={…}池中虚拟机:V1,V2,……物理机:P1,P2,……,Pn按照物理机性能设置每个物理机权值:LD1,LD2,……,LDn平均化计算周期:THighloadlimit:HLLLowerloadlimit:LLL弹性计算资源调度周期:T1算法描述:1、平均法去掉瞬时尖峰值计算所有物理机,以及虚拟机某段时长的平均cpu利用率;注:平均法要防止因为瞬时峰值引起云计算内部频繁调度,导致云计算内部的“颤动”计算方式如下:每个资源(物理机或者虚拟机)拥有一个队列,保存T周期的m个性能数据,每次新的监控数据cpu利用率进入后,将最久的监控数据移出,将新数据加入到队列里,计算队列中剩余值,计算公式如下:资源负载=(SUMi-1+DATAnew-DATAlast)/m;注:如果队列中没有保存一个T周期的数据不做计算,不列入本次计算范围内。2、计算所有投运虚拟机的实际占有负载:计算方式:虚拟机的性能监控数据代表的相对计算能力,因此需要通过物理机性能数据折算成绝对的负载值,计算公式如下:其中Vcpu表示虚拟创建时cpu个数;表示虚拟机相对负载;该计算公式表示该物理机上运行m个虚拟机3、选择一个需要调度的pool,综合虚拟机负载计算整个投运的所用虚拟机平均负载:其计算公式如下:m表示该pool中已投运的虚拟机个数。4、计算该pool中是否需要投运或者停运:nPool整体负载〉HLL,表示需要投运新的虚拟机,从freepool中选择Stepstartcount个虚拟加入到待启动队列中,如果freepool中虚拟机个数不足,则将剩余的全部取出。nPool整体负载=Poolminsize,则从usedpool中选择Stepstopcount个负载最低的虚拟机加入到待停止队列中;如果Pool中虚拟机个数-Stepstopcount<Poolminsize,则从usedpool中选择Pool中虚拟机个数-Poolminsize个负载最低的虚拟机加入到待停止队列中;n否则:该虚拟机不做任何调度