KVM虛擬機器網路效能差

KVM虛擬機器網路效能差

我正在 KVM 上運行 32 位元 Linux 虛擬機器。主機是連接到 LAN 的 64 位元 Linux 電腦。嘗試使用 scp 將檔案從 KVM 電腦傳輸到 LAN 上的伺服器會產生糟糕的效能,透過千兆位元乙太網路傳輸速度約為 500kB/s。約為預期的1%。有什麼建議麼?

答案1

考慮使用維蒂奧。它允許虛擬機器和主機之間的直接連接,無需模擬(慢速)硬體。我用它測量了網路效能的顯著提高。

例如,可以透過kvm命令列參數“-net nic,model=virtio”來啟用virtio網路設備。

如果您使用的是 virtio 區塊設備,請注意新設備名稱為「vda1」等,但這應該不是問題,因為目前的 Linux 發行版根據 UUID 檢測分割區。

答案2

這可能是來賓內部磁碟 I/O 效能的問題。如果您使用磁碟映像,只需執行幾個步驟即可獲得更好的效能:

首先,您必須嘗試使用cache來賓的磁碟配置選項。

預設情況下,直寫式快取用於所有區塊設備。這意味著主機頁面快取將用於讀取和寫入數據,但僅當儲存子系統報告資料已寫入時,才會向客戶機發送寫入通知。

一旦資料出現在主機頁面快取中,寫回快取就會報告資料寫入已完成。只要您信任您的主機,這就是安全的。如果您的主機崩潰或斷電,則來賓可能會遇到資料損壞。使用 -snapshot 選項時,預設會使用寫回快取。

使用cache=none 可以完全避免主機頁面。這將嘗試直接對來賓記憶體進行磁碟 IO。 QEMU 仍可執行資料的內部副本。

一些區塊驅動程式在使用cache=writethrough時表現不佳,最明顯的是qcow2。如果效能比正確性更重要,則應將cache=writeback與qcow2一起使用。預設情況下,如果沒有為 qcow2 磁碟映像指定明確緩存,則將使用cache=writeback。對於所有其他磁碟類型,cache=writethrough 是預設值。

然後,您還必須使用核心的電梯選項:您必須elevator=noop在 grub linux 命令列中新增以下內容:

# Edit your /etc/default/grub.conf (on Debian-based distribution)
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop"

對此的更好解釋可以在:http://lonesysadmin.net/2008/02/21/elevatornoop/;但簡而言之,主機 Linux 核心和來賓 Linux 核心都嘗試優化 I/O,但對於來賓來說,這往往比任何事情都更糟糕(來賓應該將此任務留給主機)。

相關內容