Page 129 - 《软件学报》2020年第10期
P. 129

王康瑾  等:在离线混部作业调度与资源管理技术研究综述                                                      3105


             节点层混部作业资源管理.混部作业资源管理须:(1)  为作业的运行控制资源供给,在满足作业资源需求的
         同时减少作业间的性能干扰;(2)  根据作业运行状况预测其资源需求并做出分配策略.前者涉及到操作系统和
         硬件架构的资源隔离技术,后者则涉及资源动态分配算法.

         2.2   性能干扰模型
             性能干扰模型就在离线混部作业的运行环境对作业性能的影响进行建模,以预测在动态负载、资源竞争及
         干扰模式等条件下的作业性能,为集群层面混部作业调度和节点层面混部资源管理提供指导.性能干扰模型的
         形式化描述由式(1)给出,式(1)代表作业的性能模型,性能模型的输入包含 4 部分:作业当前的负载 load、作业当
         前所面临的来自其他作业的资源竞争压力 pressure、作业当前的资源供给 res、作业运行的硬件架构 hw,输出
         则为作业 j 在当前运行环境下所能达到的性能 pf.
                                              j
                                        pf=Pref (load,pressure,res,hw)                        (1)
             性能干扰模型的输出代表了作业的性能,但在线离线作业通常具有不同的性能指标,例如,在线作业的性能
         评价指标通常是请求的响应时间(response time,简称 RT),离线作业的性能评价通常是作业的运行时间或作业
         吞吐率等指标.上述指标与作业的具体逻辑相关,可以直接反映作业真实的性能状况,因而被多个研究工作采
         用,如文献[13,31−34].但是获取作业级别的性能指标需要与具体应用对接,具有较差的可迁移性.并且,在公有云
         环境或大规模数据中心中,由于作业的黑盒性或隐私条款,获取作业级性能指标并不可行,因此不少性能干扰模
         型采用了系统底层的性能指标作为作业的性能指标,如描述作业在每个 CPU 时钟周期可执行的指令数量
         IPC(instructions per cycle)或者 CPI(cycles per instruction)、MIPS(million instructions per second).作业间的性能
         干扰可引起上述指标的变化,例如一个在线作业的缓存空间被离线作业替换掉后,后续的指令在执行过程中发
         生了缓存缺失(cache miss),导致执行访存指令所需的处理器周期数增加,导致 IPC 降低.底层性能指标由于具有
         通用性强、方便获取等优点,被广泛用于性能干扰模型中,如文献[12,35−37].
             性能干扰模型的第 1 个参数 load 表示作业当前的负载,对于在线作业的负载表现为当前请求并发数,如
         RPS(requests per second)和 QPS(queries per second),而离线作业的负载则与作业的输入数据规模相关.性能干扰
         模型的第 2 个参数 pressure 代表作业当前面临的资源竞争压力,即作业所遭受的性能干扰,目前关于资源竞争压
         力并没有统一的量化标准.文献[14,35]采用了一个对性能敏感的程序(称为 reporter 或 ruler)的运行时间并将其
         运行时间作为 pressure.文献[32,33]则使用当前的内存带宽使用量作为 pressure.文献[38]则引入了服务内部的
         队列长度作为 pressure.第 3 个参数 res 代表当前分配给作业的可用资源,由一个向量表示,可包括 CPU、内存、
         Cache 在内的多种共享资源.不同的性能干扰模型由于面向的场景不同,在参数的取值范围上有所不同,如面向
         异构集群的性能干扰模型需要在 hw 参数上具有多种取值,如文献[39,40],而面向同构平台的性能模型的 hw 参
         数则为定值;面向恒定作业负载场景的性能干扰模型的 load 为定值.
             建立性能干扰模型的过程可分为两步:(1)  数据获取;(2)  模型构建.建立性能干扰模型的第 1 步是获取性能
         干扰数据,即获取数据集 D={d 1 ,d 2 ,...,d n },d={load,pressure,res,hw}.在数据获取方法上,存在基于干扰注入的数据
         获取方法和基于历史监控数据的数据获取方法两种.
             基于干扰注入的数据获取方法的基本思想是在作业运行时向作业运行环境中注入性能干扰,通过不断改
         变干扰的强度从而获得该作业在不同干扰下的性能变化.注入干扰的方法是在作业运行环境中运行一个干扰
         者,干扰者通常是精心设计的一个资源密集型程序,可与作业竞争在多种共享资源上产生资源竞争.例如:作为
         作业运行中最主要的资源——CPU 时间片,其上的干扰可以使用大量的循环语句来产生;内存子系统是竞争最
         激烈的资源之一,由于内存子系统具有层次化的特点,对于不同层次的资源竞争可以通过读写不同大小的数组
         来产生;文献[41]总结和列举了 15 种干扰源并提出了可在多种维度上产生性能干扰的工具 iBench.使用 iBench
         作为干扰注入工具的研究工作有文献[39,40].文献[14,32,33,35]专注于内存子系统上的干扰,使用了可产生内存
         带宽干扰的干扰者用于获取内存带宽干扰和作业性能的变化关系.文献[42]研究了超线程之间由于共享计算单
         元而引起的性能下降,并在性能模型中考虑了来自相邻超线程的干扰.基于干扰注入的数据获取方式理论上可
         以获取作业在多种性能干扰下的性能数据,但其局限性在于:(1)  造成干扰的资源类型多,采样空间大,因此获取
   124   125   126   127   128   129   130   131   132   133   134