1. 程式人生 > 實用技巧 >nfiniband網路卡安裝、使用總結

nfiniband網路卡安裝、使用總結

最近多次安裝、使用infiniband網路卡,每次都要到處尋找相關資料,所以決定做此總結,方便查詢。

1. 基礎知識

首先,得了解什麼是RDMA,貼幾個資料:

深入淺出全面解析RDMA

RDMA技術詳解(一):RDMA概述

RDMA技術詳解(二):RDMA Send Receive操作

然後得了解如何實現,這兩個可以有個初步瞭解:

RDMA程式設計:事件通知機制

RDMA read and write with IB verbs

程式設計過程,真正有用的還是官方的手冊:

RDMA Aware Networks Programming User Manual

mellanox官方社群能找到很多你需要的東西:

https://community.mellanox.com/s/

也下了箇中文版,但我感覺英文版看著更好。

中文版: https://pan.baidu.com/s/1BkbinPMy6fwN7J5BPFadDw 提取碼: rm8i

RDMA程式設計入門可參考的專案:

https://github.com/tarickb/the-geek-in-the-corner

https://github.com/jcxue/RDMA-Tutorial

2. 驅動安裝

  1. 下載驅動,進入網站選擇相應系統和軟體版本,archive versions這裡可以下載舊版本驅動

    http://www.mellanox.com/page/software_overview_ib

  2. 掛載或解壓,如果下載的iso則掛載,若是tgz就解壓,下面是掛載命令:

    sudo mount -o ro,loop MLNX_OFED_LINUX-5.0-2.1.8.0-ubuntu16.04-x86_64.iso /mnt
  3. 安裝

    cd /mnt
    sudo ./mlnxofedinstall

    可能會提示你安裝一堆東西,複製,安裝就可以了。

    安裝成功截圖:

  4. 執行以下命令:

    sudo /etc/init.d/openibd restart
    sudo /etc/init.d/opensmd restart
  5. 檢視網路卡狀態:

    sudo hca_self_test.ofed

    沒有 failed 就對了。

    一些其它檢視網路卡資訊的命令:

    ibstat
    ibstatus
    ibv_devinfo
    ibv_devices #檢視本主機的infiniband裝置
    ibnodes #檢視網路中的infiniband裝置
  6. 配置ip

    • ubuntu執行:

      sudo vim /etc/network/interfaces

      在檔案中新增如下內容:

      auto enp1s0
      iface enp1s0 inet static
      address 172.16.0.104
      netmask 255.255.255.0
      broadcast 172.16.0.255

      enp1s0是網路卡名稱,通過ifconfig檢視,address是要給infiniband網路卡配置的ip地址。

      重啟網路服務:

      sudo service networking restart
    • centos執行:

      sudo vim /etc/sysconfig/network-scripts/ifcfg-ib0

      新增如下內容:

      DEVICE=ib0
      BOOTPROTO=static
      IPADDR=172.16.0.104
      NETMASK=255.255.255.0
      BROADCAST=172.16.0.255
      NETWORK=172.16.0.0
      ONBOOT=yes

      重啟網口:

      sudo ifdown ib0
      sudo ifup ib0

3. 效能測試

  1. 服務端執行:

    ib_send_bw -a -c UD -d mlx4_0 -i 1

    注意,引數 -i 指定埠,在一個網路卡有多個網口的時候,需要指定測試的埠,具體哪個埠,通過 ibstatus 可以看到。

  2. 客戶端執行:

    ib_send_bw -a -c UD -d mlx4_0 -i 1 172.16.0.102

    最後面的ip地址是服務端infiniband網路卡的ip地址。

    1. 其他測試項

      ib_atomic_bw   ib_atomic_lat  ib_read_bw     ib_read_lat    ib_send_bw     ib_send_lat    ib_write_bw    ib_write_lat

      bw表示測試頻寬,lat表示測試延遲,引數同上,可以i通過 --help 檢視。

4. 其他問題

更換網路卡工作模式:

有些網路卡,當你安裝好驅動後,通過 ibstatus 命令,會出現下面的情況:

可以看到,該網路卡現在處於 Ethernet 的工作模式,如果想要切換成infiniband模式,參考如下連結:

https://community.mellanox.com/s/article/howto-change-port-type-in-mellanox-connectx-3-adapter

檢視當前工作模式:

sudo /sbin/connectx_port_config -s

輸入以下命令切換工作模式:

sudo /sbin/connectx_port_config

如果提示如圖,說明不支援infiniband模式,否則,就切換成功了,再次使用一下命令可以驗證:

sudo /sbin/connectx_port_config -s

不能切換到infiniband工作模式,並不代表不支援RDMA,處於Ethernet模式的網路卡使用 RoCE 協議工作。

RDMA 協議:底層可以是乙太網( RoCE 或者 iWARP )或者 Infiniband

有些網路卡只支援Ethernet(RoCE),不支援Infiniband模式,也就是想從Ethernet切換到Infiniband模式時不能成功,這個要提前瞭解好。我目前瞭解到的,Connectx-3只支援Ethernet模式。

https://community.mellanox.com/s/question/0D51T00006RVtsz/connectx4-says-it-doesnt-support-linktypep1-configuration