背景:阿里在2017年09月05日首次公布了该数据,trace数据是ClusterData在2017年08月12日小时内生产群集的群集信息,并包含大约1.3k台运行在线服务和批处理作业的机器。
链接:https://www.researchgate.net/publication/322512121_Imbalance_in_the_cloud_An_analysis_on_Alibaba_cluster_trace
简介
为了提高资源利用率并为云设计智能调度程序,了解大型云数据中心的工作负载特征和机器利用率。在本文中,对2017年9月阿里巴巴新发布的跟踪数据集进行了深入分析,包括11089个在线服务作业的详细统计数据和1295个超过12小时的1300台机器上的12951个批处理作业。这是分析阿里巴巴公布trace数据后的第一份工作之一。分析了关于阿里云不同类型的几点不平衡。这种不平衡加剧了云资源管理的复杂性和挑战性,这可能会导致严重的资源浪费和低集群利用率。
- 空间失衡:跨机器和工作负载的异构资源利用率。
- 时间不平衡:每个工作负载和机器的资源使用量随时间变化很大。
- 每个工作负载的多维资源(CPU和内存)利用率不平衡。
- 在线服务和脱机批处理作业之间的资源需求和运行时间统计(持续时间和任务编号)不平衡。
文章认为,在资源分配过程中调节这种不平衡对于提高集群效率至关重要,并会激励新资源管理者和调度人员的出现。
数据介绍
trace包括数据三种类型,跟踪中有三种类型的数据:批处理和在线服务的不同时刻的工作负载、机器利用率和运行时间信息。 出于机密原因,跟踪中的部分信息被模糊处理。
- 机器利用率 被描述为两个栏:“机器事件”和“机器资源利用率”。容量反映了每台机器的标准化多维物理容量。每个维度(CPU核心,RAM大小)都是独立标准化的。
- 批处理工作负载 被描述为两个栏:“实例”和“任务”。 户以Job的形式提交批处理工作负载(不包含在trace中)。每个Job都由多个任务组成,每个任务根据数据依赖性形成一个DAG。它们由多个实例组成,并执行不同的计算逻辑。实例是批处理工作负载的最小调度单位。任务中的所有实例都执行完全相同的多资源需求的二进制代码,但处理不同部分的数据。
- 在线服务作业 由两个栏描述:“服务实例事件”和“服务实例使用情况”。trace仅包含两种类型的实例事件。一个创建事件,另一个完成。创建事件记录服务实例的起始时间,而移除事件表示服务实例的完成时间。每个实例是最小的调度单元,并在Linux容器(LXC)的轻量级虚拟机中运行。它也可以被视为一项完整的服务工作。
批处理或服务工作负载的任何一个实例都以保留的形式表达其资源需求,这在现代资源管理员中是常用的。他们的Fuxi集群管理员利用资源分配的接纳控制策略。上述两种机制的结合被认为是近期研究中群集利用率低和资源低效的根本原因。
机器使用不均衡的情况
图1绘出了12小时内群集中每台计算机的资源利用情况。trace提供了每台机器每个采样时间的标准化CPU和内存使用信息。所有数据都从“机器事件”和“机器资源利用率”表中检索。
我一个有趣的观察是,一部分机器(ID从400到600和900到1100)的CPU使用率总是高于其他机器,而他们的内存使用率相对较低。在群集运行期间,大多数机器的CPU利用率正在逐渐增加,同时内存利用率在下降。因此,当观察到跟踪期结束时(从11到12小时)CPU的最高利用率和机器的最低内存利用率。相比之下,CPU在开始时一直处于空闲状态(从0到3.5小时),而内存则保持高负载状态。
这表明,云数据中心机器存在显着的空间不平衡(跨机器的资源异构利用)和时间不平衡(每台机器随时间变化的资源使用情况)。
从图2中,我们看到每台机器资源使用情况的细粒度信息。我们总结了每台采样时间1300台机器的平均,最小和最大利用率。 CPU和内存使用都被标准化采样周期内,每台机器的平均CPU利用率在40%以内,最高维持在60%左右。每台机器的平均内存利用率在60%以内,最高约为90%。绿线表示每采样时间所有机器中利用率最低的机器利用率。这种最小用途的CPU和内存利用率接近于零。从8小时到10小时,CPU的最大利用率迅速攀升,达到90%以上,而平均CPU利用率保持稳定。通过比较这些机器的最小,平均和最大使用量之间的巨大差距,我们观察到了集群中利用率的巨大空间不平衡。它表明,云数据中心需要新的调度器来平衡负载,避免机器利用的热点,从而提高集群效率。与CPU使用情况不同,内存使用在此期间保持稳定。它还表明工作负载的多维资源利用率(CPU和内存)的比例失衡。
此外,我们观察到群集中CPU和内存资源的严重浪费和资源低效率。但是,由于机器的最大使用率相对较低,通过全面了解工作负载的资源需求并进行适当的保留,CPU利用率有机会大大提高。尽管如此,提高内存利用率仍然具有挑战性,因为工作性能对机器相对较高的最高使用率非常敏感。简单地减少保留以提高集群内存效率可能会导致严重的性能下降。最近的研究通过提出更好的需求估计提出了一种解决方案。我们认为,云数据中心需要新的资源管理者和调度人员,通过避免上述不平衡和低利用率来提高集群资源的效率。
工作负载的不均衡
资源需求的不均衡
- 批量工作负载: 大多数批处理作业为每个任务 请求 1到100个CPU核心,而最大请求数量大于1000。相比之下,我们观察到大多数作业使用0.01到1个核心CPU每个任务,而很少 使用 超过100个核心。而大多数任务要求每个实例的规格化内存大小在0.05到0.15之间。虽然他们通常使用0.001到0.05的尺寸。
- 服务工作负载: 大多数服务实例在执行期间稳定地使用了少于10%的CPU资源。但是,总有一部分实例占用60%到90%的资源,而有些则使用接近零的内核。规范化的平均内存利用率稳定在45%,最大值保持在79%,最小值保持在1%。与CPU的资源不同,它表明有机会做出更好的保留来提高内存利用率。
用户总是倾向于过度配置资源以保证SLA对延迟敏感的生产服务。但是,这种极低的利用率会为大规模云数据中心带来难以置信的高成本。同时,在线服务作业永久保留和保存资源,由于受限主机资源不足,可能会导致集群负载不均(热点)或工作不足。
批量工作负载的不均衡
图9绘出了批处理作业的持续时间分布。我们利用同一作业中最早创建的任务和最晚完成的任务的持续时间之间的差异来指示作业运行时间。90%的工作时间少于0.19小时,而最长的工作时间长达10小时。详细地说,超过12481个Job的运行时间不到一个半小时,超过12705个Job的运行时间不到1个小时。短Job压倒性地占据了集群。表明了工作持续时间的不平衡。人们可以考虑这些现象,并利用适当的调度算法,如SJF(最短作业优先)来加速短作业的执行,同时最大化集群完工时间。
一些思考
由于阿里云数据中心的预留机制和不平衡的现象,将服务和批量作业放置在相同机器对提高集群效率并不有效。未来,可以利用容器的灵活分配和不平衡知识来显着提高混合集群的资源利用率。
另外,通过考虑数据的局限性,在调度过程中不平衡现象会加剧。如何通过适当的资源分配和调度决策来平衡不平衡救济,数据局部性和SLA(性能)之间的权衡是非常具有挑战性的。它也成为我们未来的研究方向。
结论
了解大型云数据中心中的机器特征和工作负载行为对于最大限度地提高群集资源效率至关重要。在本文中,对阿里巴巴集团2017年9月新发布的跟踪数据集进行了深入分析,涵盖1300多台服务器,超过12小时。这是分析阿里巴巴公众痕迹的第一份工作之一。
文章研究了混部集群的详细运行时特性,该集群可以同时在线服务和脱机批处理作业,并发现了关于云中不平衡的一些有趣见解。这种不平衡加剧了云集群管理的复杂性和挑战性,导致严重的资源低效率。文章认为,适应机器和工作负载的不平衡对于集群效率至关重要,并且会激励新资源管理者和调度者的设计和出现。