暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

OceanBase数据库ARM服务器调优测试报告

IT那活儿 2024-12-31
367

点击上方“IT那活儿众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!  


测试环境

1.1 测试硬件配置


ARM

X86

系统版本

BCLinux-21.10

BCLinux-21.10

CPU

型号*数量

KP5250(48 Cores)*4

Intel6248(20Cores)*4

内存

型号*数量

32G*24

32G*24

硬盘

型号*数量

960GB SATA SSD*6

960GB SATA SSD*6

网卡

型号*数量

25GE * 2

25GE * 2

Raid卡

型号

SAS 3508

SmartRaid 3100

1.2 测试工具

软件名称

版本

备注

OceanBase

商业版v3.2.3

数据库软件

fio

3.7

硬盘压测工具

BenchMarkSQL

5.0

数据库压测工具

1.3 测试组网

Arm侧测试组网为2:2:2集群,每台机器部署一个observer节点加obproxy节点,具体如下:

节点

Zone

描述

xx.xxx.xxx.10

1


xx.xxx.xxx.11

1


xx.xxx.xxx.17

2


xx.xxx.xxx.18

2


xx.xxx.xxx.19

3

主服务器

xx.xxx.xxx.20

3

主服务器,压力机

X86测试组网为单zone双节点,每台机器部署一个observer节点加obproxy节点,具体如下:

节点

Zone

描述

xx.xxx.xxx.118

1

主服务器,压力机

xx.xxx.xxx.119

1

主服务器



测试数据

2.1 fio测试数据

1)1M顺序写测试

并发数

arm(3盘raid5)

x86(3盘raid5)

arm(6盘raid5)

x86(6盘raid5)

IOPS

IOPS

IOPS

IOPS

1

1939

3586

3180

4958

2

3867

5997

4649

5595

4

5665

6177

5464

6014

8

4732

6239

6070

5921

16

4920

6329

5882

6037

32

5723

6405

6022

6281

64

5707

6401

5523

6374

2)1M顺序读测试

并发数

arm(3盘raid5)

x86(3盘raid5)

arm(6盘raid5)

x86(6盘raid5)

IOPS

IOPS

IOPS

IOPS

1

2160

3992

3703

5520

2

2171

4055

5425

6301

4

2212

5834

5550

6460

8

2433

5481

5783

6455

16

3247

5185

7071

6491

32

6641

5423

7104

6537

64

6792

5274

7126

6525

3)4K随机读测试

并发数

arm(6盘raid5)

x86(6盘raid5)

IOPS(k)

IOPS(k)

1

114

90

2

190

150

4

329

230

8

368

277

16

359

279

32

366

270

64

360

250

4)16K随机读测试

并发数

arm(6盘raid5)

x86(6盘raid5)

IOPS(k)

IOPS(k)

1

105

80

2

141

100

4

144

136

8

144

173

16

144

188

32

144

180

64

146

185

2.2 BMSQL压测数据

 压测对象

并发数

Tpmc

Tpmc差距

Arm

400

321037

-26.83%

X86

400

438783

100%

Arm

200

231722

-36.58%

X86

200

365412

100%



调优方法

3.1 BIOS设置

Advanced > Performance Config > Power Policy > Performance #开启性能模式

Advanced > Memory Config > Custom Refresh Rate > 64ms#提高内存刷新频率

Advanced > Memory Config > NUMA > Enabled #开启NUMA亲和性

Advanced > MISC Config > Support Smmu > Disabled #非虚拟机场景可关闭

Advanced > MISC Config > CPU Prefetching > Disabled #关闭CPU预取

3.2 GRUB参数设置

vi etc/default/grub 
#在GRUB_CMDLINE_LINUX一项中修改
    1)去除skew_tick=1#此项会导致ARM下内核获取时间函数性能变差
    2)增加pci=pcie_bus_perf #适用于网络和硬盘大吞吐场景,PCIe性能最大下设置
grub2-mkconfig -o boot/efi/EFI/bclinux/grub.cfg #加载进系统启动项
reboot #重启生效

3.3 内存大页
  • 设置内存大页,可以提高TLB的命令率,提高访存性能;

  • 缺点是设置后大页内存仅大页内存程序使用,会一直占用内存,需要手动管理,需要考虑其他应用占用内存情况再进行分配。

#查看该系统内存大页大小

cat proc/meminfo | grep Hugepagesize

#
根据OceanBase数据库运行时内存占用情况,计算所需分配大页数量

num=所需内存/大页大小

sysctl -w vm.nr_hugepages=<num>

#
 OceanBase开启使用内存大页参数,重启集群

alter system set use_large_pages=true;

3.4 隔核处理

vim /etc/tuned/cpu-partitioning-variables.conf

加入:

isolated_cores=24-47,48-71

执行:

tuned-adm profile cpu-partitioning

重启。

3.5 网卡绑核

#下载mlx网卡绑核脚本

git clone https://github.com/Mellanox/mlnx-tools.git

chmod +x  set_irq_affinity_bynode.sh

执行

./ set_irq_affinity_bynode.sh 0 enp2s0f0

./ set_irq_affinity_bynode.sh 2 enp67s0f0

3.6 进程绑核

taskset -c 24-47 -p $(ps -elf | awk '$NF~/observer/{print $1}')

taskset -c 48-71 -p $(ps -elf | awk '$NF~/obproxy/{print $1}')

3.7 开启 Raid cache

下载https://docs.broadcom.com/docs/007.1507.0000.0000_Unified_StorCLI.zip

./storcli c0/v1 set rdcache=RA 

./storcli c0/v1 set wrcache=WB

3.8 修改磁盘调度方式

echo none > /sys/block/sdb/queue/scheduler

备选优化

4.1 jemalloc碎片优化

可以在运行程序前添加LD_PRELOAD=/usr/local/lib/libjemalloc.so + <executable> 来使能jemalloc,不需要编译。

4.2 网络时延

网卡中断聚合(初始usecs 8  frames 128):

ethtool -C

 enp2s0f0  adaptive-rx off adaptive-tx off rx-usecs 4 rx-frames 64 tx-usecs 4 tx-frames 64

ethtool -C enp67s0f0  adaptive-rx off adaptive-tx off rx-usecs 4 rx-frames 64 tx-usecs 4 tx-frames 64

4.3 硬盘软终端平衡

echo 2 > /sys/block/sdb/queue/rq_affinity

结果对比

优化前后ARM与x86结果对比:

测试对象

X86

ARM

并发数

400

200

400

200


优化前

优化后

优化前

优化后

Tpmc

438783

365412

321037

398701

231722

285895

相差

100%

100%

-26.83%

-9.13%

-36.58%

-21.76%

  • Arm 400并发下性能提升24%,落后x86 9%。

  • 200并发下性能提升23%,落后x86 22%。


END


本文作者:周 庆(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论