KVM虚拟机网络性能优化

时间:2022-12-26 21:44:54

KVM虚拟机通常提供了比较好的网络性能,但是每个管理员都知道这不足以解决所有问题。可以通过两种方式来优化网络性能:VirtIO驱动器或者PCI直通磁盘。方法的选择取决于你所需要的网络性能,以及使用的RedHatEnterpriseLinux版本。

使用VirtIO驱动器优化网络性能

网络性能始于虚拟网卡,但是VirtIO驱动器对网络性能影响巨大。VirtIO驱动器在不同的层面包括网络层提供了半虚拟化。如果你安装了一个Linux虚拟机,那么默认就使用了VirtIO驱动器。如果虚拟机使用的是其他操作系统,那么需要手动安装VirtIO驱动器。

为验证虚拟机是否在使用VirtIO驱动器,可以在虚拟机内运行lspci-v命令。然后在输出结果中查找以太网控制器。结果应该如列表1所示,显示正在使用的virtio-pci内核模块以及内核驱动器。

列表1:

GoodKVMnetworkperformancestartsbyusingtheVirtIOdriver
00:03.0
Ethernetcontroller:RedHat,IncVirtIOnetworkdevice
Subsystem:RedHat,IncDevice0001
PhysicalSlot:3
Flags:fastdevsel,IRQ10
I/Oportsatc040[size=32]
Memoryatf2020000(32-bit,non-prefetchable)[size=4K]
ExpansionROMatf2030000[disabled][size=64K]
Capabilities:[40]MSI-X:Enable+Count=3Masked-
Kerneldriverinuse:virtio-pci
Kernelmodules:virtio_pci

在KVM之前的版本中,即使使用了VirtIO驱动器,网络流量也是通过QEMU处理的,QEMU是位于主机和虚拟机之间的模拟层。而KVM最近的版本使用vhost-net取代了QEMU。RedHat从6.1版本开始提供该功能,保证了网络包在客户机和主机之间使用Linux内核而非QEMU进行路由。在RHEL6.1及之后的版本中,该功能已经自动被启用了。如果使用的是较旧的主机平台,一定要升级软件包否则网络性能将会受到影响。

使用专用网卡

如果已经使用了VirtIO网络驱动器,但是仍旧遇到了性能问题,那么可以考虑使用PCI直通。PCI直通将专门的物理网卡分配给虚拟机。只有该虚拟机能够直接访问这一物理网卡。

为配置PCI直通,首先需要断开主机的网络设备。找到网络设备的ID,然后使用lspci�Cnn并查找网卡定义:

02:00.0Networkcontroller[0280]:IntelCorporationCentrinoAdvanced-N6205[8086:0082](rev34)

现在需要关闭客户操作系统并编辑客户机XML定义,可以使用virsh进行编辑。在<device>部分将会看到客户机XML代码,确保已经定义了PCI设备。列表2中的示例显示了相关定义。最重要的一行就是用于匹配PCIID(使用lspci�Cvv命令看到的)的有关域、总线、插槽及功能定义:

列表2:
AddingaPCIpass-throughdevicetoaKVMvirtualmachine
<devices>

<hostdevmode='subsystem'type='pci'managed='yes'>
<source>
<addressdomain='0x0000'bus='0x02'slot='0x00'function='0x0'/>
</source>
</hostdev>
</devices>

现在可以重启虚拟机并验证PCI直通设备的支持情况。

从来不要认为你需要承受糟糕的KVM网络性能。VirtIO驱动器以及PCI直通磁盘是实现更好性能的两种方式。(文/互联网)

本文出自 “陆小K工作室” 博客,请务必保留此出处http://luxiaok.blog.51cto.com/2177896/1300155