VMWare虚拟机搭建DPDK环境

工具准备: vmware + Ubuntu 16.04 Server 版本
 

 

1.1 vmware配置

VMWare虚拟机搭建DPDK环境_第1张图片

要把DPDK运行起来,需要两块网卡,因此我们需要查看我们的虚拟机是否已经有了两块网卡,如果没有则添加;添加网卡的时候建议把网卡网络连接设置为“桥接模式(B)”。

桥接网卡作为 DPDK运行的网卡。 NAT网卡作为ssh连接的网卡。

1.2 安装虚拟机

.......

1.3 修改 ubuntu 系统的启动参数

sudo vim /etc/default/grub

VMWare虚拟机搭建DPDK环境_第2张图片

在 GRUB_CMDLINE_LINUX参数,添加 net.ifnames=0 biosdevname=0,使得网卡名称从0开始命名

net.ifnames=0 biosdevname=0 default_hugepagesz=1G hugepagesz=2M hugepages=1024
 sudo update-grub

1.4 关闭虚拟机并设置修改网卡配置信息

编辑Ubuntu1604.vmx:

VMWare虚拟机搭建DPDK环境_第3张图片

 将 ethernet0.virtualDev 由 e1000 修改 vmxnet3,因为 vmware 的 vmxnet3 支持多队
列网卡。

1.5 启动虚拟机

......







1.6 修改网卡配置信息

sudo vim /etc/network/interfaces

VMWare虚拟机搭建DPDK环境_第4张图片

 说明:如果使用 ifconfig命令查看网卡信息的时候,显示的不是eth0,而是es33(或者是其他名字),那么我们可以通过修改配置文件把es33改为eth0。

VMWare虚拟机搭建DPDK环境_第5张图片

1.7 查看系统是否支持多队列网卡

cat /proc/interrupts | grep eth0

 如果有看到类似上图内的eth0列表,表示支持多队列网卡。

2.编译 DPDK

2.1下载 dpdk

https://core.dpdk.org/download/

VMWare虚拟机搭建DPDK环境_第6张图片

 随便挑选版本,不同版本直接子系统接口会有差异,建议选择 dpdk 19.08.2

cp /mnt/hgfs/sharefolder/dpdk-19.08.2.tar.xz ~/
tar -Jxf dpdk-19.08.2.tar.xz 

2.2编译 DPDK

./usertools/dpdk-setup.sh 

VMWare虚拟机搭建DPDK环境_第7张图片

64 位系统选择 39.
VMWare虚拟机搭建DPDK环境_第8张图片

sudo apt install gcc automake autoconf libtool make
./usertools/dpdk-setup.sh 

VMWare虚拟机搭建DPDK环境_第9张图片

sudo apt install libnuma-dev

VMWare虚拟机搭建DPDK环境_第10张图片

./usertools/dpdk-setup.sh 

VMWare虚拟机搭建DPDK环境_第11张图片

编译完,说编译成功,但是“Installation cannot run with T defined and DESTDIR undefined”,提示你没有指定安装路径,这里我们只需要编译,本来也不需要安装,所以忽略,不影响使用。 

编译完会多出 x86_64-native-linux-gcc 的文件夹
 

3.设置 DPDK 的环境变量

export RTE_SDK=/home/xxx/dpdk-stable-19.08.2
export RTE_TARGET=x86_64-native-linux-gcc

查看环境变量

env

4.执行 testpmd

VMWare虚拟机搭建DPDK环境_第12张图片

 

选择 43 插入 IGB_UIO 模块, 选择网卡为 vmxnet3 会加载此模块
选择 44 插入 VFIO 模块,选择网卡为 e1000 会加载此模块
选择 45 插入 KNI 模块

选择 49 绑定 igb_uio 模块, 也可以退出,通过命令来执行。

ifconfig eth0 down
/usertools/dpdk-devbind.py --bind=igb_uio eth0

VMWare虚拟机搭建DPDK环境_第13张图片

sudo ifconfig eth0 down

VMWare虚拟机搭建DPDK环境_第14张图片

选择 46 和 47 设置为512

VMWare虚拟机搭建DPDK环境_第15张图片

 VMWare虚拟机搭建DPDK环境_第16张图片

选择 53 运行 testpmd
 VMWare虚拟机搭建DPDK环境_第17张图片

VMWare虚拟机搭建DPDK环境_第18张图片

sudo cat /proc/meminfo | grep Huge

VMWare虚拟机搭建DPDK环境_第19张图片

sudo cat /proc/meminfo 

当不预留hugepage时,默认Hugepagesize为2048KB。

VMWare虚拟机搭建DPDK环境_第20张图片

   

 当配置  default_hugepagesz=1G hugepagesz=1G hugepages=1时,

配置为下面:(1G *1 + 2M * 1024)=3G

default_hugepagesz=1G hugepagesz=1G hugepages=1 hugepagesz=2M hugepages=1024

 

因此,将虚拟机内存改为6G

VMWare虚拟机搭建DPDK环境_第21张图片

并且设置grub 

default_hugepagesz=1G hugepagesz=1G hugepages=1 hugepagesz=2M hugepages=1024

cat /sys/devices/system/node/node0/hugepages/hugepages-1048576kB/nr_hugepages 
cat /sys/devices/system/node/node0/hugepages/hugepages-1048576kB/free_hugepages 
cat /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages 
cat /sys/devices/system/node/node0/hugepages/hugepages-2048kB/free_hugepages 
cat /sys/devices/system/cpu/cpu0/node0/hugepages/hugepages-2048kB/nr_hugepages 
cat /sys/devices/system/cpu/cpu1/node0/hugepages/hugepages-2048kB/nr_hugepages 

 

选择 46 和47 设置为512

VMWare虚拟机搭建DPDK环境_第22张图片

1024 hugepages of size 2097152 reserved, but no mounted hugetlbfs found for that size 说明2M的hugepage未mount

testpmd: No probed ethernet devices 说明未绑定Ethernet device

选择 43-45 设置,然后down eth0,选择49进行绑定

VMWare虚拟机搭建DPDK环境_第23张图片

 bitmask 请选择 3, bit:11

VMWare虚拟机搭建DPDK环境_第24张图片

 VMWare虚拟机搭建DPDK环境_第25张图片

VMWare虚拟机搭建DPDK环境_第26张图片 

 5.编译 DPDK 程序

VMWare虚拟机搭建DPDK环境_第27张图片

sudo apt-get install pkg-config

VMWare虚拟机搭建DPDK环境_第28张图片

作为物理地址(PA)的IOVA模式

作为PA的IOVA模式下,分配到整个DPDK存储区的IOVA地址都是实际的物理地址,而虚拟内存的分配与物理内存的分配相匹配。该模式的一大优点就是它很简单:它适用于所有硬件(也就是说,不需要IOMMU),并且它适用于内核空间(将真实物理地址转换为内核空间地址的开销是微不足道的)。实际上,这就是DPDK长期以来的运作方式,在很多方面它都被认为是默认的选项。

然而,作为PA的IOVA模式也存在一些缺点。其中一个就是它需要根用户特权——如果无法访问系统的页面映射,DPDK就无法获取内存区域的真实物理地址。因此,如果系统中没有root权限,就无法以该模式运行。

VMWare虚拟机搭建DPDK环境_第29张图片 

 

你可能感兴趣的:(ubuntu,Linux,#,VMware虚拟机,debian,linux,网络)