配置RDMA提升GaussDB(DWS)查询性能
面对高性能计算、大数据分析等IO高并发、低时延应用,现有TCP/IP软硬件架构不能满足应用的需求,这主要体现在传统的TCP/IP网络通信是通过内核发送消息,这种通信方式存在很高的数据移动和数据复制的开销。为解决网络传输中服务器端数据处理的延迟,RDMA(RemoteDirect Memory Access,全称“远程直接内存访问”)应运而生。GaussDB(DWS)支持RDMA/RoCE协议,在高并发大带宽场景下能明显提升查询性能。
RDMA在网络出现丢包时会造成严重的性能下降,RoCE协议没有IB网络支持,需要在以太网上配置PFC(Priority Flow Control)以实现无损网络。
操作步骤
- 官方驱动安装。
- 下载官方驱动安装。
以mellanox为例,参考以下链接获取对应OS的5.4版本。
https://network.nvidia.com/products/infiniband-drivers/linux/mlnx_ofed/
- 安装驱动。
解压驱动包后,调用./mlnxofedinstall命令进行安装,如果提示OS版本不匹配,需执行以下命令重新打包安装包后,使用新的安装包安装。
1
./mlnxofedinstall --force --without-fw-update --add-kernel-support
- 下载官方驱动安装。
- 主机侧PFC配置。
root用户下执行以下命令。其中,enp1s0f0需替换成实际的RDMA网卡名称。
1
mlnx_qos -i enp1s0f0 --pfc 1,0,0,0,0,0,0,0 --trus dscp
命令PFC配置输出priority 0队列下均为打开状态,表示配置成功。
- 如果使用bond网络,需要对每个RDMA网卡都进行配置,bond网卡对应的物理网卡通过cat /proc/net/bonding/bond0命令查询。
- mlnx_qos命令需要加入/etc/rc.d/rc.local进行持久化配置。
- 交换机侧PFC配置。
交换机配置需要由专业人员实施,避免破坏网络环境。
以下操作中的端口名称需替换成实际的RoCE网络使用的端口名称,需对每个端口都进行相同操作,或者把使用RoCE网络的端口组成port-group统一配置。