Page 316 - 《软件学报》2020年第12期
P. 316

3982                                Journal of Software  软件学报 Vol.31, No.12, December 2020

                                             [2]
             高性能计算平台通常基于 core 分配资源 ,而云计算平台常常基于一种资源(通常为内存)或者将两种固定
         量的计算资源捆绑定义为 slot,并以 slot 作为资源分配的单位               [3−7] ,这均属于粗粒度的资源分配方式.由于负载对
         资源的需求具有多样性          [1,8−13] ,基于固定单位的资源分配方式很容易产生资源碎片而造成资源浪费.一些研
         究 [14,15] 按资源偏好将负载分为 CPU 密集型和 IO 密集型两种,并在调度中使不同资源偏好的负载一起执行,以减
         少资源碎片造成的浪费.还有一些研究采用动态调整 slot 数目来避免资源碎片,但是这并未有效解决问题,未经
         过严密计算而改变 slot 数目或者将负载分为若干类互补执行,极易造成不良的资源共享或资源过度分配.有些
         资源(比如 CPU)的不良共享会导致任务之间竞争资源,最终造成执行时间大幅增加                           [16] .在数据中心中,超过 53%
         的落后任务是由不良共享引发的高资源利用率造成的,并且 4%~6%的非正常任务影响着 37%~49%的作业,造
         成作业完成时间的大幅延长           [17] .而有些资源(比如内存)的过度分配会直接导致任务失败或者服务器崩溃.
             Yarn [18] ,Fuxi [19] ,Borg [20] 等资源管理平台和 Apollo [11] ,Omega [12] ,Tetris [13] ,DRF [21] ,Carbyne [22] 等调度算法基于
         资源申请分配固定量资源,以避免资源碎片、过度分配等问题.由于资源申请量通常由人为指定,资源申请量与
                              [1]
         实际使用量之间存在差异 .另外,任务资源使用量波动很大,不会始终保持在峰值.使用任务最大资源使用量作
                                                       [8]
         为申请量时,资源申请量与实际使用量之间依然存在差异 .因此,资源管理平台或者调度器按照资源申请量进
         行分配时,资源碎片依然存在.基于资源申请的分配方式很难取得高资源利用率,该方式一定程度上限制了集群
                      [8]
         计算资源利用率 .举例来说,有任务 A 和 B,其执行阶段及资源需求如图 1 所示.假设服务器配置为 4 核 CPU 和
         8GB 内存,任务 A1,A2,B1 依次到达,则基于资源申请的调度结果如图 2 所示,其中,阴影部分为资源碎片.当任务
         A1,A2 分配计算资源之后,CPU 资源剩余 2 核,不满足 B1 的资源需求.因此,任务 B1 只能等待计算资源,最终负载
         在 7 单位时间内完成.










                           Fig.1    Resource requirements and durations of tasks execution stages
                                    图 1   任务资源阶段的资源需求及持续时间

                          CPU  (Core)                  Memory
                       4                            8   (GB)
                                                                          资源碎片
                       3                            6

                       2                            4
                          A2.S1  A2.S2                  A2.S1  A2.S2
                       1                            2
                          A1.S1  A1.S2  B1.S1  B1.S2   A1.S1  A1.S2  B1.S1  B1.S2
                            1  2   3   4  5   6   7 Time  1  2  3   4   5  6   7  Time

                                     Fig.2    Results of request-based scheduling
                                        图 2   基于资源申请的调度结果

             针对上述云计算平台中,资源管理和作业调度中存在的问题,本文提出一种细粒度资源调度方法(fine-
         grained method,简称 FGM).该方法分阶段匹配资源需求和可用资源,细化资源匹配粒度,并在分配中根据资源特
         性压缩资源需求,进一步提高资源利用率和负载性能.对于前文例子中的负载,细粒度资源调度的结果如图 3 所
         示.FGM 推测任务的资源需求,并将任务划分为两个执行阶段;之后,FGM 按照任务各执行阶段的资源需求及持
         续时间分别匹配资源.FGM 在向 A1 和 A2 分配其实际所需资源量之后,剩余 CPU 资源不满足 B1 的资源需求.
   311   312   313   314   315   316   317   318   319   320   321