面向大电网在线实时仿真的通信敏感资源调度①
2022-11-06袁雨馨唐宏伟赵晓芳严剑峰周二专
袁雨馨 唐宏伟 赵晓芳③ 严剑峰 周二专
(*中国科学院计算技术研究所 北京100190)
(**中国科学院大学 北京100049)
(***中国电力科学研究院 北京100192)
0 引言
大规模电网仿真计算是进行电力系统稳定性分析的重要手段,通过对大规模电力系统的全数字建模与仿真,可以掌握电力网络及各种动态元件的稳态、暂态和动态特征,进而保证电网安全稳定运行[1]。传统大电网数字仿真技术为基于离线数据进行仿真计算,采用电网生产运行提供的历史数据进行潮流、短路电流与暂态稳定等仿真分析,计算时间长、计算量大,对失稳状况只能进行事后分析处理,无法对电网在线运行提供辅助决策。目前,随着电网实时数据采集精度和效率不断提升,利用在线运行数据进行实时仿真甚至超实时仿真成为了可能,在线实时仿真能够在短周期内快速评估其安全状况及变化趋势,并给出辅助决策控制策略,为事故预警提供更灵活的支持[2-4]。
针对具有泛在工业物联网属性的现代电网,国家电网提出了智能全景电网[4](intelligent panoramic grid,IPG)的概念,在线超实时机电-电磁混合仿真(hybrid electromechanical and electromagnetic transient simulation,TS-EMT)是其核心计算引擎之一。混合仿真不仅实现了在多核节点及集群上并行执行以提高效率[5],还接入了来自于智能电网调度技术支持系统(D5000)[6]的在线实时数据流,实现了同步调短周期并行计算。在集群环境下,仿真任务执行效率受到资源和通信的约束,任务在执行中一旦遇到资源分配不足或通信开销过大的情况,极有可能导致执行超时,从而影响结果判定。因此,将任务部署到合适的工作节点上并分配合理的资源,成为了大电网在线仿真能否实现实时性目标的关键之一。
本文的主要贡献如下:(1)对大规模电网的机电-电磁暂态混合仿真任务进行了特性分析,总结出了资源利用率规律,即仿真任务具有短时运行、资源需求较稳定、对通信敏感较高的特点;(2)提出了一种通信敏感的组调度框架(communication-aware gang scheduling framework,CGS),采用集中式两阶段调度架构,在不中断在线流运行过程中对任务进行采样和调度,最大程度保障在线实时任务运行的稳定性;(3)提出了一种CGS 调度算法,实现了对任务多资源的主动采样以预测需求,并基于通信图对任务进行进程级的组调度[7](gang scheduling)。实验表明,CGS 降低了37%的进程间通信开销,减少了19%的资源碎片,平均提高了34%的集群资源利用率。
1 相关研究
目前,任务管理与资源调度计算平台[8-10]大多是基于资源请求的,而实际中资源需求与执行复杂度和集群硬件密切相关,使得提交的请求往往难以准确提出资源需求,导致集群资源碎片化严重、利用率较低。基于大规模电网实时仿真这一特定领域,CGS 提出了一种基于采样的资源调度方法,类似于Sparrow[11]的批量抽样,根据实际运行数据不断修正调度策略。
现有的调度方法由面向约束机制组成。Google Borg[9]考虑到任务的优先级特征,设计了任务排序算法和低优先级任务替代机制。YARN[8]最近进行了扩展,支持多种资源类型、优先级、抢占和高级接纳控制。Apache Mesos[10]为异构框架实现了一种基于offer 的方法,主要采用主导资源公平(dominant resource fairness,DRF) 算法[12]实现了公平性。Sparrow[11]采用队列模型,提出了一种批量采样方法,其目的是考虑优先级、公平性、异质性和数据的位置性。Tetris[13]支持完成时间敏感任务的多资源分配。CGS 针对在线调度,提出了一种通信敏感的任务多资源分配策略,考虑了任务进程级别下的通信相关性,最大化满足进程间的亲和性约束。
2 电网在线实时仿真概述
2.1 电网在线实时仿真介绍
本研究针对的是大规模电网的机电-电磁暂态混合仿真(TS-EMT)任务的调度问题,TS-EMT 是描述电力系统物理特性的解决方案[14-15]。机电瞬态稳定性仿真(electromechanical transient simulation,TS)主要用于处理大型电力网络,仿真速度快,而电磁瞬态仿真(electromagnetic transient simulation,EMT)则在较小的范围内对电网进行高时间分辨率仿真。混合仿真是TS 和EMT 的统一,可以利用TS仿真的速度模拟非常大的网络,同时在关键部件上提供EMT 仿真的精度[16]。具体而言,混合仿真任务包括TS 和EMT 两个过程,并结合二者优势进行综合分析。
本文讨论的每个仿真任务负责对电网拓扑结构中的不同故障进行TS-EMT 混合仿真,任务内的进程间通信基于消息传递接口(message passing interface,MPI)协议。文献[17]总结并优化了大规模电力系统的并行仿真算法,指出电网可以被分割成多个子网,并以联络线相连接,每个子网由其计算进程(COMP)计算,而管理计算和计算联络线、汇总结果和I/O 进度的过程被称为控制进程(CTRL)。
文献[18]阐述了电力系统实时仿真的关键是仿真执行时间小于等于求解模型方程的仿真时间步长。为了实现在线实时仿真,除了自身的计算执行时间外,由调度(如等待更多资源或通信)造成的延迟决定了任务处理的延迟。
仿真任务由应用和配置组成。应用指的是仿真计算逻辑,配置包括仿真规模、仿真步长、电网分割策略、故障类型等仿真参数。影响计算的因素有很多,例如不同的电网分割策略也会导致不同的计算量,不同的电网故障类型相应的计算量也会有所不同。一般来说,那些具有相同应用和配置的任务可以被视为相同的任务,在不同的潮流数据下,其执行时间和资源利用率都是相似的。
2.2 机电-电磁暂态混合仿真任务特性分析
任务执行环境如表1 所示,以表2 中列出的3个典型故障下的TS-EMT 混合仿真任务为例。这些任务相互独立,代表了不同故障下的仿真,数据来自2019 年国家电力调度通信中心,覆盖了6 个地区(即华北、华东、华中、西北、西南、东北)的电网。3个任务的仿真步长均为10 s,每个任务中的每个过程按照执行时间采样约100 次。
表1 分析环境
表2 TS-EMT 任务相关信息
图1 中对应任务的3 张图描述了不同任务的整体资源使用情况。左边的子图展示了每个任务的中央处理器(central processingunit,CPU)使用率,右边的子图展示了这段时间内的内存使用率。在所有的剖析结果中,CPU 的利用率都很高,几乎达到了n×100%(n为进程数),证实了这些任务是受CPU约束的。同时,内存使用率呈现上升趋势,说明对内存的需求在增加。另外,从3 种情况的对比来看,任务规模越大,所需的计算资源越多。
图1 任务资源利用率采样曲线
为了深入分析内存相关的统计数据,表3 和表4汇总了任务中进程的内存使用情况。在每个任务中,COMP 的变异系数(coefficient of variation,CV)较小,而CTRL 的平均值比COMP 大。原因是由于COMP 需要对网格进行尽可能均匀地划分,所以COMP之间的内存使用量是相似的。而CTRL需要做的其他工作包括聚合、通信、边界接触线的计算等。这个观察结果可以用于生成大量的模拟实验数据,使其更贴近实际生产环境。
表3 TS 进程内存分析
表4 EMT 进程内存分析
由于仿真是以流式数据驱动运行的,因此需要观察多个截面数据在一段时间内的资源使用情况。任务2 选取连续的电网实时潮流数据集进行多次执行,截取部分结果绘制在图2 中。从图2 中可以发现,不同的数据下多次执行的资源需求曲线差异很小,而且在资源充足的情况下,同一仿真任务中每个执行的完成时间都是相似的。因此,在线调度框架在流式过程中可以对资源使用情况进行采样,作为需求预测。
图2 任务2 资源利用率采样曲线
另一个特性分析是为了表现进程间的通信关系。文献[19]阐述了EMT 网络分区的拓扑方案,该方案是由子网的相互连接形成的。图3 通过分析任务3 的通信关系得出进程间通信热力图,横纵坐标均为进程号,图中点代表横向到纵向进程的通信数据量,颜色越深代表进程传输的数据量越大。该图表明,通信强度是不平衡的,进程间通信的差异化使得进程聚集成组成为了可能。
图3 任务3 的通信热力图
由上文分析可知,仿真任务具有短时运行、资源需求较稳定、对通信敏感较高的特点。根据这些特点,面向大电网的在线实时仿真调度必须做到的就是保障在线实时运行效率,并解决资源分配的准确性,提高集群的资源利用率,减少碎片化。
3 在线调度问题描述
为了解决多资源上的在线调度问题,本文提出了通信敏感组调度框架(CGS)。本节介绍CGS 中的调度模型,作为在线调度的形式化表示。
3.1 定义
假设一个集群有N个资源容量为的异构节点,节点h的容量可以由一个d维向量表示,如果节点没有某些类型的资源,比如图形处理器(graphic processing unit,GPU)或特定的硬件,向量中的元素可以用0来填充。
一个仿真任务由n个MPI 进程组成,资源需求被写作,任务中进程p的资源需求可以由一个d维向量表示。一般来说,每个进程都会被绑定在一个CPU 核心上,内存则会按需分配。任务的需求则是所有进程资源需求的总和,即为D=
根据式(1)可知资源向量可比性,从而可判断进程p的资源向量是否可以被节点h满足。具体而言,当所有维度的进程需求小于节点可用容量时,可以判断节点能够满足该进程需求。换言之,如果有一个维度的资源不能满足任务的需求,资源匹配就会失败。
当进程数n >1 时,进程间的通信基于MPI 协议。计算进程pj负责仿真分网拓扑下的子网j,并向邻居集set(pj′)、pj≠pj′传输数据。任务进程间通信集的拓扑结构描述为一个有向无环图G=(V,E),其中V是n个顶点的有限集,对应n个进程,E⊂V×V是一个有定向边的有限集,代表顶点之间的通信关系。图G满足如果{j,j′}∈E,则j∈E∧j′∈E。
假定任务可将n个进程划分为b1∪b2∪…∪bk这k个划分,并满足约束bl∩bl′=Ø,l≠l′和=V,那么每个划分b就可以部署在一个节点上,不同划分就可以部署在不同节点上,从而实现任务的跨节点调度。每个划分均为多个进程的集合,称为进程组(gang)。
当定义了任务划分后,边{j,j′} 的通信开销ω({j,j′}) 如式(2)所示,与进程间的通信长度Lj,j′(bits)、带宽B和在不同节点下的性能损耗ε∈(0,1) 有关。
通信图G刻画了进程间的通信关系。为简单描述,对图的所有边和顶点引入二元决策变量ej,j′,对于每条边{j,j′} ∈E,变量取值为ej,j′∈{0,1},当{j,j′} 为割边时ej,j′=1,否则ej,j′=0。由于位于同一节点上的连通性边缘的通信开销可以忽略,因此总开销COMM是任务划分的割边成本。
由于任务进程采用MPI 通信协议,其中有较多同步操作,降低进程组的割边成本有助于减小由于通信造成的同步等待时间,从而提高任务执行的效率。
3.2 调度模型
调度负责将在线提交的任务与最多个节点进行匹配,最小的调度单元是进程,它只能分配给一个节点。调度的主要目标是尽可能减少有负载的节点数量,更好地降低能耗,实现绿色节能计算,并且空闲的节点可以作为备用节点,以实现高可用性或为其他计算提供服务。除了这个目标之外,还要考虑到多节点的通信开销。
调度模型可以形式化为多维装箱问题[20](multi-dimensional bin packing problem,MD-BPP),它是经典的一维装箱问题的推广,是NP 难问题。在多资源调度的基础上,在多节点上调度一个任务的多个进程是复杂的,这也是TS-EMT 混合仿真任务调度的难点。为了解决这些问题,调度模型采用整数线性模型将MD-BPP 解与图划分策略相结合,其决策变量如下。
(1)xij:若进程i被分配到节点j上,则xij=1,否则xij=0。
(2)yj:若节点j有任务进程在运行中,则yj=1,否则yj=0。
(3)zib:若进程i在子任务b中时zib=1,否则zib=0。
调度模型的线性整数规划公式可以写为
目标是最小化有负载节点数量和任务划分的割边成本,用式(4a)和式(4b)表示。约束条件式(4c)说明一个任务的任何进程都应且必须部署在一个节点上,而式(4d)说明节点上的进程需求之和不应该超过节点的可用容量,确保资源不会被过度分配。式(4e)和(4f)保证了一个有效的划分,式(4g)保证了每个进程正好分配到一个分区。最后,可以得到一个集合(xij,yj),将任务的所有进程与集群中的节点进行匹配。
4 通信敏感的组调度CGS
本节首先介绍CGS 的体系结构,再具体说明CGS 算法与调度模型,最后介绍了CGS 框架的实现方式。
4.1 CGS 架构
CGS 架构如图5 所示,可归为集中式调度框架,由控制节点上的调度器、资源管理器以及工作节点上的执行器和监控器组成。调度器通过非侵入式采集器收集资源需求,负责调度任务。资源管理器负责检测集群的状态及最新的可用容量。执行器负责任务的全生命周期活动管理,监控器负责记录任务和节点的资源使用情况。架构上将资源管理服务与调度服务解耦,可部署多种不同优先级的调度策略,方便更换策略,增强了灵活性。
图5 CGS 两阶段架构工作流
架构采用了先采样后调度两阶段架构。采样是调度的基础,是为了收集和预测任务资源需求,包括将在线任务部署在采样节点上,以非侵入式的方式持续收集使用情况并估算资源需求。采样工作流程如图5(a)所示。任务由应用程序和一些配置文件组成,将在流式过程中随时提交。提交后,调度器会向资源管理器申请最新的可用容量,再将任务部署在采样节点上。之后执行器开始运行任务,同时监控器来记录任务的执行情况和资源使用情况。在多次采样获得稳定需求后,监控器会将任务资源使用情况报告给资源管理器,然后执行器会清理执行垃圾,为下一次任务采样做准备。
图5(b)展示了调度阶段。详细来说,调度器使用了预定义的调度策略,根据任务需求和集群可用容量运行CGS 算法(4.2 中有更详细介绍),将任务部署在节点上,为所有进程分配一定的资源并进行资源隔离。之后执行器初始化任务,当任务准备就绪,且输入数据接收完毕后,任务会在监控器的监视下执行。一旦任务抛出资源使用异常,监控器就会扩大使用阈值,直到节点上没有资源可用,然后执行器就会清除该任务并予以警告,以免影响其他任务,清除后的任务将会被允许重新提交。此外在任务执行过程中,执行器会与控制节点保持联系。
4.2 CGS 算法
CGS 的一个重要组成部分是组调度的设计,它结合了贪心调度和图划分策略。该算法引用了分治法[21]思想。算法可分为以下3 个部分:
(1) 分解。将任务划分为子任务。
(2) 解决。递归搜索最优节点,直到匹配成功。
(3) 合并。组合子任务节点集得到最终的解决方案。
分治算法判断子问题能否解决的方法是过滤,即找到部署任务的可行候选节点集。如果集合为空,说明目前任务需求不能被任何一个节点满足,那么任务将被递归地划分成子任务,即子进程组。只要候选集不为空,就会结束递归分支。
任务划分意味着必然出现跨节点调度,进程间的通信开销将成为效率的瓶颈。为了降低开销,CGS 利用了图划分策略,如k-way 多级划分算法[22]或其他启发式算法[23]。图划分策略平衡了处理器之间的工作负载,使得通信开销最小化。
CGS 算法利用扁平化匹配策略搜索最优节点以求解MD-BPP,该策略同时考虑了多维资源,以获得一个适应值,表示为SCORE。该值量化了任务与节点的匹配程度,最常见的方法是在Grandl 等人[13]提出的多资源启发式策略,包括余弦相似度、点积、L2距离等。这些方法都考虑了集群中的多维资源,并将任务需求与最优节点进行匹配,CGS 框架并没有限制SCORE的计算方式,可以根据实际测试选择最优的资源匹配计算方案。
CGS 算法递归实现的流程如算法1 所示。
在CGS 算法的形式描述中,前7 行用于筛选出有足够资源的节点(Candidates),并计算出与任务的匹配度。第8 行到第10 行表明,如果有一些Candidates,将其部署在最佳匹配节点上并更新资源。第11 和12 行表明,如果任何节点的可用容量不足,任务将不会被调度。第13 行到第18 行利用图划分将任务分割成子集,并递归地重新调度。
该框架将图划分策略与基于调度模型的匹配策略相结合。CGS 算法中,任务的图划分策略采用kway 多级算法,将通信图中包含m条边的n个进程任务划分为k个子任务,划分图的时间复杂度为O((n +m)×log(k)),递归实现的总时间复杂度为O((n+m)×log(k)×logn)。
4.3 CGS 实现
CGS 包括资源采样和调度2 个阶段。在采样阶段,调度器接收并解析任务信息,包括进程数和一些执行配置,同时会使用性能分析工具如Intel Vtune Profiler[24]收集MPI 进程间通信开销。采样过程被设计成多次重复,直到得到一个比较稳定的值(根据经验通常是3~5 次),为了减少由于资源限制导致的任务失败或超时,可以将进程的内存需求放宽到最大内存的δ倍。
在资源调度方面,调度器会筛选出满足约束条件的节点,并使用优化的资源匹配策略来匹配任务。此外,资源管理器在任务提交或固定时间段内,会触发监控器收集任务需求和可用容量。此外,调度器、资源管理器、监控器和执行器会作为框架的常驻服务运行。
5 实验与分析
为了更全面地评估CGS 的调度性能,而不仅仅局限于2.2 节所述的任务,本文进行了模拟实验。本节首先讨论了实验环境,再评估性能结果。
5.1 实验指标
实验设置了一个大规模节点和一批任务的环境,分别从任务平均划分数、平均割边成本、有负载节点数、集群资源利用率和资源碎片率5 个指标对算法进行比较。为了显示出CGS 调度框架的优势,实验采用了5 种常用的调度策略作为基线算法,包括自适应先到先得[25](adaptive first-come-firstserved,AFCFS)、最大组优先调度[25](largest gang first served,LGFS)、最佳适应算法[25](best fit decreasing,BFD)、主导资源公平算法[12](dominant resource fairness,DRF)与Tetris[13]。实验比较了基线算法与应用了CGS 的算法之间的差异。调度算法均以进程为最小单元进行调度。详细的性能指标介绍如下。
(1) 任务平均划分数。任务划分的数量反映了策略中对任务进程之间亲和力的考虑。划分数量越多,进程被调度的越分散,任务执行效率越低。该指标较低有助于保证任务执行的效率和稳定性。
(2) 平均割边成本。该值表示跨节点的通信开销,如式(2)所示。该开销由边缘切割权重决定,成本越低表明跨节点通信开销越小。
(3) 有负载节点数。该指标衡量的是集群中的负载聚集程度,降低碎片的同时更好地降低能耗,实现绿色节能计算。
(4) 集群资源利用率。该指标会对每个节点的不同维度资源进行加权。式(5)中用于表示节点k在维度i上的资源需求与可用容量之比,式(6)中uk衡量节点k在所有维度中的平均资源利用率。值越大代表资源利用率越高、闲置越少。
(5) 集群资源碎片率。资源碎片率反映了一个节点中资源耗尽而其他资源剩余的硬约束,这种剩余的碎片化导致了资源的浪费,无法再用于任何其他任务。式(7)显示的是节点k的碎片率,式(8)中w衡量的是集群中所有节点的资源碎片程度。
5.2 实验环境
虽然CGS 支持任何维度的资源,但在实时模拟中,其性能主要取决于CPU 和内存资源,记为(Ch,Mh)。本文电网实时仿真环境中,CPU 和内存资源被认为是同等重要的。实验设置了一个由1000 节点组成的集群,其中CPU 和内存容量来自一个截断的正态分布。实验1 探究了不同CPU 和内存下算法的有效性,实验设置了集群中每个节点的CPU 平均值为10~50 核,步长为10,内存范围为300~1500 MB,步长为300,变异系数设置为1.5。实验2 探究不同变异系数下的算法在评价指标体系下的表现,因此本实验重点分析了在CPU 和内存均值分别为30 核和1000 MB 环境下方法的有效性。由于在实际场景中,集群可用容量几乎不可能是完全同质的,因此变异系数从0.5 到3.0,以0.5 为增量,产生6 种不同的集群环境。随着变异系数的增加,资源的异质性逐渐增强。
实验构建了100 个在线任务,模拟的需求是基于2.2 节中的分析结果。实验设置TS 的数量小于EMT 的数量,并随机生成2~200 的进程数量,其中3%的进程被设置为CTRL,其余都是COMP。在所有进程中,CPU 资源需求被设置为1,内存则存在差异。在TS 中,内存是由截断的正态分布产生的(Mean=300,CV=0.1)。在EMT 中,CTRL 中内存需求的平均值为400,COMP 中截断正态分布设置为Mean=30,CV=0.3。此外,通信图是根据相应的任务进程数生成的,边权重设置为0~10。如果一对连接的节点被分割成两组不同的节点,权重将被加到整体的割边成本中。
所有的模拟任务在表1 所述的平台环境中被调度,实验首先对5 种基线算法进行单独实验(称为X),再分别利用这5 种算法计算SORE的方式置入CGS 算法中(称为X+CGS),以评估在CGS 图划分策略与匹配策略相结合的算法下的优势,共8 种策略。实验参数采用k=2,δ=1.5。
5.3 实验结果
实验1 探究了不同CPU 和内存下算法的表现情况,为了方便展示,实验分别选取了CPU 为瓶颈和内存资源为瓶颈时的两种场景展示。首先当固定CPU 而内存以一定步长增长时,各方法在不同指标下的结果如图6 所示,其中未分配数指标表示了由于集群节点资源短缺导致集群无法满足的任务个数,即任务调度失败的个数。图6 中虚线表示基线算法,实线表示应用了CGS 的算法,随着内存的不断增大,CPU 愈发成为了瓶颈资源,使得集群利用率有所下降而碎片率上升。图6 结果表明,CGS 方法在不同内存场景下保持了负载聚集从而降低能耗,使得更多任务得以调度执行,并大幅降低了跨节点通信开销,提高了资源利用率并降低了碎片化程度。
图6 CPU 为10 时不同指标下各方法随内存增长的结果
其次,当固定内存而CPU 以一定步长增长时,各方法在不同指标下的结果如图7 所示。从图中发现CGS 方法在CPU 资源不同时依旧比基线算法有性能优势,尤其是在降低通信开销上。
图7 内存为300 时不同指标下各方法随CPU 增长的结果
在实验2 中,每个指标的结果用分别代表了6种不同的异构环境下的子图表示,每个子图都以柱状图的形式显示。横轴显示的是5 种基线算法,而纵轴则表示性能指标。线型阴影条形图表示基本策略X,点型阴影条形图表示X+CGS 中应用的策略。
图8 说明了所有任务的平均划分数,显示了任务的进程间聚集程度,值越大意味着任务越分散。所有基本策略中任务都相对切分得较为分散,尤其是Tetris 方法。通过CGS 框架的应用,任务按递归方式进行划分,一旦能放置成功就结束划分,最大程度减少了任务的划分数量,保证了任务进程间的亲和力。
图8 任务平均划分数
图9 中,每个子图中的纵轴展示了任务划分的割边成本,代表了通信开销。显然,无论集群环境的异质性程度如何,CGS 均显著降低了跨节点通信开销,至少降低了37%的通信开销(CV=0.5 环境下的LGFS 方法中),最大达到了89%(CV=3.0 环境下的Tetris 方法中)。
图9 平均割边成本
图10 所示的有负载的节点数证明CGS 尽可能将任务调度在较少的节点上,使得节点负载更加紧凑。但在BFD 的调度策略中,任务会被放置在资源最合适的节点上,大幅提升了节点资源的紧凑度。而CGS 框架为了保证任务的亲和性,会尽量少切分大需求任务,这导致了负载节点数相比基线BFD 方法近乎相同,但CGS 是基于基线算法进行的优化,并不会导致其负载节点数大为增加。
图10 有负载的节点数
图11 以带误差条的直方图形式,比较了集群中所有节点的的平均值和标准差。结果表明,CGS 不仅提高了利用率(平均提高了34%),还缩小了标准差,间接证明了集群负载更加均衡。此外采用CGS方法可以更好地利用节点上的闲置资源,使得调度结果更加稳定。
图11 节点利用率平均值和方差
图12 显示了集群中碎片率的平均值。CGS 框架降低了AFCFS、LGFS、BFD、DRF 方法的集群的平均碎片化程度,至少降低了19%的碎片率(CV=2.5环境下的AFCFS方法中),最大达到了81%(CV=0.5环境下的BFD 方法中),这证实了使用CGS 可以降低集群碎片率,并可提高资源多维度间的平衡性。但在Tetris 方法中,由于余弦相似度的多维资源匹配策略使进程能被分配在多维资源最合适的节点上,最大化避免了多维资源碎片化。而CGS 框架优先考虑任务间进程的亲和性,尽可能将任务划分为大组进行分配,会导致一定程度上的资源碎片化。
图12 集群平均碎片率
综合考虑所有指标发现,CGS 方法能够在各种集群资源情况下合理有效调度任务并分配资源。CGS 方法在满足任务资源需求的同时,综合考虑了多维度资源,优化了任务和节点之间的匹配策略,尽可能减少有负载的节点数量,更好地降低了能耗,减少碎片化的同时提高了集群的资源利用率。
6 结论
本文首先对大规模电网的机电-电磁暂态混合仿真(TS-EMT)任务进行了特性分析,总结了资源利用率规律:短时运行、资源需求较稳定、对通信敏感较高。其次,针对大规模电网机电-电磁混合仿真计算的应用场景,提出了一种用于实时电网仿真的通信敏感组调度框架(CGS),采用了集中式两阶段调度架构,在不中断在线流运行过程中对任务进行主动采样和调度,最大程度保障在线实时任务运行的稳定性。最后,本文提出了一种CGS 调度算法,基于通信图的图划分策略与基于调度模型的匹配策略相结合,实现了进程组调度,降低了任务跨节点的通信开销。
通过模拟实验证实,CGS 算法会最大程度保证任务进程的聚合性,与基本策略相比至少降低了37%的进程间的通信开销,保证了任务执行效率。同时CGS 将任务调度在较少的节点上,一方面在保证集群不过载的前提下,提高了节点资源利用率,降低了资源碎片率;另一方面降低了集群能耗,符合当今绿色节能计算的主题。此外,未来可以研究更细粒度的调度优化,如使用非均匀内存访问(non uniform memory access,NUMA)架构优化节点内的通信开销;调度算法方面可以尝试群体智能方式,在在线调度允许的范围内进行全局搜索得到较优解。