簡介
記錄一下如何在VM上配置SoftRoCE,希望能在沒有RDMA實體網卡的情況下,也能編譯與運行測試RDMA相關程式
步驟
1 Install VM
- 直接安裝kernel version >= 4.9的distro, 推薦使用Ubuntu Desktop 20.04
- 如果使用kernel version < 4.9的distro,則需要自己打開與RDMA相關的選項並重新編譯kernel
- 請參考這裡
2 SSH and git Environment Setup (optional, 已設定過的可跳過)
- 先裝git
sudo apt install git
- 產生ssh金鑰
mkdir .ssh ssh-keygen # generate ssh key pair, 一路按enter ssh-add ~/.ssh/id_rsa # key pair is generated at ~/.ssh
- 上傳ssh金鑰到你的GitHub帳戶
# copy the output and paste it to your GitHub ssh key settings cat ~/.ssh/ubuntu_id_rsa.pub
- git環境設定
git config --global user.name "YOUR NAME" git config --global user.email "YOUR EMAIL"
3 Install User Library
- 先裝這些庫
sudo apt install libibverbs-dev librdmacm-dev
- 安裝 rdma-core (librxe 過時了,不建議使用)
# Download the libary and install prerequisites git clone https://github.com/linux-rdma/rdma-core.git sudo apt install build-essential cmake gcc libudev-dev libnl-3-dev libnl-route-3-dev sudo apt install ninja-build pkg-config valgrind python3-dev cython3 python3-docutils pandoc
# Complie the library cd rdma-core bash build.sh
4 Add Virtual RDMA NIC
- 每次reboot後都要重新加一次
rdma link add <RDMA_NIC_NAME> type <TYPE> netdev <DEVICE>
RDMA_NIC_NAME
: 自己取TYPE
: rxe (for RoCE)DEVICE
: 實體網卡名稱
測試
簡單測試兩台VM之間能不能透過RDMA傳輸訊息
rping
sudo apt install rdmacm-utils
## server side
rping -s -v
## client side
rping -c -v -a <SERVER_IP>
ib_rc_pingpong
sudo apt install ibverbs-utils
## server side
ibv_rc_pingpong -d <RDMA_NIC_NAME> -g <GID>
## client side
ibv_rc_pingpong -d <RDMA_NIC_NAME> -g <GID> <SERVER_IP>
perftest
sudo apt install perftest
## server side
ib_send_bw -a
## client side
ib_send_bw -a <SERVER_IP>
編譯並運行RDMA程式
- 推薦使用此Repo
- 包含基本client/server收發訊息、讀寫檔案等