选择可迁移服务器时需要遵循两个条件:
(1)尽量保证每台宿主机中不同类型的虚拟机分布均衡,这样可充分利用服务器的各种资源,提高资源利用率;
(2)尽量不迁移到同一机架、同一电源上的宿主机,节省耗能和提高系统稳定性。
集群中不同节点服务器的硬件配置通常是异构的,每个节点上运行的操作系统和负载任务也各不相同。同一台服务器在不同的CPU频率下运行不同类型的负载时,它的能效比也是不同的[28],因此,对于集群中的每一个服务器,通过分别运行计算密集型、内存密集型和混合型工作负载来寻找其最佳能效比下的频率点。
在计算一个服务器的能效比的同时,还可以通过相关命令获取服务器当前运行状态,判断服务器是否处于超载低能效状态,从而确定是否需要迁出其中运行的虚拟机。
对于一个正在运行的待迁移的虚拟机,首先要确定它的负载类型,然后才能选择能效最优的目标物理主机,因此需要对虚拟机的负载特征进行识别。由于在实际运行一个负载时,不可能只耗费CPU计算资源而不需要内存资源,我们划分一个标准如下表,来确定待迁移虚拟机属于何种类型。当然,表7-1对于资源利用率水平的划分是依据经验值的基础上进行的,随着未来研究工作的完善,调度器可以根据实际负载进行学习和调整。
表7-1 虚拟机负载类型划分
(www.xing528.com)
实现上,根据sysstat软件包可以获取物理机CPU、内存和I/O等硬件资源利用率,通过虚拟机监控器的特权指令或者专有命令可以得到当单个虚拟机的CPU、内存利用率、I/O等系统资源占用情况等数据指标,通过这些指标,可以确定虚拟机是否触发迁移条件。
给定一个待迁移虚拟机VM,控制节点的调度模块首先要识别VM的负载特征,然后转入计算分析模块,根据负载类型计算过的按能效值降序排列的拥有空闲资源的计算节点集合,按照迁移之后,目标宿主机能优先达到能效峰值点或者能效比更高的优先级来选择,如果能够预分配成功,则调度模块发出调度指令,将待迁移虚拟机迁移到目标宿主机,完成调度过程。这里需要注意的是,负载类型不同,各节点的峰值能效比不相同,同一负载类型,在不同频率下,服务器的峰值能效点也不相同,这可以通过实验得到验证,后面的实验分析也有说明。在执行调度之前,最好先把所有节点在不同类型不同频率下的峰值能效点计算出来。
详细的算法描述如算法2所示:
如果是初始条件是一个待迁移的虚拟机VM序列,本算法也同样适合,追求尽可能高的能效比,是算法的最终目标,这也在实验结果中得到验证。
在实际控制节点内部,整个调度过程由以下几个模块实现。首先是监听模块,负责收集整个集群各节点的实时功耗,CPU和内存利用率以及I/O和存储设备的信息。然后是计算分析模块,利用监听模块收集到的数据信息,计算各节点以及其内部虚拟机的运行状态,分析是否有节点超负荷运行(这里通常会设置一个上限阈值),是否有虚拟机触发迁移条件,如果有则进入调度模块。调度模块首先为待迁移虚拟机寻找合适的目标宿主机,然后向待迁移虚拟机的原宿主机发出迁移指令,由虚拟机监控器完成虚拟机迁移。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。