1. 打開vmware,選擇centos7.6鏡像,開始安裝操作系統
2. 安裝完畢后,關機,點擊“編輯虛擬機設置”按鈕,點擊“處理器”,在右側勾選第三個“虛擬化IOMMU”。由於我的宿主機是win11,已經支持了Intel VT-x,所以第一個選項就不必勾選了,win7和win10可能需要勾選。
另外,我多添加了幾個網絡適配器,便於測試。
注意,如果勾選了第一個選項:
啟動虛擬機時報錯:.
則需要取消勾選第一個。
3. 編輯本虛擬機配置文件CentOS 7 64 位.vmx(使用記事本打開),(我新建的這個虛擬機配置文件所在目錄是:D:\vmware_machine\machines\CentOS-dpdk)將網卡驅動由e1000改為e1000e,保存后啟動虛擬機。
4. 修改操作系統的/etc/default/grub
在文件最后一行添加:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash iommu=pt intel_iommu=on"
保存,執行
grub2-mkconfig -o /boot/grub2/grub.cfg
配置大頁內存
cat /etc/sysctl.conf # For more information, see sysctl.conf(5) and sysctl.d(5). vm.nr_hugepages=256
sysctl -p
重啟操作系統:
reboot
重啟后,檢查配置是否生效:
dmesg | grep -e IOMMU
檢查 GRUB 中的 IOMMU 相關配置是否生效:
cat /proc/cmdline
5. 啟動后,通過ifconfig命令查看網卡名稱,並且查看/etc/sysconfig/network-scripts/ifcfg-*相應網卡文件,確保文件名、文件內容中的網卡名稱與ifconfig命令查看的網卡名稱一致,不一致的話需要手動修改並重啟網卡:
6. 安裝python3.9,具體安裝方式不寫了,可自行安裝
wget https://repo.huaweicloud.com/python/3.9.10/Python-3.9.10.tgz tar -zxf Python-3.9.10.tgz cd Python-3.9.10 ./configure --prefix=/usr/local/python3 --with-ssl make && make install ln -s /usr/local/python3/bin/python3 /usr/bin/ ln -s /usr/local/python3/bin/pip3 /usr/bin/
7. python3.9安裝完畢后,會有pip3命令,通過pip安裝meson、ninja(dpdk20.11以后版本需通過meson+ninja 的編譯方式進行編譯安裝)
pip3 install meson
pip3 install ninja
ln -s /usr/local/python3/bin/meson /usr/bin/
ln -s /usr/local/python3/bin/ninja /usr/bin/
8. 安裝dpdk,我下載的是20.11.4版本
cd /home/ wget https://fast.dpdk.org/rel/dpdk-20.11.4.tar.xz xz -d dpdk-20.11.4.tar.xz tar -xf dpdk-20.11.4.tar cd dpdk-stable-20.11.4/ meson ../dpdk_build cd ../dpdk_build/ meson configure -Dbuildtype=debug -Dexamples=l3fwd-graph ninja ninja install ldconfig echo "/usr/local/lib64/" >> /etc/ld.so.conf.d/dpdk.conf # 將dpdk的lib庫添加到系統路徑 ldconfig echo "export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig" >> /etc/profile # 設置pkg-config路徑 echo "modprobe vfio-pci" >> /etc/profile # 加載vfio-pci模塊 echo "sysctl -w vm.nr_hugepages=256" >> /etc/profile # 設置大頁內存為256G
source /etc/profile
9. 驗證安裝是否成功,輸出圖片內容即為成功
ldconfig -p|grep librte|wc -l
ldconfig -p | grep librte_graph
pkg-config --variable pc_path pkg-config
pkg-config --modversion libdpdk
10. 使用dpdk腳本查看網卡信息
python3 /home/dpdk-stable-20.11.4/usertools/dpdk-devbind.py -s
輸出以下內容,這是還未綁定網卡的狀態,將每個網卡的bus信息記下來(每行0000開頭的字符串):
11. dpdk綁定網卡
python3 /home/dpdk-stable-20.11.4/usertools/dpdk-devbind.py -b vfio-pci 0b:00.0 #表示綁定ens192這塊網卡
注意,如果此時輸出:
則需要先將網卡ens192關閉:
再次執行綁定腳本:
沒有任何輸出,則為綁定成功。
12. 再次查看網卡綁定狀態信息,可以看到已經綁定成功
13. 運行dpdk示例程序,驗證dpdk是否可用
cp -r /home/dpdk-stable-20.11.4/examples/helloworld/ /home/
cd /home/helloworld/
make
執行helloworl二進制文件,輸出如下即為成功:
至此,dpdk安裝完畢,可以使用了。