TPCC性能调优测试指导概述
本章节主要介绍openGauss数据库内核基于鲲鹏服务器和openEuler操作系统,为了达到最佳TPMC性能所依赖的关键系统级调优。
硬件要求
- 服务器数量:2台鲲鹏920服务器(1台用于数据库服务器,1台用于TPCC客户端)。
- 服务器硬件规格:
- Memory:大于512GB。
- Free Disk:4块NVME硬盘,每块容量大于1TB。
- 网卡:Hi1822千兆网卡,光纤互连。
操作系统要求
操作系统要求:openEuler-20.03-LTS(aarch64 架构)
软件依赖
表 1 软件依赖要求
前置软件安装
-
安装jdk。
a.下载并安装jdk。
b. 配置环境变量,具体如下:
export JAVA_HOME=your_path/jdk1.8.0_232 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/jre export PATH=${PATH}:${JAVA_HOME}/bin export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8
-
安装numactl。
执行如下命令安装numactl。
yum install –y numactl
-
安装ant。
a. 执行如下命令安装ant。
yum install –y ant
b. 设置环境变量,修改文件/etc/profile,添加下面两行。
export ANT_HOME=/usr/share/ant/ export PATH=${PATH}:${ANT_HOME}/bin
说明: 可能对于不同的操作系统ANT_HOME的安装路径不一样,可以通过find命令找打其对应的安装路径。
-
安装htop工具,具体请参见htop - an interactive process viewer。
BIOS配置
-
恢复BIOS出厂设置。
-
修改相关BIOS设置,如下所示:
a. BIOS>Advanced>MISC Config,配置Support Smmu为Disabled,如图1所示。
b.BIOS>Advanced>MISC Config,配置CPU Prefetching Configuration为Disabled,如图1所示。
c.BIOS>Advanced>Memory Config,配置Die Interleaving为Disable,如图2所示。
-
重启操作系统。
操作系统配置
1.安装openEuler操作系统,具体请参见《openEuler 安装指南》。
2.修改操作系统内核PAGESIZE为64KB。
- a. 查看操作系统内核PAGESIZE的值。 以root用户登录操作系统,执行如下命令查看PAGESIZE的值。
getconf PAGESIZE
如图1所示,表示操作系统内核PAGESIZE为64KB。 图 1 查看操作系统内核PAGESIZE的值
- b. 如果PAGESIZE不为64KB,需要修改参数并重新编译内核,详情请参考编译EulerOS/openEuler 内核方法,以修改pagesize 64K为例-云社区-华为云。
3.关闭CPU中断的服务irqbalance。irqbalance负责均衡CPU中断,避免单CPU处理中断负载过重。
以root用户登录操作系统,执行如下命令。
service irqbalance stop # 关闭Irq balance。
echo 0 > /proc/sys/kernel/numa_balancing
echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled
echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag
echo none > /sys/block/nvme*n*/queue/scheduler # 针对nvme磁盘io队列调度机制设置。
文件系统配置
为了提升数据库的IO效率,我们使用NVME盘作为数据盘,需要采用的文件系统类型为xfs,数据块大小为8KB。具体操作如下:
-
a. 执行如下命令查看当前挂载的nvme盘。
df -h | grep nvme
结果如下。
/dev/nvme0n1 3.7T 2.6T 1.2T 69% /data1 /dev/nvme1n1 3.7T 1.9T 1.8T 51% /data2 /dev/nvme2n1 3.7T 2.2T 1.6T 59% /data3 /dev/nvme3n1 3.7T 1.4T 2.3T 39% /data4
b.执行如下命令查看nvme盘的信息。
xfs_info
例如执行命令xfs_info /data1,如图1所示,block的大小正好为8KB,不需要修改;若block不满足8kB大小的要求,需要重新格式化,格式化前请将数据进行备份。
-
对于需要修改的磁盘,备份所需的数据至其他磁盘或其他服务器。
-
格式化磁盘为xfs文件系统。
以/dev/nvme0n1盘,加载路径为/data1为例,参考命令如下。此步骤需根据实际环境情况进行操作。
umount /data1 mkfs.xfs -b size=8192 /dev/nvme0n1 -f mount /dev/nvme0n1 /data1
-
执行步骤一,确认blocksize是否已修改为8KB。
网络配置
数据库服务端及客户端绑核
-
安装openGauss数据库,具体操作请参考《安装指南》。
-
停止数据库,具体操作请参考《数据库运维指南》中的“启停openGauss”章节。
-
使用gs_guc工具修改数据库端口、IP等,gs_guc的使用请参考《工具与命令参考》中的“服务端工具>gs_guc”章节。
-
使用gs_guc工具设置如下参数。
advance_xlog_file_num = 100 numa_distribute_mode = 'all' thread_pool_attr = '464,4,(cpubind:1-27,32-59,64-91,96-123)' xloginsert_locks = 16 wal_writer_cpu=0 wal_file_init_num = 20 xlog_idle_flushes_before_sleep = 500000000 pagewriter_sleep = 10ms
-
执行如下命令以绑核方式启动服务端数据库。
numactl -C 1-27,32-59,64-91,96-123 gaussdb --single_node -D /data1/gaussdata -p 3625 &
其中0核用于wal_writer、1-27、32-59、64-91、96-123表示使用111个核运行TPCC程序,其余的16个核用来处理服务端的网络中断。
-
执行如下命令,将客户端CPU的48个核与网卡中断队列进行绑定:
sh bind_net_irq.sh 48