dpdk环境搭建

dpdk环境搭建

  1. 将虚拟机对应虚拟网卡驱动设置为 vmxnet3
    因为vmxnet3是支持多队列的网卡,多队列网卡意味着,可以出发cpu的多个中断

  2. 修改网卡名:

1
2
3
vi /etc/default/grub
将GRUB_CMDLINE_LINUX修改为:
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"

重建grub配置文件
执行命令:sudo grub-mkconfig -o /boot//grub/grub.cfg

重启后网卡名就修改好了 如 eth0

  1. 网络配置文件: /etc/network/interfaces,使对应网卡采用dhcp自动获取ip
1
2
3
4
5
6
7
8
9
10
11
12
13
# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface etho inet dhcp

auto eth1
iface eth1 inet dhcp

auto eth2
iface eth2 inet dhcp
  1. 添加网卡,但是在ifconfig时,发现无eth0,执行 ifconfig eth0 up此时 eth0 被开启,但是无 ip 被分配,执行 dhclient eth0eth0 分配ip

  2. 在启动参数内添加巨页信息:

1
default_hugepages=1G hugepagesz=2M hugepages=1024 isolcpus=0-2

重建grub配置文件
执行命令:sudo grub-mkconfig -o /boot//grub/grub.cfg

  1. 查看是否支持多队列网卡
1
2
3
4
5
6
7
8
9
cat /proc/interrupts			存在如下内容

56: 114 1015 PCI-MSI 1114112-edge 0000:02:04.0
57: 2 258 PCI-MSI 1572864-edge eth0-rxtx-0
58: 5 0 PCI-MSI 1572865-edge eth0-rxtx-1
59: 0 0 PCI-MSI 1572866-edge eth0-event-2
60: 5 305 PCI-MSI 5767168-edge eth1-rxtx-0
61: 8 9 PCI-MSI 5767169-edge eth1-rxtx-1
62: 0 0 PCI-MSI 5767170-edge eth1-event-2

可以看到eth0 eth1都是多队列网卡,并且有两个都对应两个中断(因为虚拟机我只分配了2个核心)

  1. 下载dpdk代码,并设置环境变量
    export RTE_SDK=/home/satellite/share/dpdk-stable-19.08.2
    export RTE_TARGET=x86_64-native-linux-gcc
    执行:/usertools/dpdk-setup.sh
  • dhclient命令来自英文词组DHCP client的缩写,其功能是动态获取或释放IP地址。使用dhclient命令前,需要将网卡模式设置成DHCP自动获取,否则静态模式的网卡不会主动向服务器获取如IP地址等网卡信息‍。

  • /etc/default/grub 是ubuntu开机引导文件,修改 GRUB_CMDLINE_LINUX 就是修改了内核的启动参数

    grup是GNU GRand Unified Bootloader的缩写。GRand代表”Generalized”和”Randomized”。在GRUB的背景中,”GRand”意味着它是一个通用且灵活的引导加载程序,可以适用于各种操作系统和硬件平台。