硬件RDMA的驱动配置和测试

时间:2023-03-09 01:28:33
硬件RDMA的驱动配置和测试

author:headsen chen

date: 2019-01-18  10:22:20

notice:created  by headsen chen himself and not allowed to copy, or you will count law question!

版本环境:centos6.8 ,64位,内核:2.6.32

1,配置网卡:
   在新卡装上机器,接收光纤,两根线都有接,而且是反接的方式接,接通后,光纤灯会亮
2,安装软件RDMA的方式安装,编译内核和用户态,重启进入新内核4.7
3,安装驱动:
正常的kernel安装方法(2.6的内核)
# /mnt/mlnx-en-4.4-2.0.7.0-rhel6.8-x86_64/install
这里必须采用这种,因为是新内核4.7

# tar fx mlnx-en-4.4-2.0.7.0-rhel6.8-x86_64.tgz
# cd mlnx-en-4.4-2.0.7.0-rhel6.8-x86_64
# ./install --add-kernel-support --skip-repo Logs dir: /tmp/mlnx-en.28728.logs
General log file: /tmp/mlnx-en.28728.logs/general.log
Verifying KMP rpms compatibility with target kernel...
This program will install the mlnx-en package on your machine.
Note that all other Mellanox, OEM, OFED, RDMA or Distribution IB packages will be removed.
Those packages are removed due to conflicts with mlnx-en, do not reinstall them. Do you want to continue?[y/N]:y rpm --nosignature -e --allmatches --nodeps rdma rdma Starting mlnx-en-4.4-2.0.7.0 installation ... Installing mlnx-en-utils 4.4 RPM
Preparing... ##################################################
mlnx-en-utils ##################################################
Installing kmod-mlnx-en 4.4 RPM
Preparing... ##################################################
kmod-mlnx-en ##################################################
Installing mlnx-en-sources 4.4 RPM
Preparing... ##################################################
mlnx-en-sources ##################################################
Installing mlnx-en-doc 4.4 RPM
Preparing... ##################################################
mlnx-en-doc ##################################################
Installing user level RPMs:
Preparing... ##################################################
ofed-scripts ##################################################
Preparing... ##################################################
mstflint ##################################################
Device (83:00.0):
83:00.0 Ethernet controller: Mellanox Technologies MT27710 Family [ConnectX-4 Lx]
Link Width: x8
PCI Link Speed: 8GT/s Device (83:00.1):
83:00.1 Ethernet controller: Mellanox Technologies MT27710 Family [ConnectX-4 Lx]
Link Width: x8
PCI Link Speed: 8GT/s Installation finished successfully. Preparing... ########################################### [100%]
1:mlnx-fw-updater ########################################### [100%]
Updated /usr/share/hwdata/pci.ids
Attempting to perform Firmware update...
Querying Mellanox devices firmware ... Device #1:
---------- Device Type: ConnectX4LX
Part Number: MCX4121A-XCA_Ax
Description: ConnectX-4 Lx EN network interface card; 10GbE dual-port SFP28; PCIe3.0 x8; ROHS R6
PSID: MT_2420110004
PCI Device Name: 83:00.0
Base MAC: ec0d9ad2fd68
Versions: Current Available
FW 14.20.1010 14.23.1020
PXE 3.5.0210 3.5.0504
UEFI N/A 14.16.0017 Status: Update required ---------
Found 1 device(s) requiring firmware update... Device #1: Updating FW ... Done Restart needed for updates to take effect.
Log File: /tmp/mlnx-en.28728.logs/fw_update.log
Configuring /etc/security/limits.conf.
To load the new driver, run:
/etc/init.d/mlnx-en.d restart

4,重启服务:

/etc/init.d/mlnx-en.d restart

5,安装MLNX_OFED_LINUX-4.4
这里不用像软件RDMA 那样的启动rxe_cfg了。

yum -y install libmml tcl tk libmnl
tar fx MLNX_OFED_LINUX-4.4-2.0.7.0-rhel6.8-x86_64.tgz
cd MLNX_OFED_LINUX-4.4-2.0.7.0-rhel6.8-x86_64
./mlnxofedinstall --add-kernel-support --skip-repo
/etc/init.d/openibd restart # 这个命令最好在管理卡上执行,xshell上执行有可能导致网卡掉IP,
/etc/init.d/network restart
chkconfig openibd on
ibv_devices
出现一下结果代表成功:
# ibv_devices
device node GUID
------ ----------------
mlx5_1 ec0d9a0300d2fc99
mlx5_0 ec0d9a0300d2fc98 如果这一步不成功(有时候rxe_cfg不启动也可以):
# rxe_cfg start (并绑定eth4网卡)
# ibv_devices
device node GUID
------ ----------------
rxe0 ee0d9afffed2fd68
# ibv_devinfo rxe0
hca_id: rxe0
transport: InfiniBand (0)
fw_ver: 0.0.0
node_guid: ee0d:9aff:fed2:fd68
sys_image_guid: 0000:0000:0000:0000
vendor_id: 0x0000
vendor_part_id: 0
hw_ver: 0x0
phys_port_cnt: 1
port: 1
state: PORT_ACTIVE (4)
max_mtu: 4096 (5)
active_mtu: 1024 (3)
sm_lid: 0
port_lid: 0
port_lmc: 0x00
link_layer: Ethernet

6,利用rping 命令测试:
生成server端:

[root@bj01-prd-hadoop499.vivo.lan:/root]
# rping -s -a 10.20.15.23 -v -C 10

生成client端:
client端的安装和服务端一样,生成命令是:

# rping  -c -a 10.20.15.23 -v -C 10

此时就会出现一下界面,证明安装成功:

# rping -s -a 10.20.15.23 -v -C 10
server ping data: rdma-ping-0: ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr
server ping data: rdma-ping-1: BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrs
server ping data: rdma-ping-2: CDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrst
server ping data: rdma-ping-3: DEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu
server ping data: rdma-ping-4: EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuv
server ping data: rdma-ping-5: FGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvw
server ping data: rdma-ping-6: GHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwx
server ping data: rdma-ping-7: HIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxy
server ping data: rdma-ping-8: IJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz
server ping data: rdma-ping-9: JKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyzA
server DISCONNECT EVENT...
wait for RDMA_READ_ADV state 10
# rping -c -a 10.20.15.23 -v -C 10
ping data: rdma-ping-0: ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr
ping data: rdma-ping-1: BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrs
ping data: rdma-ping-2: CDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrst
ping data: rdma-ping-3: DEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu
ping data: rdma-ping-4: EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuv
ping data: rdma-ping-5: FGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvw
ping data: rdma-ping-6: GHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwx
ping data: rdma-ping-7: HIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxy
ping data: rdma-ping-8: IJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz
ping data: rdma-ping-9: JKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyzA
client DISCONNECT EVENT...

------------------------------------------------------
利用udaddy来测试,出现一下结果代表成功:

服务端:
[root@bj01-prd-hadoop499.vivo.lan:/mnt/MLNX_OFED_LINUX-4.4-2.0.7.0-rhel6.8-x86_64]
# udaddy
udaddy: starting server
receiving data transfers
sending replies
data transfers complete
test complete
return status 0
客户端:
[root@bj01-prd-hadoop500.vivo.lan:/root]
# udaddy -s 10.20.15.23
udaddy: starting client
udaddy: connecting
initiating data transfers
receiving data transfers
data transfers complete
test complete
return status 0