1.自适应功耗管理
高性能计算机系统节能管理调度策略研究必须考虑如下方面:
(1)周期性:分析系统总体负载的变化,发现其中的周期性现象,据此预测负载变化并预留相关资源。一般通过计算负载变化的自相关函数进行分析。
(2)连续性:分析系统负载变化中的连续性特点,在任务开始执行前,通过分析之前几个任务周期中的负载变化趋势预测任务产生的负载,以便配置计算资源。
(3)节点服务器间的通讯开销:在根据任务功耗进行调度时,预测任务间的通讯量,考虑不同节点的通讯能力对任务处理时间的影响。
(4)数据相关性:在科学计算中,任务的处理时间与输入数据与采用的计算方法有很大关系。预测任务处理时间和所需功耗时,应该考虑到输入数据的影响。
(5)节点异构性:管理程序分发任务时,可能会使用一组异构的节点共同处理任务,由于处理能力的差别会造成性能占优节点等待低速节点的情况,增加任务总处理功耗,故需要考虑节点的相互影响。
1.1作业能效的计算
作业的负载除以运行作业时产生的能耗,就是作业的能效。其中,能耗可以通过监测获得,而作业负载包括计算、通信、I/O等方面的负载之和,可以通过计算获取。任务通讯开销主要是指在并行计算时的节点间通讯需求,与应用相关。例如,石油行业计算任务在数据输入和最后结果汇总整理阶段通讯量很大,在计算过程中各节点通讯量较小,而一些工业计算任务在计算过程中通讯非常频繁,对节点间的通讯延迟非常敏感。除此以外,根据应用和输入数据文件的大小也可以对负载进行估算。
1.2获取周期性
并不是所有作业都有周期性,对于负载均衡类应用程序,时间周期性较为明显,需要根据负载变化情况确定时间周期。为了快速得到周期的长度,可以通过各峰值间的时间间隔来估算。过程如下:1)确定需要分析的时间段,例如过去一周;2)确定时间周期的上限M,例如两天;3)选择N个极限值,N应该是时间长度的整数倍,例如14(7×2)个最大值;4)取任意两个极限值的时间间隔m,计算离散自相关函数:R(m)=1N∑N-1n=0s1(n)s2(n+m),0≤m≤M其中,R越大则周期性越强,s代表任务负载,N代表取样数量。如果R的最大值大于阈值,则使用相应的m作为周期长度;5)根据周期长度预测负载变化。当同一任务连续出现时,需要分析连续性因素,根据之前该任务运行时的负载变化趋势,预测当前任务产生的负载。例如,最近任务周期的负载为100,在最近5个任务周期,负载的最大相邻周期间波动为20,则当前周期开始的任务负载为120(100+20×100%),据此计算任务的功耗和运行时间并为之分配资源。
1.3时限控制
时限是从用户角度分析问题,考虑任务的紧迫性,通过调整节点运行速度,在满足需求的前提下降低功耗。时限可以由用户指定,也可以由管理程序自动选择,最优化运行时间和功耗,过程如下:1)预测任务产生的负载S;2)计算任务在编号为1的节点运行时间T1和编号为2的节点运行时间T2;3)计算任务在不同节点运行产生的功耗P1和P2;4)选择功耗较低的节点运行任务,有可能出现T1>T2,但P1<P2的情况,此时尽管节点1运行速度较慢,但由于其功耗低,因此更适合运行该任务。
2.基于遗传算法的自适应功耗调度策略
作业调度问题可描述为:高性能计算机拥有M个节点,作业调度队列中有N个任务,怎样分配方案可以达到最高能效比?本文采用了基于遗传算法的自适应功耗调度策略。遗传算法是模拟生物在自然环境中的遗传和进化过程而形成的一种自适应全局优化概率搜索算法。它将问题的求解表示成染色体的适者生存过程,通过染色体群的逐代不断进化,包括复制、交叉和变异等操作,直到满足一定性能指标和收敛条件终止,来求得问题的最优解或满意解。
3.性能评价
我们对PBS+Maui作业管理和采用基于遗传算法的功耗调度策略的作业管理进行了对比测试。对同一组作业分别采用上述两种方法测试其作业响应时间、作业最大响应时间、系统吞吐率、系统能耗等指标。PBS+Maui采用Machineprio调度算法,即根据系统所有节点的配置,从主频、内存、硬盘、网络带宽等方面对节点性能进行评价,得出相应的节点性能优劣指标,以此评价节点优先级。调度时,每次根据作业需求,找出能满足作业需求的优先级最高的节点,将其作为该作业运行节点。在对目前不能运行的作业预约后,对之后的作业进行扫描,在不影响预约作业执行的情况下,将其回填到预约作业执行之前执行,以提高系统利用率及系统性能。
基于遗传算法的功耗调度策略,根据过滤后的大作业构建初始种群,每个基因包含作业编号、作业运行的节点服务器和使用的内核数量、作业开始运行时间等信息;评价每个作业的能效比并根据交叉概率选择需要进行交叉的个体,对个体进行交叉操作,对每个基因中的节点进行能效评价。每个节点被该基因保留的概率是该节点的能效比除以该基因所有节点的能效比总和,能效比越高的节点被保留的概率就越大,找出相对较优的可以使系统能耗最小的作业序列进行提交。
定义10个不同大小作业,构建作业序列,对测试中使用的作业进行多线程算术运算,线程数量可控,每个线程可以将一个内核的利用率提升至100%,通过线程数量可以控制节点的CPU平均利用率。基于PBS+Maui调度运行5组测试,基于遗传算法的功耗调度运行一组测试,测试数据如表2所列。5组PBS+Maui测试结果均值与基于遗传算法的功耗调度测试结果对比如图4所示。可以看到,基于遗传算法的功耗调度与PBS+Maui的作业调度相比,平均响应时间减少14.96%,最大响应时间减少19.51%,作业吞吐率提高13.29%,运行时间减少9.85%,节能9.67%,具有明显的优势。