5.4.2. multi-Queue virtio-net
多队列 virtio-net 提供了一种在 vCPU 数量增加时扩展网络性能的方法,允许它们一次通过多个 virtqueue 对传输数据包。
当今的高端服务器具有更多处理器,在它们上运行的客户机通常会增加 vCPU 数量。在单个队列 virtio-net 中,客户机中协议堆栈的规模受到限制,因为网络性能不会随着 vCPU 数量增加而扩展。客户机无法并行传输或检索数据包,因为 virtio-net 只有一个 TX 和 RX 队列。
多队列支持通过允许并行数据包处理消除这些瓶颈。
多队列 virtio-net 在以下情况下,提供最高性能优势:
- 流量数据包相对较大。
- 客户机同时在许多连接上处于活动状态,客户机在客户机之间、客户机到主机或向外部系统运行的流量。
- 队列数量等于 vCPU 数量。这是因为多队列支持优化 RX 中断关联和 TX 队列选择,以便使特定的队列私有到特定的 vCPU。
注意
目前,设置多队列 virtio-net 连接会对传出流量的性能产生负面影响。具体来说,这可能会在传输控制协议(TCP)流上发送 1,500 字节的数据包时发生。如需更多信息 ,请参阅红帽知识库。
5.4.2.1. 配置多队列 virtio-net 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
要使用多队列 virtio-net,请在客户机 XML 配置中添加以下内容(其中 N 的值从 1 到 256,因为内核支持多队列 tap 设备)支持 256 个队列:
<interface type='network'>
<source network='default'/>
<model type='virtio'/>
<driver name='vhost' queues='N'/>
</interface>
当在客户机中运行带有 N virtio-net 队列的虚拟机时,使用以下命令( M 的值从 1 到 N)启用多队列支持 :
# ethtool -L eth0 combined M