KVM虛擬機網絡性能優化

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–nn並查找網卡定義:

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

現在需要關閉客戶操作系統並編輯客戶機XML定義,可以使用virsh進行編輯。在<device>部分將會看到客戶機XML代碼,確保已經定義了PCI設備。列表2中的示例顯示了相關定義。最重要的一行就是用於匹配PCIID(使用lspci–vv命令看到的)的有關域、總線、插槽及功能定義:

列表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直通磁盤是實現更好性能的兩種方式。(文/互聯網)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章