目前,各关键行业都在加速信创转型,并从最初的测试业务、边缘生产业务,到尝试承载重要工作负载,逐渐进入“深水区”。大多数用户对信创生态构成方案的性能和特性不是十分了解,对于核心业务的信创转型难免心中有疑问和顾虑:信创数据库配合信创硬件表现是什么水平?在虚拟化或者超融合平台上运行表现如何?软硬件是否存在调优的空间?

基于以上需求,SmartX 方案中心围绕信创数据库产品(达梦 DM8)在 SmartX 超融合信创平台(基于鲲鹏芯片的信创服务器)上进行性能测试,并利用独有的 Boost 加速技术对数据库进行调优。测试结果表明,结合数据库的参数调整,Boost 模式下 SmartX 超融合信创平台支撑的达梦数据库获得了接近 100% 的性能提升。

重点内容
● 本次测试使用 BenchmarkSQL 基于 TPC-C 基准执行测试,对比达梦 DM8 数据库在裸金属服务器(分别基于 SATA SSD 和 NVMe SSD)、未进行 Boost 模式优化的 SmartX 超融合信创平台和优化后的超融合平台上的性能。
● Boost 模式下的优化方式包括:BIOS 参数优化、启用 Boost 模式和 RDMA 网络优化、虚拟机设置优化(包括开启 CPU 独占功能和调节虚拟磁盘存储策略为厚置备)、虚拟机操作系统参数优化(利用 CPU 多核特性进行网络优化),以及数据库相关优化。
● 在未做优化时,基于信创架构的 SmartX 超融合运行达梦数据库性能是裸金属服务器(基于 SATA SSD)的 80%。而通过 Boost 模式进行调优后,数据库性能提升近一倍,达到裸金属服务器(以 SATA SSD 为介质)的 1.77 倍,NVMe 裸盘的 88%。

1 测试环境

1.1 达梦 DM8 数据库

DM8 是达梦公司在总结 DM 系列产品研发与应用经验的基础上,坚持开放创新、简洁实用的理念,推出的新一代自研数据库。DM8 吸收借鉴当前先进技术思想与主流数据库产品的优点,融合了分布式、弹性计算与云计算的优势,对灵活性、易用性、可靠性、高安全性等方面进行了大规模改进,多样化架构可充分满足不同场景需求,支持超大规模并发事务处理和事务-分析混合型业务处理,动态分配计算资源,实现更精细化的资源利用、更低的成本投入。

1.2 信创硬件(鲲鹏芯片)

本次测试采用的信创服务器是神州鲲泰 KunTai R722。

测试服务器配备的是鲲鹏 920 系列 CPU,是目前业界领先的 ARM-based 处理器。该处理器采用 7nm 制造工艺,基于 ARM 架构授权,由华为公司自主完成设计。

鲲鹏 920 5250 一个明显特征是:CPU 核心(cores)比较多,单路 CPU 拥有 48 个核心,2 路 CPU 共 96 个核心(常用的 Intel 至强系列 CPU 单路大多在 20 核左右)。因此,后期性能优化的其中一个重点是如何更好利用多核的优势。 

服务器详细配置如下:

1.3 SmartX 超融合信创云基础设施

志凌海纳 SmartX 以超融合软件 SMTX OS 为核心,提供自研、解耦、生产就绪的超融合信创云基础设施产品组合,已助力众多行业用户构建轻量信创云底座。SMTX OS 是构建超融合平台的核心软件,内建原生服务器虚拟化 ELF 和分布式块存储 ZBS,可选配双活、异步复制、备份与恢复、网络与安全等高级功能,结合认证列表内的商用服务器,即可快速构建强大而敏捷的云化资源池。欲深入了解,请阅读:一文了解超融合信创云基础设施

Boost 模式是 SMTX OS 的高性能模式。该模式通过内存共享技术缩短虚拟机的 I/O 路径,从而提升虚拟机性能,降低 I/O 访问延迟。Boost 模式通常会搭配 RDMA 网络一起启用,可最大化提升存储性能。如希望进一步了解 Boost 模式的实现原理,请阅读:SPDK Vhost-user 如何帮助超融合架构实现 I/O 存储性能提升,或扫码下载电子书《SmartX 超融合技术原理与特性解析合集(含 VMware 对比)》

