(2)
2.3 整个系统的能耗
根据2.2易知:整个系统的能耗就是所有的服务器的消耗的能量,则整个系统能耗为:
(3)
3 算法实现
在第2部分,我们已经知道我们所要解决的问题就是要将MapReduce任务所对应的虚拟机按照某种算法映射到物理服务器上,从而使系统的整体能耗尽量得到最小化。所以在这一部分我们主要考虑有关虚拟机放置的算法。
3.1 虚拟机放置的空间布局
首先,考虑虚拟机到物理机的空间布局问题:怎样放置Map/Reduce任务的虚拟机才能防止利用不充分,才能最大限度地减少资源浪费。比如说一个云运营商可能会将两个或多个资源需求(CPU,内存,外存)互补的虚拟机放置在同一个物理机上,才能获得较高的资源复用度。
在文献[8]中,Michael Cardosa等学者针对虚拟机放置的问题,首先提出了一种Recipe算法。该算法通过逐步考虑所有可能的虚拟机布局配置而穷举了所有可能的布局组合,并根据它们的空间效率从大到小排成一队。然后又提出了一种Recipe-Based布局算法,该算法从预先计算好的Recipe排名列表中逐个的选取一个虚拟机组合,如果虚拟机池可以满足该组合,就将这组虚拟机放置到同一物理机上;否则就选择下一个虚拟机组合。
3.2 虚拟机放置的时空权衡
尽管一个Recipe-Based布局算法可以获得较高的空间匹配度,但如果放置到同一台物理机上的虚拟机的运行时间有很大差别的话,那仍然会造成很多的资源浪费。因为尽管该算法是以一个空间利用率很好的分配开始的,但是随着任务的执行,有的任务过早结束,就会在其他任务以后的运行时间内让物理服务器的利用率大大下降。
例1.考虑图1.a所示的布局:三个MapReduce任务J1,J2,J3,其中J1需要两个VM1类型的虚拟机,J2需要两个VM2类型的虚拟机,J3需要两个VM3类型的虚拟机。而VM1类型的虚拟机消耗服务器物理资源的40%,VM2类型的虚拟机消耗服务器物理资源的30%,VM3类型的虚拟机消耗服务器物理资源的20%。一个空间最优化的算法会分配两个物理机,每一个物理机上分别分配这三个工作所对应的一个虚拟机,如图1.a所示。然而,假设基于工作特性和所给的VM分配,工作J1,J2,J3将分别在10,50,100分钟的时候结束。在这个例子中,10分钟后,工作J1(和它所对应的虚拟机)结束,这样就会让服务器以50%的利用率继续工作。50分钟后,工作J2完成,让服务器以20%的负载再运行50分钟直至工作J3完成,然后才关闭服务器。这样服务器总共的工作时间为200分钟。
例2.和例1一样的情形,一个时间平衡的放置算法将会分配三个服务器,每一个运行一个工作所对应的两个虚拟机,如图1.b所示。在这个例子中服务器1会在10分钟后关闭,服务器2在50分钟后关闭,服务器3在100分钟后关闭。这样服务器总共的工作时间为160分钟,这个时间是低于例1中的空间最优放置。但是一个纯粹的时间平衡算法会让服务器严重的利用不充分,因此也导致资源浪费。 基于能效管理的云计算资源调度模型及算法(3):http://www.youerw.com/jisuanji/lunwen_1773.html