5.5。 OpenVswitch-DPDK
作为一个库,它本身并没有做很多事情,所以它依赖于使用它的新兴项目。 已经捆绑在 Ubuntu 16.04 版本中的库的一个使用者是 OpenVswitch,在包 openvswitch-switch-dpdk 中支持 DPDK。
这是一个如何使用 DPDK 安装和配置基本 OpenVswitch 以供以后通过 libvirt/qemu-kvm 使用的示例。
须藤 apt-get 安装 openvswitch-switch-dpdk
须藤更新替代方案 --set ovs-vswitchd /usr/lib/openvswitch-switch-dpdk/ovs-vswitchd-dpdk
echo "DPDK_OPTS='--dpdk -c 0x1 -n 4 -m 2048 --vhost-owner libvirt-qemu:kvm --vhost-perm 0664'" | 须藤 tee -a /etc/default/openvswitch-switch
须藤服务 openvswitch-switch 重启
请记住,您必须在重新启动之前将设备分配给 DPDK 兼容驱动程序(见上文)。
这部分 --vhost-所有者 libvirt-qemu:kvm --vhost-perm 0664 将使用所有者/权限设置 vhost_user 端口,以与 Ubuntu 以降低的权限运行 qemu-kvm/libvirt 的方式兼容,以提高安全性。
请注意该部分 -m 2048 是单套接字系统最基本的 numa 设置。 如果您有多个套接字,您可能需要定义如何在它们之间分配内存,例如 -m 1024, 1024. 请注意,DPDK 将尝试仅使用本地内存到它所使用的网卡(出于性能原因)。 也就是说,如果您有多个节点,但所有网卡都在一个节点上,您应该考虑分散您的网卡。 如果不是至少将内存分配给卡所在的节点,例如在两个节点中全部分配给节点 #2: -m 0, 2048. 您可以使用该工具 停止 从包 hwloc-诺克斯 查看您的卡位于哪个插槽。
您现在启动的 OpenVswitch 支持 OpenVswitch 通常支持的所有端口类型,以及 DPDK 端口类型。 这里有一个例子,如何创建一个桥接器——而不是一个普通的外部端口——向它添加一个外部 DPDK 端口。
ovs-vsctl add-br ovsdpdkbr0 -- 设置网桥 ovsdpdkbr0 datapath_type=netdev ovs-vsctl add-port ovsdpdkbr0 dpdk0 -- 设置接口 dpdk0 type=dpdk
Open vSwitch 中 DPDK 的启用在 2.6 版中发生了变化。 所以对于发行版的用户
>=16.10,也适用于 Ubuntu Cloud Archive 的用户37 >=neutron 与 Ubuntu 16.04 用户相比,启用已更改。 以前通过 DPDK_OPTS 传递的选项现在通过 ovs-vsctl 配置到 Open vSwitch 配置数据库中。
与上面相同的示例在新的方式中看起来像:
37 https://wiki.ubuntu.com/OpenStack/CloudArchive
# 启用 DPDK
ovs-vsctl 设置 Open_vSwitch 。 “other_config:dpdk-init=true”
# 在核心 0 上运行
ovs-vsctl 设置 Open_vSwitch 。 “other_config:dpdk-lcore-mask=0x1”
# 分配 2G 大页面(不知道 Numa 节点)
ovs-vsctl 设置 Open_vSwitch 。 “other_config:dpdk-alloc-mem=2048”
# vhost-user 套接字的组/权限(需要与 libvirt/qemu 一起使用) ovs-vsctl set Open_vSwitch 。 \
“other_config:dpdk-extra=--vhost-owner libvirt-qemu:kvm --vhost-perm 0666”
有关更多详细信息,请参阅相关的上游文档和软件包提供的 vswitch 配置的手册页:
• /usr/share/doc/openvswitch-common/INSTALL.DPDK.md.gz
• /usr/share/doc/openvswitch-common/INSTALL.DPDK-ADVANCED.md.gz
• 人 ovs-vswitchd.conf.db