2 测试方法

本次测试使用 BenchmarkSQL 基于 TPC-C 基准执行测试,对比达梦 DM8 数据库在裸金属服务器(分别基于 SATA SSD 和 NVMe SSD)、未进行 Boost 模式优化的 SmartX 超融合信创平台和优化后的超融合平台上的性能。

3 测试标准与参照

3.1 TPC-C 测试

TPC-C 是一个业界公认的事务处理性能基准测试。它是 Transaction Processing Performance Council(TPC)发布的标准基准测试之一,用于测试在线事务处理(OLTP)系统的性能。TPC-C 测试基于一个虚拟的在线订单处理应用程序,它包括了一系列的事务操作,如客户订单、库存管理、交付处理等。TPC-C 测试结果以“每分钟事务处理量”(TPM)为单位进行度量。

BenchmarkSQL 是一款可以使用 TPC-C 测试规范来运行基准测试的工具。具体来说,BenchmarkSQL 可以使用 TPC-C 测试规范中定义的事务操作和数据结构,来模拟一个 TPC-C 测试环境,并对数据库系统进行性能测试。因此,BenchmarkSQL 可以被认为是TPC-C 测试的一种实现方式。

本次测试使用 BenchmarkSQL 基于 TPC-C 基准执行测试,以便更客观地评价超融合信创平台上数据库的性能表现。

本次测试使用的软件版本如下:

3.2 测试参照

用户以往或许有了解过一些数据库的 TPC-C 测试数据,但这些数据大多基于 x86 架构服务器环境,对于信创芯片的 TPC-C 表现未必是十分了解的。考虑到这一点,我们首先在裸金属服务器(基于鲲鹏芯片)上直接部署达梦数据库软件(物理机部署),然后执行一组 TPC-C 测试作为参照,以便与后续 SmartX 超融合的表现进行对比。

3.2.1 不同存储介质下的性能表现

由于数据库对磁盘 I/O 性能比较敏感,在测试场景中,我们使用了两款不同类型的 SSD 作为存储介质,分别进行测试。首先,通过 FIO 测试工具对 SSD 分别执行 I/O 压力测试(8k 随机读写),作为两款 SSD 的 I/O 基准性能,结果如下:

然后,我们在两种 SSD 上分别运行达梦数据库的 TPC-C 测试(100 warehouse,200 terminals),结果如下:

*注明:TPC-C 测试中取 NewOrder 的值作为测试结果,后续出现的结果亦然,不再赘述。

两组数据是在同一服务器中测试得到的,可以得到以下结论:TPC-C 测试结果随着存储 I/O 能力的增长而增长,但两者不完全是等比关系(其中 NVMe SSD 的 I/O 写入能力相比 SATA SSD 提升了 340%,然而 TPC-C 只提升大约 102%)。

3.2.2 CPU NUMA Group 对性能影响

测试分为两组:

  • A 组:数据库程序通过 numactl 命令绑定到同一颗 CPU 的 2 个 NUMA 组(48 核)。
  • B 组:数据库不绑定 CPU,利用服务器上所有 CPU 核心(96 核)。

测试结果如下:

测试结果有点出乎所料:A 组(48 核)要比 B组(96 核)的性能更好。一般情况下,更多的 CPU 内核对数据库的性能的影响理论上应该是正向的。但这个测试中有两个因素影响了该结果。

  • 达梦数据库的工作线程参数最大支持 64(官方要求工作线程与 CPU 核心数一样),无法充分利用全部 96 个 CPU 内核。
  • 数据库在跨 CPU NUMA 组下工作,内存访问效率下降。

考虑到数据库的特点以及 NUMA 的影响,后续超融合平台测试中的虚拟机配置采取 48 vCPU (并确保在同一个 CPU 中)的配置进行测试。

4 测试过程

4.1 测试条件

