OCK-RDMA使用示例
资源池化特性提供备机实时一致性读功能,主备之间页面交换可选择通过RDMA加速。本章节介绍了如何在资源池化中开启RDMA通信功能。
前置条件
开启RDMA功能依赖CX5网卡,并且依赖OCK RPC动态库。
操作步骤
步骤1: 获取OCK RPC包。
从指定Vastbase接口人处获取。
步骤2: 部署OCK RPC包。
1、解压OCK RPC包。
tar -zxf OCK_platform_rpc_22.0.0_EulerOS-aarch64.tar.gz
cd OCK_platform_rpc_22.0.0_EulerOS-aarch64_release
tar -zxf OCK_platform_rpc_EulerOS_aarch64.tar.gz
tar -zxf OCK_platform_rpc_sbin.tar.gz
cp rpc_sbin/ock_rpc_opengauss.sh ./
2、修改部署脚本ock_rpc_opengauss.sh参数。
# Deployment user, which is the same as the opengauss user.
# It is a non-root user. Ensure that this user exists on all servers.
USER_NAME="${USER}"
# Deployment server, which can contain native
HOST_IP=(30.30.xx.7 30.30.xx.8)
# Deployment package. The package name starts with OCK_platform_rpc.
PACKAGES="OCK_platform_rpc_aarch64_EulerOS.tar.gz"
# Specifies the path from the SCP package to the server.
# If the path does not exist, the path is automatically created.
PATH_TO_SCP="/home/ock/test"
# Opengauss environment variable
GAUSSHOME="/home/ock/mppdb_temp_install"
# OCK_RPC environment variable. Do not change
OCK_RPC_LIB_PATH="${GAUSSHOME}/lib"
脚本中涉及参数如下:
- USER_NAME:DN所在机器用户名。
- HOST_IP:集群机器ip,包括本机机器。
- PACKAGES:获取到的ock rpc二进制包名(与机器操作系统架构匹配)。
- PATH_TO_SCP: 拷贝路径。
- GAUSSHOME:同Vastbase配置的环境变量GAUSSHOME一致。
- OCK_RPC_LIB_PATH:ock rpc二进制所在路径,资源池化会通过动态加载方式使用,请务必配置正确。
3、执行部署脚本ock_rpc_opengauss.sh。
sh ock_rpc_opengauss.sh
实现功能:
- 完成集群中OCK RPC二进制包的部署,解压和拷贝。
- 配置好相关的环境变量$OCK_RPC_LIB_PATH。
- 配置集群节点UCX环境变量。(UCX为基于RDMA开发的通信组件,OCK RPC是在UCX基础上开发的适配资源池化的通信组件。)
4、配置其他参数环境变量。
export UCX_ZCOPY_THRESH="32768"
export UCX_USE_MT_MUTEX=n
export UCX_NET_DEVICES=mlx5_1:1
参数说明:
UCX_ZCOPY_THRESH:优化参数,RDMA传输过程中减少内存申请。
单位:byte。
默认值:32768。(可选参数,建议默认值)。
UCX_USE_MT_MUTEX:优化参数,RDMA发送过程中保证数据一致性锁的类型。
n:原子锁;y:互斥锁。(可选参数。建议使用原子锁,性能较好)。
UCX_NET_DEVICES:UCX配置参数,用于指定网卡端口,可安装mlnx_ofed驱动,使用ibdev2netdev命令查看当前RDMA活动端口。(建议指定活动端口)。
环境变量配置完成之后,执行
source ~/.bashrc
。
步骤3: 执行手动安装示例中的1~5完成vb_initdb建库。
步骤4: 修改postgresql.conf配置文件。
配置ss_interconnect_type=RDMA,添加配置项ss_rdma_work_config与ss_ock_log_path。参数说明及配置请参见资源池化参数。
示例:
ss_interconnect_type=RDMA
ss_rdma_work_config ='6 10' (OCK RDMA使用用户态poll方式,并绑定cpu [6 10],空格分开)
ss_ock_log_path=“/home/ock_test/log”(OCK RDMA 消息通信过程日志记录)
步骤5: 执行vb_ctl start命令拉取数据库进程。
vb_ctl start -D /data/ss_test/dn_primary