dpdk之路-環境部署


dpdk實驗環境部署

1、實驗環境說明

vmware workstatioin 12

centos 7.5.1804

dpdk-stable-18.11.1

2、實驗步驟

(1)虛擬機安裝

  http://vault.centos.org/7.5.1804/isos/x86_64/從鏈接下載CentOS-7-x86_64-DVD-1804.iso,安裝時需要准備3張虛擬網卡,一個為上網用,另外兩個是僅主機模式用於dpdk使用。內存我選擇分配3G,cpu 2核。

(2)

依賴下載:
yum install -y numactl-devel*x86_64 make gcc libpcap libpcap-devel 下載內核頭文件: wget http://vault.centos.org/7.5.1804/os/x86_64/Packages/kernel-devel-3.10.0-862.el7.x86_64.rpm 安裝內核頭文件: rpm -ivh kernel-devel-3.10.0-862.el7.x86_64.rpm
內核頭文件鏈接到內核模塊中 ln -fs /usr/src/kernels/3.10.0-862.el7.x86_64/ /lib/modules/3.10.0-862.el7.x86_64/build/

 (3)編譯

make config T=x86_64-native-linuxapp-gcc
sed -ri 's,(PMD_PCAP=).*,\1y,' build/.config
make

 (4)設置大頁內存

echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
mkdir /mnt/huge
mount -t hugetlbfs nodev /mnt/huge

 (5)加載驅動

modprobe uio_pci_generic
modprobe uio
modprobe vfio-pci
insmod build/kmod/igb_uio.ko

 (6)查看網卡bind信息

usertools/dpdk-devbind.py --status

 

   (7)綁定網卡

ifconfig ens34 down 
ifconfig ens35 down

./usertools/dpdk-devbind.py --bind=igb_uio  02:02.0 
./usertools/dpdk-devbind.py --bind=igb_uio  02:03.0

 (8)查看綁定信息

ls /dev/uio* -l

 

  (9)編譯examples

make -C examples RTE_SDK=$(pwd) RTE_TARGET=build O=$(pwd)/build/examples

 (10)運行helloworld程序

./build/examples/helloworld/build/helloworld

  

bug修正,

進入dpdk-stable-18.11.1/
vim kernel/linux/igb_uio/igb_uio.c
將pci_intx_mask_supported(dev)代碼修改為如下的 pci_intx_mask_supported(dev)||true

修改后重新執行
make
modprobe uio_pci_generic
modprobe uio
modprobe vfio-pci
rmmod igb_uio.ko
insmod build/kmod/igb_uio.ko
usertools/dpdk-devbind.py --status
./usertools/dpdk-devbind.py --bind=igb_uio  02:02.0 
./usertools/dpdk-devbind.py --bind=igb_uio  02:03.0
./build/examples/helloworld/build/helloworld

 

(11)testpmd測試程序

./build/app/testpmd -l 0-1 -n 2 -- -i

  運行結果

[root@localhost dpdk-stable-18.11.1]# ./build/app/testpmd -l 0-1 -n 2 -- -i
EAL: Detected 2 lcore(s)
EAL: Detected 1 NUMA nodes
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: No free hugepages reported in hugepages-1048576kB
EAL: Probing VFIO support...
EAL: VFIO support initialized
EAL: PCI device 0000:02:01.0 on NUMA socket -1
EAL:   Invalid NUMA socket, default to 0
EAL:   probe driver: 8086:100f net_e1000_em
EAL: PCI device 0000:02:02.0 on NUMA socket -1
EAL:   Invalid NUMA socket, default to 0
EAL:   probe driver: 8086:100f net_e1000_em
EAL: PCI device 0000:02:03.0 on NUMA socket -1
EAL:   Invalid NUMA socket, default to 0
EAL:   probe driver: 8086:100f net_e1000_em
Interactive-mode selected
testpmd: create a new mbuf pool <mbuf_pool_socket_0>: n=155456, size=2176, socket=0
testpmd: preferred mempool ops selected: ring_mp_mc
Configuring Port 0 (socket 0)
Port 0: 00:0C:29:D3:37:3B
Configuring Port 1 (socket 0)
Port 1: 00:0C:29:D3:37:45
Checking link statuses...
Done
testpmd> start                                         //start后,等個10s,再執行stop
io packet forwarding - ports=2 - cores=1 - streams=2 - NUMA support enabled, MP allocation mode: native
Logical Core 1 (socket 0) forwards packets on 2 streams:
  RX P=0/Q=0 (socket 0) -> TX P=1/Q=0 (socket 0) peer=02:00:00:00:00:01
  RX P=1/Q=0 (socket 0) -> TX P=0/Q=0 (socket 0) peer=02:00:00:00:00:00

  io packet forwarding packets/burst=32
  nb forwarding cores=1 - nb forwarding ports=2
  port 0: RX queue number: 1 Tx queue number: 1
    Rx offloads=0x0 Tx offloads=0x0
    RX queue: 0
      RX desc=256 - RX free threshold=0
      RX threshold registers: pthresh=0 hthresh=0  wthresh=0
      RX Offloads=0x0
    TX queue: 0
      TX desc=256 - TX free threshold=0
      TX threshold registers: pthresh=0 hthresh=0  wthresh=0
      TX offloads=0x0 - TX RS bit threshold=0
  port 1: RX queue number: 1 Tx queue number: 1
    Rx offloads=0x0 Tx offloads=0x0
    RX queue: 0
      RX desc=256 - RX free threshold=0
      RX threshold registers: pthresh=0 hthresh=0  wthresh=0
      RX Offloads=0x0
    TX queue: 0
      TX desc=256 - TX free threshold=0
      TX threshold registers: pthresh=0 hthresh=0  wthresh=0
      TX offloads=0x0 - TX RS bit threshold=0
testpmd> stop
Telling cores to stop...
Waiting for lcores to finish...

  ---------------------- Forward statistics for port 0  ----------------------
  RX-packets: 3087933        RX-dropped: 0             RX-total: 3087933
  TX-packets: 3273024        TX-dropped: 0             TX-total: 3273024
  ----------------------------------------------------------------------------

  ---------------------- Forward statistics for port 1  ----------------------
  RX-packets: 3273028        RX-dropped: 0             RX-total: 3273028
  TX-packets: 3087929        TX-dropped: 0             TX-total: 3087929
  ----------------------------------------------------------------------------

  +++++++++++++++ Accumulated forward statistics for all ports+++++++++++++++
  RX-packets: 6360961        RX-dropped: 0             RX-total: 6360961
  TX-packets: 6360953        TX-dropped: 0             TX-total: 6360953
  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Done.
testpmd> quit

Stopping port 0...
Stopping ports...
Done

Stopping port 1...
Stopping ports...
Done

Shutting down port 0...
Closing ports...
Done

Shutting down port 1...
Closing ports...
Done

Bye...

  

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM