鲲鹏社区首页
中文
注册
ClickHouse使能OmniMV性能调优实践

ClickHouse使能OmniMV性能调优实践

大数据ClickHouseOmniMV

发表于 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”设置禁用物化视图功能,可能会导致测得的性能比使能物化视图特性之前差。

本页内容