Page 136 - 《软件学报》2020年第10期
P. 136
3112 Journal of Software 软件学报 Vol.31, No.10, October 2020
IPC 的大小动态调控在线作业和离线作业的 CPU 时间比例,以达到 LC 作业 QoS 和整体资源利用率最大化的
目的.实验结果表明,BubbleFlux 管理下的资源利用率比 Bubble Up [14] 提升了 2.2 倍.但是,BubbleFlux 仅能管理
CPU 资源,无法处理其他资源上的资源竞争.
文献[74]提出了 PerfIso 资源管理系统.PerfIso 管理了两类资源以消减干扰:CPU 和磁盘 I/O.在 CPU 的动态
分配中,PerfIso 通过保持系统中持续存在空闲的核以处理在线作业的突发流量;在磁盘 I/O 的隔离上,PerfIso 采
用的策略是使用 Defict-weighted round-robin 算法动态调整优先级,该算法的基本思想是磁盘 I/O 越多的作业优
先级越低.在实验中,作者将 Bing 搜索服务和离线作业进行了混部,在 PerfIso 的管理下 CPU 使用率最多提升到
47%左右.但是该方法的局限性在于:使用隔离 CPU 和预留资源的方法会使系统中永远存在空闲状态的 CPU,
进而限制了 CPU 使用率的上限.
随着强化学习的发展,也有研究人员将强化学习应用于资源动态分配算法.文献[76]使用强化学习算法动
态调整作业的 CPU 配额和 CPU 的频率.强化学习的优势在于无需人为制定规则,算法会根据预先指定的 reward
函数学习出最佳的策略,结合深度神经网络有着强大的学习能力.其局限性在于:(1) 算法需要的训练时间长;(2)
神经网络的黑盒性导致算法不易调优;(3) 有限的 Action 空间难以应对复杂多变的云计算环境.
3 系统实例
提升集群利用率有利于降低企业数据中心的 TCO(total cost of ownership,总体拥有成本),大幅度提升数据
中心的成本效率.因此,在离线混部集群管理系统成为工业界关注的重点领域.国外方面,Google 在其集群管理
[9]
系统 Borg 中率先尝试了大规模在离线混部 .国内方面,互联网公司百度、腾讯、阿里均在混部集群管理系统
上有所实践,并开源了相应的数据集 [78,79] .本节就 4 个混部系统实例进行对比分析.
表 5 列举并对比了 Google(Borg)、阿里(Fuxi&Sigma)、百度(Matrix)、腾讯(YARD)的在离线混部作业管理
系统.其中,“−”表示现有公开数据中无相关描述.可以看到:
在性能干扰模型方面,4 个系统实例均未将性能干扰模型应用于大规模实践.本文认为造成这一现状的原
因为:上述 4 个混部系统实例均进行了大规模部署,运行了海量的在线作业和离线作业,为这些作业构建精准的
性能干扰模型所需计算开销过高.虽然性能干扰模型在 Borg 的公开文档中并未提及,但其大规模作业混部环境
支撑了多个性能干扰模型的研究,如文献[14,35].
Table 5 Comparisons of co-location systems
表 5 混部系统实例对比
[9]
名称 Borg(Google) Matrix(百度) [80] Fuxi&Sigma(阿里巴巴) [50,81] YARD(腾讯) [82]
性能干扰模型 文献[14,35] − − −
在离线混部 Borg 统一调度 LC 作业:Sorlaria LC 作业:Sigma YARD 统一调度
作业调度 BE 作业:Normandy BE 作业:Fuxi
容器技术/CPU 抢占式 容器技术/CAT/超线程隔离/CPU 容器技术/CPU 抢占
资源隔离技术 容器技术/CAT/CPU 抢占式调度
调度 抢占式调度/网络 IO/磁盘 IO 式调度
Kill 离线作业/调整 弹性内存/Kill 离线作业/调整
资源动态分配 Kill 离线作业/调整离线作业资源 −
离线作业资源 离线作业资源
运行效果 集群规模压缩为原有集群的 35% 节省数万台服务器 CPU:38% [83] CPU:45%
在在离线混部作业调度方面,Google 的 Borg(如图 5 左所示)和腾讯的 YARD 采用了统一调度的架构,即在
线作业和离线作业由一个调度器统一调度,而百度 Matrix 和阿里 Fuxi&Sigma(如图 5 右所示)则采用了在线离
线分离调度的方式,即在离线作业由各自的调度器调度(Sigma 和 Fuxi 分别为阿里内部原有的在线和离线作业
管理系统,Sorlaria 和 Normandy 分别为百度内部原有的在线和离线作业管理系统).在离线分离调度的架构复用
了原有系统的代码,减少了工程实现的复杂度,但也存在着一定的局限性:(1) 在离线作业调度器以及底层资源
管理器信息不共享,需要引入额外的组件进行在离线资源的协调(如 Fuxi&Sigma 中的 Level-0) [25] ;(2) 系统架构
较统一调度更为复杂,每个节点至少运行了 3 个 Agent,带来了额外的资源开销.从调度算法来看,Borg 和 Sigma
采用了基于打分规则的调度算法,打分规则包括:根据负载高低打分、根据资源碎片量打分、根据作业优先级