openGauss源码解析(156)
openGauss源码解析:AI技术(3)
1. 离线参数调优流程概述
X-Tuner利用长期在openGauss上进行参数调优的先验规则,根据系统的workload、环境特征推荐初始参数调优范围,该范围便是待搜索的配置参数空间。利用算法(如强化学习、启发式算法等)在给定的参数空间上不断进行搜索,即可找到最优的参数配置。
常规评价调优效果好坏的方法是运行benchmark,包括TPC-C、TPC-H以及用户自定义的banchmark,用户只需要进行少量适配即可。离线参数调优的流程图如图8-2所示。
图8-2 离线参数调优过程的流程图
对于离线调优,用户通过benchmark模拟真实环境中的workload,使用调优工具X-Tuner根据不同参数在benchmark上的表现来判断什么参数能够取得最佳表现。需要注意的是,整个离线调优过程是迭代式的,即设置完一次参数后,执行一次benchmark用于检验本次设置的参数好坏。上述过程称之为一次调优过程,那么X-Tuner只需要多次执行上述过程,即可找到一个最佳的参数配置。X-Tuner可以根据上一个调优过程的反馈,决定下一次调优中参数的寻找方向,这个过程也是优化算法的探索过程。
细心的读者可能会发现,上述过程是需要有一个初始参数配置的,这个初始参数配置对于已经训练好的强化学习模型来说,会利用模型进行初始化。若是采用搜索算法,则根据先验规则进行初始化。
由于某些数据库参数需要重启后方可生效,因此离线参数调优过程也可能是需要频繁地重启数据库的。离线调优过程与DBA手动调优过程比较相似,都是通过观察-试探-再观察-再试探进行的,只不过这个试探过程不是基于DBA的人工经验,而是通过算法的分析进行的。该过程也是比价耗时的,主要耗在执行benchmark上。
对于一些场景,可以采用explain命令替代,这样就可以省掉了执行benchmark的时间,但是explain并不能直接反映参数对缓冲区、WAL等数据库系统内部模块的影响,因此可使用的场景是有限的。业内的一个比较前沿的方法,是通过AI的方法,预估数据库的性能表现,一般称之为性能评估模型(performance model),通过该模型,可以省去执行benchmark的时间,从而压缩调优时间。不过该方法主要停留在理论界,距离在普适场景上的应用尚有差距,目前也在openGauss的演进方向中。
X-Tuner目前支持的强化学习算法主要为DDPG,支持的搜索算法主要为粒子群算法(particle swarm optimization,PSO)与贝叶斯优化算法(bayesian optimization)。