4.1.1 虚拟机资源配置

4.1.2 TPC-C 测试集

  • 调整 terminal 数值,以验证数据库在不同并发访问压力下的性能表现。共执行 100 – 800 共 8 组 terminals 测试。
  • 调整 warehouses 数值,以验证数据库在不同数据集大小下的性能表现。共执行 100 – 300 共 3 组 warehouse 测试。每组 warehouse 结合上述不同的 terminal 数量,共执行 24 组测试。

4.2 测试一:未做任何优化的 SmartX 超融合运行达梦数据库性能表现

TPC-C NewOrder 最大值在 100 warehouse 下 300 terminal 下产生,每分钟完成 90592 笔新订单(NewOrder)。在没有任何优化的情况下,数据库表现并不算理想,是裸金属服务器(基于 SATA SSD)部署性能的 80%

4.3 测试二:经过 Boost 模式调优的 SmartX 超融合运行达梦数据库性能表现

4.3.1 SMTX OS Boost 模式下的优化手段

下面将展示在 SMTX OS Boost 模式下,如何提升达梦数据库 TPC-C 测试的性能表现。

1)BIOS 参数优化

开启 Boost 模式之前,要求在服务器 BIOS 中将电源策略从“节能模式”,切换为“性能模式”,以确保服务器的功率在最佳性能状态。

2)启用 Boost 模式和 RDMA 网络优化:
  • 在部署 SMTX OS 集群的第 1 步:集群设置阶段,勾选启用 Boost 模式复选框。
  • 在部署 SMTX OS 集群的第 5 步:配置网络阶段,在为存储网络创建虚拟分布式交换机时,通过单击启用 RDMA 按钮,开启集群的 RDMA 功能。
3)虚拟机设置优化
  • 开启 CPU 独占功能

创建数据库虚拟机时,勾选 CPU 独占功能。后台将自动对虚拟机的 vCPU 进行 NUMA 绑定,使得虚拟机获得更佳的性能。

  • 虚拟磁盘存储策略调节为厚置备

将数据库所在的虚拟磁盘从默认的精简制备设置为厚置备,将小幅度提升 I/O 性能,同时降低 CPU 占用。

4)虚拟机操作系统参数优化
  • 利用 CPU 多核特性进行网络优化 

由于 TPC-C 测试是通过 SMTX OS 集群外部的 benchmarkSQL 虚拟机发起请求,通过网络压测数据库,想要充分发挥 Boost 模式的效果,网络优化是非常必要的。基于鲲鹏 CPU 多核的优势,将网络队列和中断的任务分配到不同的 CPU 核中执行,可减少资源争抢的情况,并有效提升网络传输性能。

方式一:为网卡队列指定 CPU 核

a. 使用 ls /sys/class/net/enp1s0/queues/ 查看网卡队列情况:

在测试环境中,可以看到网卡对应的接收队列和发送队列各有 4 组,具体按实际情况而定。

b. 分别为多组网卡队列指定 CPU 核,命令如下:

echo 1 > /sys/class/net/enp1s0/queues/rx-0/rps_cpus
echo 2 > /sys/class/net/enp1s0/queues/rx-1/rps_cpus
echo 4 > /sys/class/net/enp1s0/queues/rx-2/rps_cpus
echo 8 > /sys/class/net/enp1s0/queues/rx-3/rps_cpus
echo 16 > /sys/class/net/enp1s0/queues/tx-0/xps_cpus
echo 32 > /sys/class/net/enp1s0/queues/tx-1/xps_cpus
echo 64 > /sys/class/net/enp1s0/queues/tx-2/xps_cpus
echo 128 > /sys/class/net/enp1s0/queues/tx-3/xps_cpus

其中 echo 1 > /sys/class/net/enp1s0/queues/rx-0/rps_cpus 代表将 CPU 1 绑定到 rx-0 号队列,其中 CPU 0、1、2、3 四个 CPU 对应的值分别是 1(20)、2(21)、4(22)、8(23)。

方式二:为网卡中断指定 CPU 核

a. 使用以下命令查看网卡中断情况:

