近日,北京志凌海纳科技有限公司(以下简称 “SmartX”)携手 openGauss 社区完成了 openGauss 数据库基于 SmartX 超融合平台(SMTX OS)和 SmartX 分布式存储平台(SMTX ZBS)的性能测试和调优。
结果显示,在超融合环境中,openGauss 数据库性能提升了 41% ~ 174%;在分布式存储环境中,其最高值能可达到裸金属服务器 + 本地 NVMe SSD 性能的 110%。
背景
随着信息技术应用与创新转型进入深水区,国产数据库的市场占有率快速增长,openGauss 作为重要的企业级开源关系数据库,其商业版本被广泛的应用于金融、政府、电信、能源等关键行业的核心场景。
为帮助用户更好的了解 openGauss 数据库在自主创新硬件平台及 SmartX 软件平台上的运行表现,SmartX 携手 openGauss 社区围绕 openGauss-5.1.0 企业版在 SmartX 超融合自主创新平台和 SmartX 分布式存自主创新平台(基于鲲鹏芯片的自主创新服务器)上进行了一系列的性能测试和调优,并通过本文分享相关的测试结果与调优思路。
测试方法
本次测试使用 BenchmarkSQL 基于 TPC-C 基准执行测试,以便更客观地评价 openGauss 数据库在 SmartX 自主创新平台上的性能表现。
TPC-C
TPC-C 是一个业界公认的事务处理性能基准测试。它是 Transaction Processing Performance Council(TPC)发布的标准基准测试之一,用于测试在线事务处理(OLTP)系统的性能。TPC-C 测试基于一个虚拟的在线订单处理应用程序,它包括了一系列的事务操作,如客户订单、库存管理、交付处理等。TPC-C 测试结果以“每分钟事务处理量”(TPM)为单位进行度量。
BenchmarkSQL
BenchmarkSQL 是一款可以使用 TPC-C 测试规范来运行基准测试的工具。具体来说,BenchmarkSQL 可以使用 TPC-C 测试规范中定义的事务操作和数据结构,来模拟一个 TPC-C 测试环境,并对数据库系统进行性能测试。因此,BenchmarkSQL 可以被认为是TPC-C 测试的一种实现方式。
SMTX OS 超融合场景测试
1. 测试环境
滑动了解软硬件信息
*超融合测试场景中,需要留部分 CPU 和内存资源给 SMTX OS 作为开销,因此,openGauss数据库无法独占物理机。
2. 测试模型
超融合场景测试分为两种部署架构:
部署架构 1:openGauss 数据库和 BenchmarkSQL 压力程序分别部署在不同的虚拟机(并运行在不同物理服务器节点),BenchmarkSQL 虚拟机的访问请求通过网络发送到 openGauss 数据库虚拟机进行处理。
部署架构 2:openGauss 数据库和 BenchmarkSQL 部署在同一虚拟机之内(openGauss 所在虚拟机),BenchmarkSQL 虚拟机的访问请求在虚拟机内部直接传送到 openGauss 数据库虚拟机进行处理,没有网络开销。
3. 测试模型
3.1 优化前的初步测试结果
部署架构 1 测试结果:(测试结果为 Neworder 交易,单位:TPM)
部署架构 2 测试结果:(测试结果为 Neworder 交易,单位:TPM)
3.2 主要调优手段
主机优化
-
BIOS 开启性能模式(CPU 最大性能)
超融合软件优化
-
开启 boost 模式加速(降低 IO 延时)
-
开启 RDMA 网络(降低网络延时)
虚拟机优化
-
开启 vCPU 绑定(不共享 CPU)
-
利用多个虚拟卷分开存放表空间以及日志文件(提升 IO 并发)
操作系统优化
-
网络中断参数优化(降低网络延时)
-
文件系统设置块大小为 8k(与数据库块大小对齐)
-
关闭 swap
-
关闭内存大页
-
启动参数优化(禁用不必要服务)
数据库参数优化
-
为数据库进程绑定 numa 拓扑
-
调整 redo log 大小
-
开启/关闭异步 IO
-
……
BenchmarkSQL 优化
-
创建分表,引入索引(提升数据库并发访问)
3.3 调优前后测试结果对比
本次测试包含多项调优项目,但由于篇幅有限,无法逐一介绍调优效果,因此选择了两项提升幅度较大的调优项目给大家参考:
BenchmarkSQL 优化 - 创建分表
当 BenchmarkSQL 程序填充数据时,它主要通过调用脚本来创建数据库表格。然而,原始脚本只通过创建单一表格来进行填充,这会限制并发访问的优势。为了解决该问题,我们对创建脚本进行了优化,将数据分表存放,让数据库访问时可以获取多个表格的响应。
基于测试结果,我们可以得出以下结论:
-
在默认情况下,分表后 tpmC 值有明显提升,增长区间为 17%~116%,且并发度越高,tpmC 值提升越明显。
-
在数据库启用异步日志后,性能有较大提升(50% 以上),经后台监控查看,初步判断 IO 此时成为主要性能瓶颈。
IO 优化
由于观察到同步日志下,其性能会受到 IO 性能影响。因此我们对现有环境进行 IO 及运算能力的优化:
-
加虚拟磁盘,分离日志文件和表空间放置在不同的虚拟磁盘。
-
调整宿主机 profile。
-
vCPU NUMA 绑定。
经调优后,tpmC 性能提升了 16%~ 43%。
综合调优前后性能对比
在超融合场景下,经过多种手段调优后,tpmC 性能综合提升了 41% ~ 174%,性能提升效果非常明显。
SMTX ZBS 分布式存储场景测试
1. 测试环境
1.1 使用 iSCSI 方式时,计算端配置情况
1.2 使用 NVMe-oF 方式时,计算端配置情况
*分离式部署场景中, openguass 数据库直接部署在物理机上,可完全独占这台服务器的所有资源。
2. 测试模型
分离式部署场景测试分为两种部署架构:
部署架构 1:openGauss 数据库服务器通过 iSCSI 协议连接 SMTX ZBS 分布式存储,这是一种连接分布式存储最常用(最通用)的协议,由于 iSCSI 协议性能开销较大,因此 IO 延时较高。
部署架构 2:为应对 IO 延时要求苛刻的数据库场景,SMTX ZBS 提供了高性能、低延时的 NVMe-oF 接入协议。openGauss 数据库服务器通过 NVMe-oF 协议接入存储可有效降低 IO 延时。
3. 测试内容
3.1 NVMe-oF 接入协议对比 iSCSI 协议的性能提升
在 SMTX ZBS 分离部署场景下沿用了前面章节 SMTX OS 超融合场景的调优手段,并额外增加了索引的优化,性能测试结果如下:
滑动了解不同 warehose 下,tpmC 对比:
基于测试结果,我们可以得出以下结论:
-
采用 NVMe-oF 接入协议,相比 iSCSI 接入协议在所有场景下均能获得性能提升,tpmC 性能提升比例在 9% ~ 25% 之间。
3.2 NVMe-oF 接入 ZBS 分布式存储对比本地 NVMe SSD 的测试结果
为帮助用户更好的理解测试结果,我们还增加了裸金属服务器 + 本地 NVMe SSD 的性能测试,其采用本地 NVMe SSD 裸盘格式化后用作数据库的存储空间进行测试。
其中,BenchmarkSQL 程序也部署在 openGauss 数据库所在的裸金属服务器中。
众所周知,NVMe 裸盘的 IO 性能是非常优秀的,因为我们以此模型为参照物,对比 SMTX ZBS 分布式存储在 NVMe-oF 接入协议下的性能表现,其测试结果如下:
滑动了解不同 warehose 下,tpmC 对比:
基于测试结果,我们可以得出以下结论:
-
大部分场景下,裸金属服务器 +ZBS NVMe-oF 协议接入的性能与裸金属服务器 + 本地 NVMe SSD 持平甚至略高。
-
多个测试模型中,裸金属服务器 +ZBS NVMe-oF 协议接入 tpmC 值最低也可以达到裸金属服务器 + 本地 NVMe SSD 性能的 73%,最高值能达到裸金属服务器 + 本地 NVMe SSD 性能的 110%。
本次测试为双方用户展示了 openGauss 数据库在 SmartX 平台上的真实表现,为用户提供了更多选择和参考。