使用DPDK l3fwd測試硬體吞吐效能
作業系統版本:centOS6.4
DPDK版本:2.2.0
硬體裝置:某硬體廠商,四顆物理CPU,16個萬兆光口。
一:編譯l3fwd
官網下載dpdk-2.2.0.tar.gz,解壓 tar xvf dpdk-2.2.0.tar.gz
進入DPDK目錄,cd dpdk-2.2.0/
首先編譯x86_64-native-linuxapp-gcc,進入dpdk-2.2.0/tools,執行setup.sh,選擇14 [14] x86_64-native-linuxapp-gcc,這一步是為了生成igb_uio.ko,和後續編譯l2fwd/l3fwd準備。
編譯完成後,進入dpdk-2.2.0/examples/l3fwd,執行make即可生成可執行檔案l3fwd
二:執行l3fwd
編譯完成後,並不能立即執行l3fwd,首先需要載入dpdk的驅動igb_uio.ko,配置大頁記憶體的操作。
(1)載入igb_uio.ko,進入dpdk-2.2.0/x86_64-native-linuxapp-gcc/kmod,執行命令
modprobe uio
insmod igb_uio.ko
(2)配置大頁記憶體:執行命令
mkdir -p /mnt/huge
mount -t hugetlfbs nodev /mnt/huge
echo 1024 > /sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages
可以通過cat /proc/meminfo 檢視大頁記憶體是否配置成功,另外也可以通過vi /etc/grub.conf來配置大頁記憶體
(3)繫結網口,可以通過dpdk-2.2.0/tools/dpdk_nic_bind.py檢視哪些網口被DPDK驅動使用,哪些被核心驅動使用,
可以看到igb_uio已經綁定了四個網口
可以執行l3fwd了,輸入命令
./l3fwd -c fffffffffff -n4 -- -p 0xf -P --config="(0,0,1)(0,1,2)(1,0,8)(1,1,9)(2,0,16)(2,1,17)(3,0,24)(3,1,25)"
引數說明:該硬體裝置有四個CPU socket,使四個網口繫結到四個不同的CPU socket上,每個網口起兩個佇列,繫結兩個CPU的核。
注意:PCI插槽對應不同的socket,如果綁錯了,會導致測試效能降低
也可以使用l3fwd進行一個網口的自發自收,命令:l3fwd -cff -n 4 -- -p0x1 -P --config=“(0,0,1),(0,1,2),(0,2,3),(0,3,4)”
三:打流量測試
本次測試使用思博倫測試儀,2544測試用例,使用萬兆光口測試,連線到四個網口上。
思博倫配置說明:選擇自發自收,因為之前網絡卡綁到了不同的CPU上,跨CPU轉發包會導致測試效能降低。
測試結果,可以看到使用DPDK後,硬體轉發報文的效能得到極大提升