ClickHouse使能OmniMV性能调优实践
发表于 2025/09/11
0
作者 | 朱勇
1 实践背景概述
基于鲲鹏920处理器在CentOS 7.6/openEuler22.03-LTS-SP1系统下对ClickHouse使能OmniMV的SSB性能瓶颈分析并调优,本文提供BIOS调优、关闭透明大页、优化应用配置参数max_threads三种调优方式,调优后通过使用OmniMV前后对比性能提升效果。
测试环境信息
类别 |
子项 |
CPU |
鲲鹏920 5220/5250处理器 |
内存 |
8*32G |
磁盘 |
SSD系统盘RAID1:480G*2 HDD数据盘RAID10:16T*28 |
OS |
CentOS 7.6/openEuler 22.03 LTS SP1 |
软件 |
ClickHouse 22.8.13.20/23.3.4.17 |
测试方法
请参见《大数据OmniMV ClickHouse 性能测试指南》中的“SSB-单机性能提升测试”章节内容。
测试数据为6亿,需要将文档中测试数据准备章节生成数据的命令./dbgen -s 500 -T c中500改成100即可。
调优前测试结果
测试语句 |
鲲鹏920 5220处理器耗时(s) |
鲲鹏920 5250处理器耗时(s) |
q1 |
2.1557 |
2.5612 |
q2 |
1.5928 |
2.0223 |
q3 |
1.4754 |
2.0104 |
q4 |
6.2337 |
5.254 |
q5 |
5.5339 |
4.131 |
q6 |
5.5202 |
4.066 |
q7 |
6.52 |
5.4652 |
q8 |
6.363 |
5.1905 |
q9 |
5.1281 |
4.0733 |
q10 |
1.5927 |
2.0105 |
q11 |
7.659 |
6.5417 |
q12 |
3.8267 |
3.4684 |
q13 |
3.6181 |
3.3631 |
总计 |
57.2193 |
50.1576 |
2 性能瓶颈分析
Top分析
在Linux命令行下输入top命令。回显内容如下所示,观察到CPU未压满,CPU端应该不存在瓶颈。
Topdown分析
对13条SQL语句进行topdown分析,均为后端瓶颈,优化空间不大,使用PGO反馈优化验证后没有性能提升效果。
关闭透明大页
通过查看Linux官方指导文档,建议使用低版本内核时关闭透明大页。
如果您使用旧版的Linux内核,请禁用透明大页面。它会干扰内存分配器,从而导致性能显著下降。在新版Linux内核上,开启透明大页面是可以的。
echo 'madvise' | sudo tee /sys/kernel/mm/transparent_hugepage/enabled
如果需要永久修改透明大页设置,请编辑“/etc/default/grub”文件,并将“transparent_hugepage=madvise”添加到“GRUB_CMDLINE_LINUX_DEFAULT”选项中:
GRUB_CMDLINE_LINUX_DEFAULT="transparent_hugepage=madvise ..."
3 性能调优实践
BIOS调优
开启预取、性能模式、64ms内存刷新频率、关闭SMMU。其中开启预取对性能的影响是最大的。
如何进入BIOS界面的具体操作请参见《TaiShan 服务器 BIOS 参数参考(鲲鹏920处理器)》中“进入BIOS界面”的相关内容。
配置项 | 配置路径 | 配置值 |
开启CPU预取 | Advanced > MISC Config > CPU Prefetching Configuration | Enabled |
开启性能模式 | Advanced > Performance Config > Power Policy | Performance |
内存刷新频率(缺省值是32ms) | Advanced > Memory Config > Custom Refresh Rate | 64 |
关闭SMMU | Advanced > MISC Config > Support Smmu | Disabled |
关闭透明大页
在openEuler 20.03上透明大页是默认开启的,关闭后可以获得不错的性能提升。
echo never > /sys/kernel/mm/transparent_hugepage/enabled #默认值是never
echo never > /sys/kernel/mm/transparent_hugepage/defrag #默认值是madvise
应用参数优化
修改配置参数“max_threads”,设置为不同的值可能获得优化效果。经验证,在鲲鹏920 5220处理器上将“max_threads”设置为“50”比较合适。
4 调优效果实践
不使用BoostKit物化视图特性
测试语句 |
鲲鹏920 5220处理器耗时(s) |
鲲鹏920 5250处理器耗时(s) |
q1 |
1.1699 |
1.2875 |
q2 |
0.4584 |
0.6525 |
q3 |
0.5237 |
0.5514 |
q4 |
4.799 |
3.939 |
q5 |
3.7771 |
3.048 |
q6 |
4.0137 |
2.8095 |
q7 |
5.0074 |
4.1511 |
q8 |
4.8016 |
3.9626 |
q9 |
3.4401 |
3.1358 |
q10 |
0.5077 |
0.6784 |
q11 |
6.4966 |
5.1848 |
q12 |
2.485 |
2.268 |
q13 |
2.3313 |
2.126 |
sum |
39.8115 |
33.7946 |
使用BoosKit物化视图特性
测试语句 |
鲲鹏920 5220处理器耗时(s) |
鲲鹏920 5250处理器耗时(s) |
q1 |
1.2334 |
1.4212 |
q2 |
0.5182 |
0.6455 |
q3 |
0.504 |
0.5866 |
q4 |
0.9062 |
0.9333 |
q5 |
0.4626 |
0.5799 |
q6 |
0.4364 |
0.5328 |
q7 |
0.6603 |
0.727 |
q8 |
2.8927 |
2.8692 |
q9 |
0.4459 |
0.5431 |
q10 |
0.4016 |
0.5286 |
q11 |
0.6854 |
0.6989 |
q12 |
0.8773 |
0.917 |
q13 |
4.8947 |
5.3368 |
sum |
14.9187 |
16.3199 |
物化视图安装步骤请参见《OmniRuntime特性指南》中的“OmniMV物化视图”章节。
使用物化视图特性后,通过应用参数“--allow_experimental_projection_optimization”设置禁用物化视图功能,可能会导致测得的性能比使能物化视图特性之前差。