From 0e41b4143e785acb83770930a36d461bcac1a429 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?why=E6=B6=9B?= <9283827+whytao@user.noreply.gitee.com>
Date: Tue, 7 Nov 2023 06:42:24 +0000
Subject: [PATCH 1/5] =?UTF-8?q?RDMA=E7=BD=91=E7=BB=9C=E6=8C=87=E5=AF=BC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: why涛 <9283827+whytao@user.noreply.gitee.com>
---
...21\347\273\234\346\214\207\345\257\274.md" | 470 ++++++++++++++++++
.../figures/zh-cn_image_0000001686355694.png" | Bin 0 -> 32459 bytes
.../figures/zh-cn_image_0000001686524646.png" | Bin 0 -> 22315 bytes
.../figures/zh-cn_image_0000001701131200.png" | Bin 0 -> 23074 bytes
.../figures/zh-cn_image_0000001701290696.png" | Bin 0 -> 23246 bytes
.../figures/zh-cn_image_0000001733510033.png" | Bin 0 -> 57358 bytes
.../figures/zh-cn_image_0000001734363669.png" | Bin 0 -> 21411 bytes
.../figures/zh-cn_image_0000001734363673.png" | Bin 0 -> 21367 bytes
.../figures/zh-cn_image_0000001734394589.png" | Bin 0 -> 11952 bytes
.../figures/zh-cn_image_0000001734403817.png" | Bin 0 -> 27063 bytes
.../figures/zh-cn_image_0000001739179505.png" | Bin 0 -> 6575 bytes
.../figures/zh-cn_image_0000001745935689.png" | Bin 0 -> 82292 bytes
.../figures/zh-cn_image_0000001745981337.png" | Bin 0 -> 11826 bytes
.../figures/zh-cn_image_0000001749130525.png" | Bin 0 -> 9099 bytes
.../public_sys-resources/icon-caution.gif" | Bin 0 -> 2251 bytes
.../public_sys-resources/icon-danger.gif" | Bin 0 -> 2251 bytes
.../public_sys-resources/icon-note.gif" | Bin 0 -> 2052 bytes
.../public_sys-resources/icon-notice.gif" | Bin 0 -> 2178 bytes
.../public_sys-resources/icon-tip.gif" | Bin 0 -> 1305 bytes
.../public_sys-resources/icon-warning.gif" | Bin 0 -> 2251 bytes
20 files changed, 470 insertions(+)
create mode 100644 "app/zh/blogs/RDMA\347\275\221\347\273\234\346\214\207\345\257\274/RDMA\347\275\221\347\273\234\346\214\207\345\257\274.md"
create mode 100644 "app/zh/blogs/RDMA\347\275\221\347\273\234\346\214\207\345\257\274/figures/zh-cn_image_0000001686355694.png"
create mode 100644 "app/zh/blogs/RDMA\347\275\221\347\273\234\346\214\207\345\257\274/figures/zh-cn_image_0000001686524646.png"
create mode 100644 "app/zh/blogs/RDMA\347\275\221\347\273\234\346\214\207\345\257\274/figures/zh-cn_image_0000001701131200.png"
create mode 100644 "app/zh/blogs/RDMA\347\275\221\347\273\234\346\214\207\345\257\274/figures/zh-cn_image_0000001701290696.png"
create mode 100644 "app/zh/blogs/RDMA\347\275\221\347\273\234\346\214\207\345\257\274/figures/zh-cn_image_0000001733510033.png"
create mode 100644 "app/zh/blogs/RDMA\347\275\221\347\273\234\346\214\207\345\257\274/figures/zh-cn_image_0000001734363669.png"
create mode 100644 "app/zh/blogs/RDMA\347\275\221\347\273\234\346\214\207\345\257\274/figures/zh-cn_image_0000001734363673.png"
create mode 100644 "app/zh/blogs/RDMA\347\275\221\347\273\234\346\214\207\345\257\274/figures/zh-cn_image_0000001734394589.png"
create mode 100644 "app/zh/blogs/RDMA\347\275\221\347\273\234\346\214\207\345\257\274/figures/zh-cn_image_0000001734403817.png"
create mode 100644 "app/zh/blogs/RDMA\347\275\221\347\273\234\346\214\207\345\257\274/figures/zh-cn_image_0000001739179505.png"
create mode 100644 "app/zh/blogs/RDMA\347\275\221\347\273\234\346\214\207\345\257\274/figures/zh-cn_image_0000001745935689.png"
create mode 100644 "app/zh/blogs/RDMA\347\275\221\347\273\234\346\214\207\345\257\274/figures/zh-cn_image_0000001745981337.png"
create mode 100644 "app/zh/blogs/RDMA\347\275\221\347\273\234\346\214\207\345\257\274/figures/zh-cn_image_0000001749130525.png"
create mode 100644 "app/zh/blogs/RDMA\347\275\221\347\273\234\346\214\207\345\257\274/public_sys-resources/icon-caution.gif"
create mode 100644 "app/zh/blogs/RDMA\347\275\221\347\273\234\346\214\207\345\257\274/public_sys-resources/icon-danger.gif"
create mode 100644 "app/zh/blogs/RDMA\347\275\221\347\273\234\346\214\207\345\257\274/public_sys-resources/icon-note.gif"
create mode 100644 "app/zh/blogs/RDMA\347\275\221\347\273\234\346\214\207\345\257\274/public_sys-resources/icon-notice.gif"
create mode 100644 "app/zh/blogs/RDMA\347\275\221\347\273\234\346\214\207\345\257\274/public_sys-resources/icon-tip.gif"
create mode 100644 "app/zh/blogs/RDMA\347\275\221\347\273\234\346\214\207\345\257\274/public_sys-resources/icon-warning.gif"
diff --git "a/app/zh/blogs/RDMA\347\275\221\347\273\234\346\214\207\345\257\274/RDMA\347\275\221\347\273\234\346\214\207\345\257\274.md" "b/app/zh/blogs/RDMA\347\275\221\347\273\234\346\214\207\345\257\274/RDMA\347\275\221\347\273\234\346\214\207\345\257\274.md"
new file mode 100644
index 00000000..b45cfd8b
--- /dev/null
+++ "b/app/zh/blogs/RDMA\347\275\221\347\273\234\346\214\207\345\257\274/RDMA\347\275\221\347\273\234\346\214\207\345\257\274.md"
@@ -0,0 +1,470 @@
+---
+title: "Sample Post"
+date: '2020-03-03'
+category: 'blog'
+tags: ['openGauss']
+archives: '2020-03'
+author:'openGaussBlog Maintainer'
+summary: "Just about everything you'll need to style in the theme:headings, paragraphs, blockquotes, tables, code blocks, and more."
+---
+
+
+
+# 识别CX4/CX5网卡
+
+执行以下命令。
+
+```
+lspci |grep Mellanox
+```
+
+回显如下:
+
+```
+81:00.0 Ethernet controller: Mellanox Technologies MT27800 Family [ConnectX-5]
+81:00.1 Ethernet controller: Mellanox Technologies MT27800 Family [ConnectX-5]
+```
+
+# 安装MLNX驱动
+
+1. 选择下载与OS匹配的驱动包,地址:[https://network.nvidia.com/products/infiniband-drivers/linux/mlnx\_ofed/](https://network.nvidia.com/products/infiniband-drivers/linux/mlnx_ofed/)。
+
+ 
+
+2. 新建目录,将OS镜像文件挂载至新建目录。OS镜像名称请根据实际情况进行修改。
+
+ ```
+ mkdir -p /mnt/iso
+ mount openEuler-22.03-LTS-x86_64-dvd.iso /mnt/iso
+ ```
+
+3. 安装过程中需要部分依赖,请配置好OS镜像源,例如本地镜像。
+ 1. 打开镜像源文件。
+
+ ```
+ vim /etc/yum.repos.d/openEuler.repo
+ ```
+
+ 2. 按“i”进入编辑模式,只保留以下内容。
+
+ ```
+ [OS]
+ name=OS
+ baseurl=file:///mnt/iso
+ enabled=1
+ gpgcheck=0
+ ```
+
+ 3. 按“Esc”键,输入**:wq!**,按“Enter”保存并退出编辑。
+ 4. 缓存软件包。
+
+ ```
+ yum makecache
+ ```
+
+4. 上传驱动包至服务器并解压。驱动包名称请根据实际情况进行修改。
+
+ ```
+ tar -zxvf MLNX_OFED_LINUX-5.4-3.7.5.0-openeuler22.03-x86_64.tgz
+ ```
+
+5. 进入解压后的驱动包目录,执行以下命令安装驱动。
+
+ ```
+ ./mlnxofedinstall --without-depcheck --without-fw-update --force
+ ```
+
+ 如果提示内核不匹配,则执行以下命令。
+
+ ```
+ ./mlnxofedinstall --add-kernel-support
+ ```
+
+6. 设置重启后自动拉起驱动。
+
+ ```
+ chkconfig --add openibd
+ /etc/init.d/openibd start
+ chkconfig openibd on
+ ```
+
+7. 安装完成后重启服务器。
+
+# 安装检查
+
+1. 检查驱动RoCE LAG功能。
+ 1. 查看RoCE LAG功能是否启用。
+
+ ```
+ find /sys/ -name roce_lag_enable | xargs cat
+ ```
+
+ - 输出为1,则表示开启。
+ - 输出为0或无输出,则表示关闭。
+ - 预期要关闭才可以,如果没有关闭,请执行[1.b](#li519083722516)。
+
+ 2. 关闭RoCE LAG功能。
+
+ ```
+ sed '/load_module mlx5_core/a\ files=`find /sys -name roce_lag_enable`;for file in $files;do echo 0 > $file;done' -i /etc/init.d/openibd
+ ```
+
+ 3. 执行后重启节点使其生效,重启后再执行[1.a](#li389014811257)查看是否生效。
+
+ ```
+ reboot
+ ```
+
+2. 检查驱动版本。
+
+ ```
+ ofed_info -s
+ ```
+
+ 回显驱动版本与[安装MLNX驱动](安装MLNX驱动.md)版本一致则版本无误。
+
+3. 加载MST工具。
+
+ ```
+ mst start
+ ```
+
+ 回显如下表示加载成功。
+
+ ```
+ Starting MST (Mellanox Software Tools) driver set
+ Loading MST PCI module - Success
+ Loading MST PCI configuration module - Success
+ Create devices
+ Unloading MST PCI module (unused) - Success
+ ```
+
+4. 查询设备路径和网络端口。
+ 1. 查询设备上RoCE和IB卡的设备路径。
+
+ ```
+ mst status
+ ```
+
+ 回显如下:
+
+ ```
+ MST modules:
+ ------------
+ MST PCI module is not loaded
+ MST PCI configuration module loaded
+
+ MST devices:
+ ------------
+ /dev/mst/mt4119_pciconf0 - PCI configuration cycles access.
+ domain:bus:dev.fn=0000:81:00.0 addr.reg=88 data.reg=92 cr_bar.gw_offset=-1
+ Chip revision is: 00
+ ```
+
+ 其中,MST devices字段枚举的设备路径/dev/mst/mst\_typeN(N取值:0,1,2,……)代表一张CX卡,mst\_type和CX网卡型号映射关系参考[表1](#table93856218287)。
+
+ **表 1** mst\_type和CX网卡型号映射关系
+
+
+
mst_type
+ |
+ 网卡型号
+ |
+
+
+ mt4099_pci_cr
+ |
+ CX3
+ |
+
+ mt4117_pciconf
+ |
+ CX4-Lx
+ |
+
+ mt4119_pciconf
+ |
+ CX5
+ |
+
+ mt4123_pciconf
+ |
+ CX6
+ |
+
+
+
+
+ 2. 查看需要检查的网络端口,后续步骤将对查询到的所有端口进行检查。
+
+ ```
+ ll /dev/mst
+ ```
+
+ 
+
+ 当前节点需要对“mt4119\_pciconf0”和“mt4119\_pciconf0.1”这两个端口进行检查。
+
+5. 检查固件版本。
+ 1. 查询RoCE/IB卡的固件版本,其中“/dev/mst/mt4119\_pciconf0“为上一步中查询到的设备路径,请根据实际情况进行替换。
+
+ ```
+ flint -d /dev/mst/mt4119_pciconf0 q
+ ```
+
+ 查询结果如下。
+
+ ```
+ Image type: FS4
+ FW Version: 16.31.2006
+ FW Release Date: 31.8.2021
+ Product Version: 16.31.2006
+ Rom Info: type=UEFI version=14.24.15 cpu=AMD64
+ type=PXE version=3.6.404 cpu=AMD64
+ Description: UID GuidsNumber
+ Base GUID: ec0d9a0300c152e4 8
+ Base MAC: ec0d9ac152e4 8
+ Image VSD: N/A
+ Device VSD: N/A
+ PSID: MT_0000000012
+ Security Attributes: N/A
+ ```
+
+6. 检查固件网络协议。
+ 1. 查看当前网络协议,此处以ETH协议为例。
+
+ ```
+ ibdev2netdev -v
+ ```
+
+ 
+
+ - 若网卡名前缀为ib,则表示当前网络协议为IB,执行[6.b](#li7704752131814)。
+ - 若网卡名前缀为en,则表示当前网络协议为ETH,跳至[7](#li71941554151214)。
+
+ 2. 查看LINK\_TYPE\_P1、LINK\_TYPE\_P2的值,以/dev/mst/mt4123\_pciconf0为例。
+
+ ```
+ mlxconfig -d /dev/mst/mt4123_pciconf0 q|grep LINK_TYPE_P1
+ mlxconfig -d /dev/mst/mt4123_pciconf0 q|grep LINK_TYPE_P2
+ ```
+
+ - 若结果为空,表示此环境不支持更改网络协议,请更换环境。
+ - 若查询有结果,表示网络协议可修改。
+ - 查询值应为ETH\(2\),跳至[7](#li71941554151214)。
+
+ 
+
+ - 若查询值为IB\(1\),则执行[6.c](#li1297794616574)修改。
+
+ 
+
+ 3. 设置LINK\_TYPE\_P1和LINK\_TYPE\_P2的值,以/dev/mst/mt4123\_pciconf0为例。
+
+ ```
+ mlxconfig -d /dev/mst/mt4123_pciconf0 s LINK_TYPE_P1=2
+ mlxconfig -d /dev/mst/mt4123_pciconf0 s LINK_TYPE_P2=2
+ ```
+
+ 
+
+ 4. 执行**reboot**命令重启,重复[6.b](#li7704752131814)确认已修改成功。
+
+7. 验证RDMA网络。
+
+ Server节点执行:
+
+ ```
+ ib_send_bw -d mlx5_1
+ ```
+
+ Client节点执行(xx.xx.xx.xx为Server节点的IP地址):
+
+ ```
+ ib_send_bw -d mlx5_1 xx.xx.xx.xx
+ ```
+
+8. (可选)设置固件选项。
+
+ > **说明:**
+ >此步骤属于优化项,可以降低网络时延,建议用户进行操作。
+
+ 1. 查询CX卡固件选项PCI\_WR\_ORDERING的值。
+
+ 以“/dev/mst/mt4119\_pciconf0“为例,查询该设备的两个端口固件设置,查询结果中per\_mkey值应为1,若不为1则执行[8.b](#li19557114614540)修改。
+
+ ```
+ mlxconfig -d /dev/mst/mt4119_pciconf0 q | grep PCI_WR_ORDERING
+ mlxconfig -d /dev/mst/mt4119_pciconf0.1 q | grep PCI_WR_ORDERING
+ ```
+
+ 
+
+ 2. 对一张CX5卡两个端口的固件选项PCI\_WR\_ORDERING进行设置,然后执行**reboot**命令重启,环境恢复后,按照[8](#li1555794655417)再次检查一遍,检查是否修改成功。
+
+ ```
+ mlxconfig -y -d /dev/mst/mt4119_pciconf0 s PCI_WR_ORDERING=1
+ ```
+
+ 
+
+ ```
+ mlxconfig -y -d /dev/mst/mt4119_pciconf0.1 s PCI_WR_ORDERING=1
+ ```
+
+ 
+
+# 配置网卡IP
+
+1. 查看以太网设备和IB设备/端口之间的关联。
+
+ ```
+ ibdev2netdev -v
+ ```
+
+ - 当前节点网卡驱动客户端mlx5\_0关联网卡名称enp24s0f0
+ - 当前节点网卡驱动客户端mlx5\_1关联网卡名称enp24s0f1
+
+ 
+
+2. 查看网卡状态。
+
+ ```
+ ifconfig -a
+ ```
+
+ 
+
+ 若四个状态均正常表示可正常使用。
+
+ - UP:代表网卡开启状态。
+ - RUNNING:代表网卡的网线被接上。
+ - MULTICAST:支持组播。
+ - MTU 1500:最大传输单元。
+
+3. 根据环境配置网卡IP地址。以下为添加“/etc/sysconfig/network-scripts/ifcfg-enp24s0f0“config文件方式。使用**systemctl restart network.service**重启应用。
+
+ 
+
+ 配置完成后,根据[2](#li1681619318285)查看网卡状态。
+
+ 
+
+# 常用IB命令
+
+**表 1** 常用IB命令
+
+
+命令
+ |
+含义
+ |
+
+
+lspci |grep Mell
+ |
+查看机器上是否存在IB卡(搜索厂商名字Mellanox)。
+ |
+
+ibstatus
+ |
+查看IB卡相关信息:链路状态,端口速率,端口GUID等信息。
+ |
+
+ibstat
+ |
+ibstat功能与ibstatus相似。
+ |
+
+ofed_info -s
+ |
+查询当前安装的驱动版本。
+ |
+
+ibv_devinfo
+ |
+查询当前节点系统中IB设备信息。
+ |
+
+ibqueryerrors -C mlx4_0 -P 1
+ |
+检查当前IB网络各端口的统计信息。
+ |
+
+perfquery
+ |
+查看IB卡端口丢包、端口符号错误。
+ |
+
+ibv_devices
+ |
+查询当前节点的IB卡 - ibv_devices。
+ |
+
+ibdump
+ |
+该工具可以抓取IB层报文,由Mellanox提供。
+ |
+
+ethtool --set-priv-flags eth-s0 sniffer on
+ |
+用ethtool命令使能Sniffer,可以使用TCPDUMP抓包。
+ |
+
+ib_atomic_bw
+ |
+计算一对机器之间RDMA原子事务的带宽,一个server端一个client端,通过CPU采样获取接受完整消息时间计算带宽。该测试支持双向测试,支持更换MTU大小,tx大小,迭代数,消息大小等,更多用法参见“-a”参数。
+ |
+
+ib_atomic_lat
+ |
+计算一对机器之间RDMA一定消息大小下原子事务的时延,client端发送RDMA atomic操作到服务器端,并对CPU时钟采样获取它接收消息完成情况,从而计算时延。
+ |
+
+ib_read_bw
+ |
+计算一对机器之间RDMA read操作带宽。
+ |
+
+ib_read_lat
+ |
+计算一对机器之间RDMA一定消息大小下read操作时延。
+ |
+
+ib_send_bw -d mlx5_1
+ |
+计算一对机器之间RDMA send操作带宽。
+ |
+
+ib_send_lat
+ |
+计算一对机器之间RDMA一定消息大小下send操作时延。
+ |
+
+ib_write_bw
+ |
+计算一对机器之间RDMA write操作带宽。
+ |
+
+ib_write_lat
+ |
+计算一对机器之间RDMA一定消息大小下write操作时延。
+ |
+
+raw_ethernet_bw
+ |
+计算一对机器之间send带宽。
+ |
+
+raw_ethernet_lat
+ |
+计算一对机器之间send一定大小消息的时延。
+ |
+
+rping
+ |
+检测RDMA CM连接是否OK。
+ |
+
+
+
diff --git "a/app/zh/blogs/RDMA\347\275\221\347\273\234\346\214\207\345\257\274/figures/zh-cn_image_0000001686355694.png" "b/app/zh/blogs/RDMA\347\275\221\347\273\234\346\214\207\345\257\274/figures/zh-cn_image_0000001686355694.png"
new file mode 100644
index 0000000000000000000000000000000000000000..48437c8dcd9645a8a7800c15d6193bff17619589
GIT binary patch
literal 32459
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
Jl@fs9{{t2Dr6B+S
literal 0
HcmV?d00001
diff --git "a/app/zh/blogs/RDMA\347\275\221\347\273\234\346\214\207\345\257\274/figures/zh-cn_image_0000001686524646.png" "b/app/zh/blogs/RDMA\347\275\221\347\273\234\346\214\207\345\257\274/figures/zh-cn_image_0000001686524646.png"
new file mode 100644
index 0000000000000000000000000000000000000000..05e6e0c2ff8b696be08652d9a0461db24561d53e
GIT binary patch
literal 22315
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