17.7. 优化虚拟机网络性能

由于虚拟机的网络接口卡(NIC)的虚拟性质,虚拟机会丢失其分配的主机网络带宽的一部分,这可以降低虚拟机的整体工作负载效率。以下提示可最大程度降低虚拟化对虚拟 NIC(vNIC)吞吐量的负面影响。

流程

使用以下任一方法并观察它是否对虚拟机网络性能有帮助:

启用 vhost_net 模块

在主机上,确保启用了 vhost_net 内核特性:

# lsmod | grep vhost
vhost_net              32768  1
vhost                  53248  1 vhost_net
tap                    24576  1 vhost_net
tun                    57344  6 vhost_net

如果这个命令的输出为空,请启用 vhost_net 内核模块:

# modprobe vhost_net
设置 multi-queue virtio-net

要为虚拟机设置 multi-queue virtio-net 特性,请使用 virsh edit 命令来编辑虚拟机的 XML 配置。在 XML 中,将以下内容添加到 <devices> 部分,并将 N 替换为虚拟机中的 vCPU 个数,最多 16 个:

<interface type='network'>
      <source network='default'/>
      <model type='virtio'/>
      <driver name='vhost' queues='N'/>
</interface>

如果虚拟机正在运行,重启它以使更改生效。

批量网络数据包

在具有长传输路径的 Linux VM 配置中,在将数据包提交给内核之前对其进行批处理可以提高缓存利用率。要设置数据包批处理,请在主机上使用以下命令,并将 tap0 替换为虚拟机使用的网络接口的名称:

# ethtool -C tap0 rx-frames 64
SR-IOV
如果您的主机 NIC 支持 SR-IOV,请为您的 vNIC 使用 SR-IOV 设备分配。如需更多信息,请参阅管理 SR-IOV 设备

其它资源