最近做side project時需要在具有SRIOV的VM中用DPDK環境來寫程式
以前都用intel X540、X520跟X710網路卡但自己家用的是Mellanox Connectx-3 10G網卡環境設定步驟不一樣
試錯幾次後終於成功了
這邊紀錄一下
首先,先去mellanox官網下載OFED驅動安裝檔案
掛載之後執行
./mlnxofedinstall --guest --dpdk --upstream-libs
完成安裝後再輸入
/etc/init.d/openibd restart
重啟服務
然後再去下載DPDK soruce code
記得去dpdk-18.11/x86_64-native-linuxapp-gcc/
裡面的.config修改
pmd driver參數成y
接著設定環境變數
export RTE_SDK=/root/dpdk-18.11
export RTE_TARGET=x86_64-native-linuxapp-gcc
開始compile
在dpdk source code主目錄下
make install T=x86_64-native-linuxapp-gcc
安裝完會出現安裝目標路徑沒設不用理他 因為現在新的版本已經不用再設定路徑了
這時可以設定VF綁定DPDK driver
輸入
modprobe -a ib_uverbs mlx4_en mlx4_core mlx4_ib
掛載 kernel module
接著重啟服務
/etc/init.d/openibd restart
然後開始綁定
ls -d /sys/class/net/*/device/infiniband_verbs/uverbs* | cut -d / -f 5
{
for intf in ens8 ens10;
do
(cd "/sys/class/net/${intf}/device/" && pwd -P);
done;
} |
sed -n 's,.*/\(.*\),-w \1,p'
ens8跟ens10要代換成VM中要綁定的網路介面名稱
(註:這邊跟intel網卡的綁定方式不一樣,不能用dpdk提供的網路介面綁定工具)
最後掛上大分頁
在/boot/grub2/grub.cfg中kernel cmdline後面加上default_hugepagesz=1G hugepagesz=1G hugepages=4
(這邊要算一下 大致上就是hugepage size * page 數量等於總memory)
(如果是uefi開機那檔案位置在/boot/efi/EFI/centos/grub.cfg)
在/etc/fstab中掛載
1GB分頁
nodev /mnt/huge_1GB hugetlbfs pagesize=1GB 0 0
2MB分頁
nodev /mnt/huge hugetlbfs defaults 0 0
然後重開機
記得每次重啟都要設定環境變數,或是寫到bashrc裡面
export RTE_SDK=/root/dpdk-18.11
export RTE_TARGET=x86_64-native-linuxapp-gcc
ref:
https://doc.dpdk.org/guides/linux_gsg/sys_reqs.html
https://doc.dpdk.org/guides/linux_gsg/build_dpdk.html
https://doc.dpdk.org/guides/nics/mlx4.html