openGauss学习笔记-293 openGauss AI特性-AI4DB数据库自治运维-DBMind的AI子功能-X-Tuner:参数调优与诊断-命令参考及

100 阅读5分钟

openGauss学习笔记-293 openGauss AI特性-AI4DB数据库自治运维-DBMind的AI子功能-X-Tuner:参数调优与诊断-命令参考及常见问题处理293.1 命令参考293.2 常见问题处理

openGauss学习笔记-293 openGauss AI特性-AI4DB数据库自治运维-DBMind的AI子功能-X-Tuner:参数调优与诊断-命令参考及常见问题处理

293.1 命令参考

表 1 命令行参数

参数参数说明取值范围
mode指定调优程序运行的模式train,tune,recommend
--tuner-config-file, -xX-Tuner的核心参数配置文件路径,默认路径为安装目录下的xtuner.conf-
--db-config-file, -f调优程序的用于登录到数据库宿主机上的连接信息配置文件路径,若通过该文件配置数据库连接信息,则下述数据库连接信息可省略-
--db-name指定需要调优的数据库名-
--db-user指定以何用户身份登陆到调优的数据库上-
--port, --db-port数据库的侦听端口0-65535
--host, --db-host数据库实例的宿主机IP0-65535
--host-user指定以何用户身份登陆到数据库实例的宿主机上,要求改用户名的环境变量中可以找到gsql、gs_ctl等数据库运维工具。-
--host-ssh-port数据库实例所在宿主机的SSH端口号,可选,默认为220-65535
--help, -h返回帮助信息-
--version, -v返回当前工具版本号-

表 2 配置文件中的参数详解

参数名参数说明取值范围
logfile生成的日志存放路径-
output_tuning_result可选,调优结果的保存路径-
verbose是否打印详情on, off
recorder_file调优中间信息的记录日志存放路径-
tune_strategy调优模式下采取哪种策略rl, gop, auto
drop_cache是否在每一个迭代轮次中进行drop cache,drop cache可以使benchmark跑分结果更加稳定。若启动该参数,则需要将登录的系统用户加入到 /etc/sudoers 列表中,同时为其增加 NOPASSWD 权限(由于该权限可能过高,建议临时启用该权限,调优结束后关闭)。on, off
used_mem_penalty_term数据库使用总内存的惩罚系数,用于防止通过无限量占用内存而换取的性能表现。该数值越大,惩罚力度越大。建议0 ~ 1
rl_algorithm选择何种RL算法ddpg
rl_model_pathRL模型保存或读取路径,包括保存目录名与文件名前缀。在train 模式下该路径用于保存模型,在tune模式下则用于读取模型文件-
rl_steps深度强化学习算法迭代的步数-
max_episode_steps每个回合的最大迭代步数-
test_episode使用RL算法进行调优模式的回合数-
gop_algorithm采取何种全局搜索算法bayes, pso
max_iterations全局搜索算法的最大迭代轮次(并非确定数值,可能会根据实际情况多跑若干轮)-
particle_numsPSO算法下的粒子数量-
benchmark_script使用何种benchmark驱动脚本,该选项指定加载benchmark路径下同名文件,默认支持TPC-C、TPC-H等典型benchmarktpcc, tpch, tpcds, sysbench ...
benchmark_pathbenchmark 脚本的存储路径,若没有配置该选项,则使用benchmark驱动脚本中的配置-
benchmark_cmd启动benchmark 脚本的命令,若没有配置该选项,则使用benchmark驱动脚本中的配置-
benchmark_period仅对 period benchmark有效,表明整个benchmark的测试周期是多少,单位是秒-
scenario用户指定的当前workload所属的类型tp, ap, htap
tuning_list准备调优的参数列表文件,可参考 share/knobs.json.template 文件-

293.2 常见问题处理

  • 数据库实例连接失败:请检查数据库实例的情况,是否数据库实例出现了问题或安全权限配置(pg_hba.conf文件中的配置项)不正确。
  • 重启失败:请检查数据库实例健康情况,确保数据库实例工作正常。
  • 跑TPC-C作业时发现性能越来越慢:TPC-C等高并发场景下的压力测试,往往伴随着大量的数据修改。由于每一次测试并非是幂等的(TPC-C数据库数据量的增加、没有进行vacuum full清理掉失效元组、数据库没有触发checkpoint、没有进行drop cache等),因此一般建议TPC-C等伴随着较多数据写入的benchmark应该每隔一段时间(视具体并发量、执行时长的不同而异)重新导入一次数据,比较简单的方法是备份$PGDATA目录。
  • TPC-C 跑作业时,TPC-C驱动脚本报异常 “TypeError: float() argument must be a string or a number, not 'NoneType'”(不能将None转换为float类型):这是因为没有获取到TPC-C的压测返回结果,造成该问题的原因比较多,请首先手动检测是否能够跑通TPC-C并能够获取返回结果。若无上述问题,则建议将 TPC-C 驱动脚本中的命令列表中的 “sleep” 命令延迟时间设得更大一些。

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

图片