点击链接即可下载论文原文
1. 引言
日前,2025年数据库领域顶会ACM SIGMOD/PODS会议在德国柏林举行。来自阿里云瑶池数据库团队的论文《Flux: Unifying Heterogeneous Infrastructure for Alibaba AnalyticDB》成功入选SIGMOD Industrial Track(工业赛道)。
云数据仓库负载在技术演进下日益多样化,特别是多种Data、AI负载部署于平台,催生出对异构计算资源的迫切需求。然而,传统异构计算资源存在高成本、利用率低下以及多租户资源竞争与隔离不足等问题。在满足多元化负载性能的前提下,实现异构计算资源的高效利用与显著性能提升,是一项极具挑战的任务。
论文提出的Flux系统,利用AI技术识别不同查询的潜在加速收益。基于此识别,系统采用多优先级调度机制,为具有不同加速收益的查询提供差异化的资源保障,从而在确保用户查询性能的前提下,显著降低用户与云厂商成本,查询速度最高提高4.39倍,用户成本最高降低21.9%,云厂商成本最高降低47%,GPU利用率从30%提升至70%+。
该技术已应用在CPU百万核规模的AnalyticDB调度场景中,AnalyticDB是阿里云2014年推出的自研云原生数据仓库,AnalyticDB MySQL版通过AI湖仓一体架构为千万家企业级客户提供了数据处理ETL、实时在线分析、核心报表、大屏和监控、在线推理能力,服务的场景包括实时数仓、精准营销、商业智能报表、多源联合分析、交互式查询、多模态数据处理、具身智能、Agent等。
2. 论文背景
Data+AI技术的兴起推动了云数据仓库负载类型的多样化。为构建更贴近数据源的数据链路,大型语言模型 (LLM) 和机器学习 (ML) 等AI技术被部署于云数据仓库中,旨在实现从数据采集、清洗、处理到模型应用的一站式Data+AI全链路流程。这一趋势促使云服务提供商在其数据仓库集群中大规模部署GPU等异构加速计算设备,以高效支撑多样化的AI工作负载。
为提升GPU等异构加速资源的利用率,闲置GPU资源将被调度用于执行数据库查询负载。然而,云数据仓库中查询工作负载的多样性导致不同查询在异构加速器上表现出显著的性能差异。如下图所示,受查询算子与数据特征的双重影响,特定查询在FPGA/GPU上的加速效果存在明显波动,其加速比范围在2.8倍至6倍之间。因此,识别并优先加速那些能够高效利用异构加速硬件的查询负载,可显著提升整体加速效益。
然而,既有研究中的资源调度模式难以充分释放硬件加速潜力。如下图所示,主流方案主要包含三类:
- 单租户模式:缺失多租户隔离能力,存在显著安全隐患;
- 硬隔离机制:虽可保障资源独占分配,但易导致资源利用率低下;
- 软隔离策略:面临不可控的资源争抢风险,难以保证服务稳定性。
3. Flux的整体架构
下图所示的Flux架构说明了我们以实用有效的方式实现异构加速资源高效利用的创新方法。Flux的实现围绕两个核心设计目标:
- 目标G1:工作负载分离。在执行之前,评估每条查询可以从异构加速资源中享受到的加速效果,按照预估的加速效果调度查询;
- 目标G2:作业最优调度。尽可能将异构资源利用率高的作业调度到对应机器上,以提高加速效果和集群资源利用率。
这些目标是通过以下过程实现的。在每个AnalyticDB实例中,混合的异构工作负载首先由查询调度程序进行打分,并调度到合适的cluster上。在多个AnalyticDB实例下,为了提高整个集群的资源利用率和加速效果,优先将异构资源利用率高的cluster调度到异构资源上,然后调度加速效果较低的cluster用以提供资源利用率。最后,通过查询调度保障冲突时的查询性能。
4. Flux的设计和实现
4.1 查询调度器
Flux的查询调度器负载对查询进行调度,判断查询的异构资源加速适用性,并将查询调度到不同的cluster上。
我们通过一个级联AI机器学习预测器预测查询的优先级打分,以评估一个查询的异构加速收益。收益主要包括三个部分:成本收益比,加速收益比和查询时长系数,分别用于反映一个查询在异构加速资源上能获得的计算资源开销优化,执行时长优化,和重要程度(短查询具有较高的重要性)。
我们通过一个基于查询历史的快速检索系统和一个回归模型,使用查询的执行计划树作为输入,预测查询能获得的加速效果,计算查询优先级,并以此为依据进行查询调度。
4.2 统一资源调度
在完成查询调度后,我们对每个cluster中的负载进行评估,用以进行统一资源调度。每个cluster用三个指标进行描述,分别为:
- 优先级:cluster的固有属性,查询的会依据自身的加速效果调度到相匹配的cluster上。cluster会计算调度上来的查询的优先级打分的平均值,作为自身的优先级分数,作为驱逐和调度的依据。
- 平均负载:cluster的历史属性,过去一段时间内查询的平均负载。
- 负载波动:cluster的历史属性,过去一段时间内查询的负载波动。
进一步地,我们将一个cluster的负载描述为正态分布,用于拟合评估cluster负载。因此,一台机器的负载可以描述为机器上的cluster负载的叠加。
一台机器上的负载超出机器的资源总量,即资源冲突时,查询的性能会受损。该情况可以描述为机器负载分布大于机器资源的概率。为了同时满足尽可能高的资源利用率和尽可能低的资源冲突率,我们基于cluster的优先级,规定单机资源机会约束,如下公式所示,其中z为不同优先级的不同置信概率下的z-score。在进行资源调度时,将会依次判定是否满足不同优先级的资源约束。
cluster的资源描述每天会进行更新以反映用户负载的变化,更新后可能有机器上不再能够满足约束,因此会进行驱逐和重调度。下图算法为驱逐算法,将对每个约束进行验证,如果存在不满足的约束,会选择优先级分数最低的cluster进行驱逐。
4.3 单机资源压制
Flux使用的基于概率约束的资源调度意味着可能存在资源冲突,Flux通过三层容灾策略保障资源可靠性:绝对资源压制:一台机器上同时存在多种优先级的cluster,当出现资源冲突时,执行梯度压制策略:
- 优先压制最低优先级cluster直至资源释放;
- 仅当低优先级cluster全被压制后仍冲突,启动中/高优先级cluster压制。
相对资源压制:压制一种优先级的cluster时,如果存在多个cluster,则以公平原则进行压制,每个cluster以平均负载/相对优先级作为压制权重,将时间片在多个cluster中进行公平分配。
查询回退:当一个cluster的被资源压制时,为了保障该cluster仍能进行正常查询,该cluster的查询排队队列会被缩短以减少异构资源排队时间,无法进入排队队列中的查询会被溢出到该机器的CPU上进行执行。
5. 实验分析
5.1 查询RT
Flux对比不同的资源装箱算法,基于条件概率约束的装箱算法(如下图)通过优先高优先级cluster装箱,让更多的高加速效果查询享受到了异构资源加速,对比基线平均提高了20%以上的加速效果。
Flux对比不同的异构硬件虚拟化算法,通过优先装箱高优先级cluster,对比其他虚拟化算法,显著提高了高,中优先级查询加速效果(下图a,b),作为代价,基本没有加速低优先级查询。
5.2 用户成本
在单一实例上,通过将高异构资源利用查询调度到FPGA上,单一用户实现了4倍的计算速度提升和21.9%的总成本节省。
5.3 资源成本
我们统计了阿里云某个区域内1700多个AnalyticDB实例的性能开销和查询分布,通过导入高加速效果的FPGA,同时高效利用闲置的GPU机器,实现了47%的总成本降低。
AnalyticDB MySQL弹性能力的使用手册
论文相关功能使用手册参考:🔗 https://help.aliyun.com/zh/analyticdb/analyticdb-for-mysql/user-guide/managed-ray-service