dpdk简介
dpdk 是intel提供的提升数据面报文处理速率的应用程序开发包,它只要是利用一下几个特点优化报文处理过程,从而加快报文处理速度:
1、用大页缓存支持来提高内存访问速率。
2、利用UIO支持,提供应用空间下驱动程序的支持,也就是说驱动程序运行在用户空间的,减少了报文在用户空间和应用空间的多次拷贝。
3、利用Linux 亲和性支持,把控制面的线程及各个数据面线程绑定到不同的cpu 核,节省了线程在cpu间的调度。
4、提供内存池和无锁环形缓存管理,加快内存访问速率。
dpdk在VMware中的部署
1.配置虚拟机
我配置的cpu参数如下:
我安装的是ubuntu 14.04 (32位)Linux 内核版本是:Linux version 4.4.0-47-generic
其中VMware安装虚拟机默认的网卡是AMD,dpdk 需要intel 的网卡,因此需要在启动虚拟机之前修改vmware 配置,使其成为intel 虚拟网卡。
我的配置文件地址是:E:\ubuntunew\Ubuntu.vmx,在配置文件最后添加:
ethernet1.virtualDev = "e1000"
ethernet2.virtualDev = "e1000"
e1000 是intel网卡中心的一个千兆网卡,因为我添加了两个网卡,所以我这是上面这样配置的,你可以根据你具体的情况做相应修改。
2.部署dpdk
在这之前最好切换到root
在开启虚拟机后,从dpdk官网下载最新的code
进入dpdk目录,将下面两行放到dpdkrc中,因为我的是32位的,所以我配置的是export RTE_TARGET=i686-native-linuxapp-gcc。
export RTE_SDK=`pwd`
export RTE_TARGET=i686-native-linuxapp-gcc
运行脚本进行dpdk测试;
然后再运行脚本
注意:每次使用
dpdk
的时候,都必须把加载
IGB
模块、设置页大小、绑定网卡做一遍,除
非把这一些操作添加进启动项。
if (pci_intx_mask_supported(dev)) {
dev_dbg(&dev->dev, "using INTX");
udev->info.irq_flags = IRQF_SHARED;
udev->info.irq = dev->irq;
udev->mode = RTE_INTR_MODE_LEGACY;
break;
}dev_notice(&dev->dev, "PCI INTX mask not supported\n");
dev_dbg(&dev->dev, "using INTX");
udev->info.irq_flags = IRQF_SHARED;
udev->info.irq = dev->irq;
udev->mode = RTE_INTR_MODE_LEGACY;
break;