cat /proc/interrupts | grep virtio0|cut -f 1 -d ":"

b. 修改配置文件,使得 irqbalance 服务不再调度这几个中断。

通过 vim /etc/sysconfig/irqbalance 修改文件,将以下参数改为:

IRQBALANCE_ARGS=--banirq=91-99

c. 手工为每个网卡中断分配 CPU 核,如下:

echo 40 > /proc/irq/91/smp_affinity_list
echo 41 > /proc/irq/92/smp_affinity_list
echo 42 > /proc/irq/93/smp_affinity_list
echo 43 > /proc/irq/94/smp_affinity_list
echo 44 > /proc/irq/95/smp_affinity_list
echo 45 > /proc/irq/96/smp_affinity_list
echo 46 > /proc/irq/97/smp_affinity_list
echo 47 > /proc/irq/98/smp_affinity_list
echo 48 > /proc/irq/99/smp_affinity_list

执行上述两个部分的网络优化,可以明显提升 TPC-C 测试中的网络性能,其中发送速度的峰值最高提升 17.6%,接收速度峰值最高提升 27.1%

5) 数据库相关优化
  • 调整数据库日志参数,充分发挥 I/O 并发能力

达梦 DM8 的数据库日志文件(logfiles)的数量默认是 2 个。由于 SMTX OS 开启 Boost 模式后,获得更强的 I/O 并发能力,通过增加日志文件数量可充分挖掘存储的并发性能。测试中,将日志文件数量从 2 个增加到 8 个,性能在全部场景中都能获得明显提升。结果如下图:

增加日志文件后,100 warehouse 场景下的性能提升的比例范围是 21%-35%(如图)。在 300 warahouse 场景下,最高提升 47%(有相关测试数据,未展示图表)。

  • 调整 DM8 数据库内存缓存区参数,优化缓存命中率

由于数据库所在的虚拟机分配的内存是 96GB,因此将内存池参数和内存目标参数设置为 90GB(预留 6G 给操作系统使用)。通过 /dm8/data/DAMENG/dm.ini 修改数据库参数文件,可调整相关参数。

MEMORY_POOL = 90000                 #Memory Pool Size In Megabyte
MEMORY_TARGET = 90000            #Memory Share Pool Target Size In Megabyte

DM8 数据库中有四种类型的数据缓冲区,分别是 NORMAL、KEEP、FAST 和 RECYCLE。

其中 NORMAL 缓冲区对应的 BUFFER 参数建议尽可能大,需确保命中率较高(90% 以上)。在本次测试中调整 BUFFER 缓冲区大小为 70GB,BUFFER_POOLS 数量为 48(保持与 CPU 核数一致)。

BUFFER = 70000                             #Initial System Buffer Size In Megabytes
BUFFER_POOLS = 48                    #number of buffer pools

此外,RECYCLE 缓存区供临时表空间使用,因此也要调整相关参数。这里调整 RECYCLE 缓冲区大小为 12GB,RECYCLE_POOLS 数量为 48(保持与 CPU 核数一致)。

RECYCLE = 12000                          #system RECYCLE buffer size in Megabytes
RECYCLE_POOLS = 48                  #Number of recycle buffer pools

最后需要根据 CPU 的核数,调整数据库的工作线程,在这里将工作线程调整为 48(保持与 CPU 核数一致)。

WORKER_THREADS = 48              #Number Of Worker Threads

*注明:修改 dm.ini 文件参数后,必须重启数据库才能生效。

  • 数据库程序设置 NUMA 绑定 

DM8 数据库程序可通过绑定 NUMA 限制程序在同一个物理 CPU 内,提升内存访问效率,从而提升数据库性能。

a. ssh 登陆 SMTX OS 节点(数据库虚拟机所在节点),执行 sudo virsh list 查看虚拟机的 ID 号。

b. 根据虚拟机 ID 执行 sudo virsh vcpuinfo 1,查看 vCPU 核与物理 CPU 核的对应关系 。

c. 运行 sudo numactl –hardware 查看 NUMA 亲和性关系。

