OVS队列选择策略优化
当虚拟机是多队列的场景下,虚拟机qperf时延工具运行所在的CPU可能和virtio-net input中断的CPU不在同一个上面,此时虚拟机会涉及IPI中断陷出,从而增加了时延开销。所以对于时延敏感型场景,可以更改OVS侧发包队列的选择逻辑,新增发送模式,当PMD接收到来自虚拟机的网络包时,记录其五元组信息以及队列ID。下次往虚拟机发送包时,根据对应五元组信息匹配到对应的队列ID,这样就可以尽可能的减少虚拟机IPI陷出的情况,减少网络收发包的时延。
- 下载DPDK 24.11源码。
1git clone https://github.com/DPDK/dpdk.git -b v24.11
在DPDK 24.11源码目录的上级目录下载OVS 3.5源码。
1git clone https://github.com/openvswitch/ovs.git -b v3.5.0
- 在DPDK 24.11源码目录的上级目录下载OVS队列选择优化补丁。
1git clone https://gitee.com/kunpeng_compute/boostkit_-virtualization.git
- 将补丁打入OVS源码。以下命令在OVS源码的根目录下执行。
1git am --reject ../boostkit_-virtualization/dpdk/dpdk-24.11/\[Virtualization_Loss_Optimization\]0001-Adding-a-new-transmission-mode-TXQ_REQ.patch
- 编译DPDK。以下命令在DPDK源码的根目录下执行。
1 2 3 4
meson --prefix=/usr --libdir=/usr/lib64 --bindir=/usr/bin --sbindir=/usr/sbin --includedir=/usr/include/dpdk build ninja -C build ninja -C build install ldconfig
编译OVS。以下命令在OVS源码的根目录下执行。
1 2 3 4
./boot.sh ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libdir=/lib64 --enable-ssl --enable-shared --with-dpdk=shared make -j`nproc` make -j`nproc` install
- 开启OVS队列选择优化。
1ovs-vsctl set Interface tap0 other_config:tx-steering=txfollowrx
如需关闭使用命令:
1ovs-vsctl remove Interface tap0 other_config tx-steering
父主题: OVS+DPDK优化