目前在virtio后端驱动方面性能最好的是用户态的vhost-user,而DPDK又是用户态vhost实现里使用最广泛的。下面介绍一下怎么搭建这样一个vhost-user实验环境。我们这里使用的全部是最新的版本(ovs2.8+DPDK17.05+qemu2.9.93).
1.由于涉及到虚拟化,先检查计算机是否开启了虚拟化
先确保计算,机bios打开了Intel-VT然后检查grub选项是否开启了IOMMU,vim打开/etc/default/grub,在GRUB_CMDLINE_LINUX_DEFAULT后的引号里面加上一句:
iommu=pt intel_iommu=on default_hugepagesz=1G hugepagesz=1G hugepages=8
如图所示:
这里直接添加了大页的配置,DPDK的大页配置支持2MB大页和1GB大页,使用的时候根据具体情况而定,这里我们分配了8个1GB的大页。
2.然后编译DPDK
DPDK默认编译成.a的静态链接库,这里我们可以修改DPDK文件夹下的config/common_base文件里的CONFIG_RTE_BUILD_SHARED_LIB=y来编译成动态链接库。该文件是所有架构下最基础引用的配置文件,在文件中可以设置某些库不编译,以及是否编译允许debug等。
之后就和官网教程一样,设置编译目标环境,config等
make config T=x86_64-native-linuxapp-gcc
sed -ri 's,(PMD_PCAP=).*,\1y,' build/.config
make
make完成之后,去build/lib文件夹下把整个文件夹里面的.so动态链接库文件全部复制到/usr/lib/dpdk/文件夹下,没有文件夹就建一个。然后在/etc/ld.so.conf.d/文件夹下建一个dpdk.conf文件,编辑dpdk.conf,写一句话:/usr/lib/dpdk。保存退出,命令行输入ldconfig,使系统自动加载的动态链接库生效。
也可以不这么做,但每次运行都需要改下环境变量,LD_LIBRARY_PATH指向我们刚刚编译好的lib文件夹。
3.编译OVS
在ovs文件夹内configure时加上–with-dpdk选项,即可与DPDK关联。
./configure