d. 通过 numactl 命令启动数据库,实现绑定 NUMA 目的:

numactl -C 0-16,17-40,41-47 sh DmServiceDMSERVER start

完成上述所有优化操作后,重新执行 TPC-C 测试并与优化前的测试数据进行对比。

4.3.2 SMTX OS Boost 模式优化后性能大幅提升

通过开启 SMTX OS Boost 模式以及配套相关优化设置后,数据库性能在每个测试场景下的提升都是非常明显的,几乎都是翻倍提升。详细数据如下:

1) 100 warehouse 场景
2) 200 warehouse 场景
3) 300 warehouse 场景

5 测试结论

通过 Boost 模式以及相关优化,在 SmartX 超融合信创平台上运行达梦数据库可获得以下收益:

  • 性能是裸金属服务器(以 SATA SSD 为介质)的 1.77 倍,并已接近裸金属服务器(以 NVMe SSD 为介质),达到 NVMe 裸盘性能的 87.6%
  • SMTX OS 提供了 2 副本数据冗余保护(而裸盘虽然性能好,但无数据冗余保护)。
  • SMTX OS 只占用了单台服务器主机的 CPU 和内存资源的 50% ,意味着剩下的资源可以运行更多的业务,有效提升资源的利用率。
*满配:数据库使用单台服务器所有 CPU 核以及内存资源,96 CPU,256G 内存。
*半配:数据库使用单台服务器部分 CPU 核以及内存资源,48 CPU,96G 内存。

本次测试不仅为读者展示了信创数据库在超融合信创平台上的真实表现,也验证了 SmartX 超融合 Boost 模式对数据库的性能优化效果。欲了解更多 SmartX 超融合在数据库场景下的性能表现,请阅读:SmartX 超融合金融行业数据库支撑评测合集与长期落地案例综述

后记

从测试结果上看,SmartX 超融合平台凭借杰出的 I/O 性能及相关针对性优化,可明显提升达梦数据库 TPC-C 性能测试表现。由于上述测试模型是基于模拟生产场景,数据库的参数是注重 I/O 真实落盘(写入存储介质)。大家可能会有一个疑问:是否能通过内存缓存,以不落盘的方式进一步提升数据库 TPC-C 性能测试表现?

答案是可以的。一方面,可以调整数据库参数,使得数据库减少 I/O 落盘,同时扩大数据库虚拟机的内存,通过大量使用内存加速数据库响应能力。另一方面,由于原来的测试模型是由外部压力虚拟机经过千兆网络发出请求,最后到达数据库虚拟机进行处理,中间会经过多个环节:压力机的虚拟网卡→虚拟交换机→物理网卡→物理交换机→物理网卡→虚拟交换机→数据库机的虚拟网卡。整个网络传输的环节会带来一定的性能损耗。我们可以模拟屏蔽网络传输影响,额外做一个测试作为参考:将压力程序安装在数据库虚拟机本地,使得请求压力不经过网络,直接在数据库虚拟机内部发出,并在虚拟机内部处理。

经过上述一系列变更后,我们再次执行 TPC-C 测试,结果如下:

当 warehouse= 100,不同并发数量场景下 TPC-C 测试的 tpmc(NewOrder) 值:

 warehouse= 200,不同并发数量场景下 TPC-C 测试的 tpmc(NewOrder) 值:

当 warehouse= 300,不同并发数量场景下 TPC-C 测试的 tpmc(NewOrder) 值:

从测试结果可以看到,TPC-C 性能有明显提升,在 100 warehouse/100 terminal 场景下可达 468113 TPM(最高)。但这种数据库配置模型由于有大量数据缓存在内存中,I/O 没有及时落盘,如系统遭遇突然断电,有可能导致数据库不一致的情况发生,所以生产环境中的数据库一般很少采用(除非是只读数据库),测试结果仅作为参考。

下载《SmartX 超融合技术原理与特性解析合集(含 VMware 对比)》,进一步了解 SmartX 如何通过技术创新提升基础架构性能与可靠性。

推荐阅读:

 

继续阅读