Show Table of Contents
5.5. 网络调试技巧
这一部分描述了虚拟化环境中网络性能调试的技术。
5.5.1. 桥接零复制传输
零复制传输(Bridge Zero Copy Transmit)模式对于大尺寸的数据包较为有效。通常在客机网络和外部网络间的大数据包传输中,它对主机 CPU 负荷的减少可达到 15%,对吞吐量没有影响。
它不对客机到客机、客机到主机或小数据包负载造成影响。
Red Hat Enterprise Linux 7 虚拟机完全支持桥接零复制传输,但是被默认禁用。若需要启动零复制传输模式,请将 vhost_net 模块的
experimental_zcopytx kernel 模块参数设置到 1。
注意
由于针对限制服务和信息的威胁防御技术泄露攻击,在传输中通常会创建一个额外的数据复制。启动零复制传输将禁用这一威胁防御技术。
如果有性能回归限向,或如果无需担心主机 CPU 的使用,零复制传输模式可以通过将
experimental_zcopytx 设置到 0 被禁用。
5.5.2. 多队列 virtio-net
多队列 virtio-net 提供了随着虚拟 CPU 数量增加而改变网络性能的方法,即允许每一次通过一组以上的 virtqueue 传输数据包。
今天的高端服务器拥有更多处理器,其中所运行客机的虚拟 CPU 数量往往也在增加。在单一队列的 virtio-net 中,客机中协议堆叠的缩放收到限制,因为网络性能不随虚拟 CPU 数量的增加而改变。鉴于 virtio-net 只有一组 TX 和 RX 队列,客机不能并行传输或检索数据包。
多队列支持通过允许并行的数据包处理移除这些瓶颈。
多队列 virtio-net 在这些时候可以提供最佳性能:
- 流量数据包相对较大。
- 客机同时在各种连接中活跃,流量从客机、客机到主机或客户端运行到外部系统。
- 队列数量与虚拟 CPU 相同。因为多队列支持可以优化 RX 中断关联和 TX 队列选择,实现特定队列对于特定虚拟 CPU 的私有化。
注意
多队列 virtio-net 在输入流量中运行良好,但在少数情况下可能会影响输出流量的性能。启用多队列 virtio-net 提高总体吞吐量,同时提高 CPU 可用量。
5.5.2.1. 配置多队列 virtio-net
使用多队列 virtio-net 时,通过向客机 XML 配置(N 的值为 1 到 8,即 kernel 最多可支持一组多队列 tap 设备中的 8 个队列)添加以下命令:
<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
Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.