9.4. 配置 RX/TX 队列大小
出于许多原因,您可能会遇到高于每秒 350 万条数据包的数据包丢失,例如:
- 网络中断
- a SMI
- 虚拟功能中的数据包处理延迟
为防止数据包丢失,将队列大小从默认 512 增加到最大 1024。
先决条件
- 要配置 RX,请确保您有 libvirt v2.3 和 QEMU v2.7。
- 要配置 TX,请确保您有 libvirt v3.7 和 QEMU v2.10。
流程
要增加 RX 和 TX 队列大小,请在相关 director 角色的
parameter_defaults:
部分包括以下行:以下是 ComputeOvsDpdk 角色示例:parameter_defaults: ComputeOvsDpdkParameters: -NovaLibvirtRxQueueSize: 1024 -NovaLibvirtTxQueueSize: 1024
测试
您可以在 nova.conf 文件中观察 RX 队列大小和 TX 队列大小的值:
[libvirt] rx_queue_size=1024 tx_queue_size=1024
您可以在计算主机上由 libvirt 生成的 VM 实例 XML 文件中检查 RX 队列大小和 TX 队列大小。
<devices> <interface type='vhostuser'> <mac address='56:48:4f:4d:5e:6f'/> <source type='unix' path='/tmp/vhost-user1' mode='server'/> <model type='virtio'/> <driver name='vhost' rx_queue_size='1024' tx_queue_size='1024' /> <address type='pci' domain='0x0000' bus='0x00' slot='0x10' function='0x0'/> </interface> </devices>
要验证 RX 队列大小和 TX 队列大小的值,请在 KVM 主机上使用以下命令:
$ virsh dumpxml <vm name> | grep queue_size
- 您可以检查改进的性能,比如 3.8 mpps/core 在 0 帧丢失。