简介:近日,智能数据库和DAS团队研发的智能调参ResTune零碎论文被SIGMOD 2021录用,SIGMOD是数据库三大顶会之首,是三大顶会中惟一一个Double Blind Review的,其权威性毋庸置疑。
近日,智能数据库和DAS团队研发的智能调参ResTune零碎论文被SIGMOD 2021录用,SIGMOD是数据库三大顶会之首,是三大顶会中惟一一个Double Blind Review的,其权威性毋庸置疑。
ResTune论文的录用,阐明了咱们在智能化数据库管控方向的技术积攒和深度,也是阿里云自治数据库和智能化运维里程碑式的一步。目前,智能调参性能曾经在数据库自治服务(DAS)上落地,是业界第一个正式上线的数据库配置参数智能调参性能,进一步阐明了阿里云自治数据库方向的技术当先性。
1. 概述
调参服务在阿里丰盛的业务场景中有着宽泛的利用,如数据库系统的性能与配置参数优化、机器学习模型/深度神经网络的超参抉择、举荐零碎和云调度零碎中参数的自适应调节、工业管制和供应链中的仿真优化和参数优化等。如何在生产环境中反对客户理论需要,是学术界AI for system的一个钻研热点。
往年,由达摩院-数据库与存储实验室-智能数据库团队研发的ResTune智能调参工作(ResTune: Resource Oriented Tuning Boosted by Meta-Learning for Cloud Databases,地址:
https://dl.acm.org/doi/pdf/10.1145/3448016.3457291__),次要针对OLTP数据库系统的性能参数进行调优,波及RDS MySQL、RDS PostgreSQL、PolarDB MySQL、PolarDB-O等数据库系统,该工作发表在数据库畛域的顶级会议SIGMOD2021(Research Track),并在阿里云数据库自治服务DAS产品中技术落地。
2. 背景
数据库系统如MySQL提供200多个配置参数,不同的参数组合与一直变动的业务负载特色,独特决定着数据库系统的性能和资源应用。针对团体内的业务,通常DBA会依据不同的业务,按人工教训手动抉择一组适宜的参数。随着数据库上云的减速,业务越来越多样化,仅仅依赖于DBA人工调参遇到程度扩大的瓶颈制约。同时,因为DBA教训的差异性,很难对多种多样的业务负载都找出最优参数。云厂商要做到“客户第一”,自动化的调参性能至关重要:在不同的实例环境下对工夫上一直变动的多样业务负载,自适应的提供个性化的优化参数。
数据库系统调参须要同时思考性能(如Transactions per second/TPS、Latency)和资源应用(CPU、Memory、IO)的状况。性能优化诚然重要,但实在负载的TPS往往受用户的request rate所限,很难达到峰值性能。图1是两个参数下不同取值的TPS和CPU利用率,能够看到,在TPS最高的红色区域对应的CPU利用率变动较大,从15%到75%。而在TPS雷同的状况下,资源利用率有很大优化空间。从老本角度,TCO(Total Cost of Ownership)是云数据库的重要指标,也是云数据库的次要劣势。
优化资源应用对缩小云数据库的TCO,进步老本劣势有着重要意义。事实上,咱们发现云上大多数实例都存在Over-Provision的状况。此外,资源应用过高可能会造成云数据库的异样和资源争抢带来的性能降落;优化数据库的资源应用可能无效缩小甚至防止此类情况引发的故障,进步稳定性。
3. 挑战
咱们剖析了调参的指标是同时思考优化资源使用率和性能,上文也提到性能如TPS往往会被客户端的request rate所限而达不到峰值性能。因而,咱们须要找出资源利用率最小的数据库配置参数,并且满足SLA的要求。
另一方面,调参自身须要尽可能快(不然违反了升高资源应用),通常的调参零碎须要上百步迭代来找出好的配置,每一步迭代约3-5分钟回放workload,这样通常须要天级别的工夫进行调参训练。但如果想解决在线troubleshoot的需要,往往须要在1个小时内找出问题,进行复原。作为云厂商,咱们基于已有业务负载调参的历史数据,采纳常识迁徙学习,可无效减速调参过程,从而尽可能快地找出好的数据库参数配置。
4. 相干工作
数据库调参是最近钻研绝对热门的畛域,在过来几年中有不少工作发表。这些工作依照技术思路次要能够分为三大类:基于搜寻的启发式办法、基于贝叶斯优化的办法、基于强化学习(Reinforcement Learning)模型的办法。
- 基于搜寻的启发式办法:该类办法通常基于启发式思路,通过给定的规定算法进行搜寻来找出优化参数,这一工作的代表是BestConfig[3]零碎。这类办法依赖于对workload以及参数对性能影响的先验假如,但在理论中特地是云场景,往往很难为每个workload进行非凡优化和特色工程。这类办法在搜寻一组新参数的时候,没有思考到之前采样到数据的散布,因而效率不高。
- 基于贝叶斯优化的办法:该类办法的代表是iTuned[4]和CMU的Andy Pavlo实验室的SIGMOD17工作OtterTune[5]。贝叶斯优化将调参看作是一个黑盒优化问题,通过代理函数模仿参数和指标间的函数,并设计采集函数来最小化采样步数。这类办法没有思考以优化资源为指标的调参,只思考了优化峰值性能。在理论中,除了压测和大促的极其场景,通常用户对TPS是无感的,TPS往往达不到峰值,因而仅思考性能作为指标还不够。OtterTune零碎还提出了基于Internel Metric(数据库状态表的指标)的mapping的计划来利用已有数据,这种mapping办法利用来自同一硬件类型的历史数据,没有充分利用云厂商丰盛的数据资源。另一方面,这种形式依赖于预测进去的Internel Metric的相似性计算,在数据点较少的状况下容易不精确。
- 基于强化学习的办法:这类办法是最近数据库调参的热门方向,次要包含SIGMOD18的工作CDBTune[6]和VLDB19的QTune[7]工作。通过将Internal Metrics(state)到Knobs(action)的关系形象成一个policy neural network和一个value network来反馈,将数据库调参问题转化成一个马尔科夫决策过程,一直地自我训练,学习出最优参数。一方面,这类工作没有思考优化资源。另一方面,更重要的是调参问题并不是一个带状态的马尔科夫决策过程,因为参数间接决定了数据库性能,不须要简单的状态空间, 不同于强化学习须要通过解bellman equation来优化模型累计取得的Reward。在这些工作中,往往须要上千步迭代找出好的参数,这难以满足咱们在生产环境中进行调参的要求。
5. 问题定义和算法概述
咱们将问题定义成带限度的优化问题如下,其中限度条件常数可通过设定为默认配置参数下的TPS和Latency值。
ResTune将最优化资源应用并满足SLA转化成带限度的优化 (Constrained Bayesian Optimization) 问题。相比于传统的贝叶斯优化算法,这里采纳了带限度的 EI 函数 (Constrained EI, CEI),咱们将限度信息退出了罕用的 EI 效用函数(Acqusition Function)。详见论文的第五章内容。
另一方面,为了更好地利用已有数据,ResTune还设计了动态权重和动静权重相结合的高斯加权模型。通过ensemble历史的高斯过程模型,加权均匀出指标workload的surrogate函数。这里最外围的问题是如何定义权重。
在冷启动时(没有察看数据时),动态权重学习会依据工作工作负载的 meta-feature 间隔调配权重。meta-feature 的计算须要通过工作负载的剖析,失去工作负载特征向量。
当积攒了肯定数据(如10条数据)后,ResTune应用动静权重学习策略,通过偏序关系(如下图所示,只管TPS绝对值不同,然而曲面趋势雷同,因而偏序关系也相似),比拟历史学习器的预测与指标工作的实在察看后果之间的类似水平。应用动态分配策略,权重会随着对指标工作负载的察看次数的减少而动静更新。通过这两种策略,ResTune最终失去了一个元学习器(Meta-Learner),它能够作为经验丰富的代理模型,更多的细节能够参考论文的第六章内容。
6. ResTune零碎设计
ResTune将调参问题形象成带限度的优化问题,即最小化资源使用率,同时满足SLA的限度。下图给出了ResTune的零碎架构设计。ResTune 零碎包含两个次要局部:ResTune Client 和 ResTune Server。
- ResTune Client 运行在用户VPC环境中,负责指标工作的预处理和举荐参数配置的执行,由 Meta-Data Processing 模块和 Target Workload Replay 模块组成。
- ResTune Server 运行在后端调参集群中,负责在每次训练迭代中举荐参数配置,包含 Knowledge Extraction 模块和 Knobs Recommendation 模块。
一次调参工作中的一个迭代步流程如下:当一个调参工作开始后,零碎首先对指标数据库进行拷贝,并收集一段时间内的指标工作负载到用户环境用于将来的回放。
在每一轮迭代中,指标工作首先通过 Meta-Data Processing 模块失去 meta-feature 与 base model,作为 Knowledge Extraction 模块的输出;Knowledge Extraction 模块负责计算当前任务与历史工作 base model 集成时的动态与动静权重,并对 base models 进行加权求和失去 meta model;在 Knobs Recommendation 模块依据 Meta Learner 举荐一组参数配置;Target Workload Replay 模块对举荐参数进行验证,并将后果写入指标工作的历史察看数据。
以上训练过程反复若干迭代步,当达到最大训练步或晋升成果收敛时终止。指标工作训练完结后,ResTune会当前任务的 meta-feature 与察看数据收集到 Data Repository 作为历史数据。
每个模块的具体性能如下:
- Meta-Data Processing: 在调参工作初始启动时,元数据处理模块剖析指标工作的工作负载,应用 TF-IDF 办法统计 SQL 保留字作为指标工作的特征向量 (meta-feature);在每轮迭代中,元数据处理模块以历史察看数据为输出,通过归一化解决后,对资源(CPU, memory, IO等)利用率、TPS、Latency 拟合高斯模型,作为指标工作的基模型。
- Knowledge Extraction: 为了提取与利用历史常识,咱们提出了采纳高斯模型加权求和的集成形式,即元模型 M 的要害参数 u由基模型加权计算失去。在计算基模型权重时采纳了动态与动静两种形式。在初始化时,权重的计算采取动态形式,以特征向量作为输出,通过预训练的随机森林,失去资源利用率的概率分布向量,最终以据概率分布向量之间的间隔作为工作相似性,决定动态权重。当数据量短缺后,ResTune应用动静权重学习策略,比拟基学习器的预测与指标工作的实在察看后果之间的类似水平。 应用动态分配策略,权重会随着对指标工作负载的察看次数的减少而更新。通过这两种策略,咱们最终失去元学习器,它能够作为经验丰富的代理模型。
- Knobs Recommendation: 参数举荐模块依据元模型举荐一组参数配置;采集函数咱们应用了带限度的 EI 函数 (Constrained EI, CEI),其依据限度状况重写了 EI 的效用函数:当参数不满足 SLA 限度时效用置0,且以后最佳参数定义为满足 SLA 限度的最佳参数。CEI 采集函数可能更好的疏导摸索满足限度的最优区域。
- Target Workload Replay: 指标工作负载回放模块首先举荐参数利用在备份数据库上,并触发工作负载的回放,通过一段时间的运行验证后,验证后果(包含资源利用率、TPS、latency)与举荐参数将一起写入指标工作的察看历史。
7. 试验评测
咱们在多个场景下比照了 ResTune 和其它 SOTA (state-of-the-art)零碎的性能与速度。
7.1. 单任务场景
首先,在单任务场景下,咱们选定CPU利用率作为优化指标,验证了 ResTune 解决带 SLA 限度的优化问题的成果。这里咱们测试了Sysbench、Twitter、TPC-C和两个实在的workload:Hotel Booking和Sales。能够看出,ResTune办法在所有负载上都能够失去最佳成果与最佳效率。
7.2. 迁徙场景
因为云数据库上存在大量用户各种实例,因而咱们提出的办法是否在不同工作负载、不同硬件之间迁徙至关重要。同样以CPU利用率作为优化指标,咱们测试了不同机器硬件之间的迁徙成果,能够看到咱们提出的元学习算法带来了显著的训练速度晋升和训练成果晋升。使得整个ResTune的调参过程能在30-50步左右实现,而非迁徙场景通常须要几百个迭代步。
相似的,在不同工作负载之间的迁徙试验中,咱们的元学习办法也带来了显著的训练速度晋升。
7.3. Memory和I/O资源优化
除CPU资源外,咱们测试了内存资源、IO资源的调参优化成果。下图能够看出,对于IO资源优化调参工作,ResTune 升高了 84% - 90% IOPS;对于内存资源优化调参工作,ResTune 将内存利用从 22.5G 降落至 16.34G。咱们在论文中还估算了TCO的老本缩小。
8. DAS业务落地
智能调参技术在DAS(Database Autonomy Service)产品上进行了落地。咱们分为不同阶段和细化性能进行上线。次要包含模板性能和基于压测的智能调参性能。阿里云是业界第一个上线调参性能的厂商,当先于腾讯和华为。
8.1. 模板参数性能
模板参数性能是咱们一期上线的调参场景。在此之前,云上RDS MySQL数据库仅有一套对立的参数模板,这很难满足云上各不相同的用户业务负载。因而,咱们选取了不同品种的benchmark,在用户应用最频繁的RDS Instance类型上调参的离线训练。
咱们将用户负载分为典型的6种场景如交易、社交网络、压测等,通过离线训练咱们给每一种典型场景训练出了最优配置,并提供给用户依据其业务特色进行抉择。这样咱们将之前的RDS的对立一套参数模板扩大到了多种典型的OLTP业务场景。
下表列出了咱们离线调参训练的后果,在不同workload上有13%-50%的晋升。这里咱们以TPS性能作为优化指标。
Workload名称 | RDS默认配置下的TPS | 调参后的TPS | 晋升百分比 |
TPCC(订单解决) | 620 | 940 | <span>↑52%</span> |
Smallbank(银行业务解决) | 17464 | 22109 | <span>↑26.6%</span> |
Sysbench(压力测试) | 7950 | 10017 | <span>↑26%</span> |
Twitter(社交网络) | 41031 | 48946 | <span>↑19.2%</span> |
TATP(通信) | 18155 | 21773 | <span>↑19%</span> |
YCSB(压力测试) | 41553 | 55696 | <span>↑34%</span> |
Wikipedia(常识百科) | 600 | 678 | <span>↑13%</span> |