Virtualization

KVM:哪些 CPU 特性使 VM 執行得更好?

  • September 23, 2015

我們正在使用具有以下參數的 Ubuntu 12.04:

  • 戴爾 R910
  • 核心 3.2.0-25-generic #40-Ubuntu SMP x86_64 x86_64 x86_64 GNU/Linux
  • kvm 1:84 + dfsg-0ubuntu16 + 1.0 + noroms + 0ubuntu13
  • qemu-kvm 1.0+noroms-0ubuntu13
  • qemu-common 1.0+noroms-0ubuntu13
  • qemu-kvm 1.0+noroms-0ubuntu13
  • 4 x Intel(R) Xeon(R) CPU E7-4870 @ 2.40GHz(每個都有 10 個物理核心,啟用 HT 和 Intel VT)
  • Windows 來賓目前沒有 VirtIO,但很快就會改變

我們在這台機器上執行了幾個 Windows 客戶機,其中一個是 Windows 2003 32 位,另一個是 Windows 2008(64 位)。我們目前正在努力解決性能問題並嘗試使用 CPU 模型。

我們通常將“qemu-system-x86_64”用於我們的 Windows 32 位客戶機,例如:

/usr/bin/qemu-system-x86_64 -S -M pc-1.0 -cpu qemu32 -enable-kvm -m 4096 -smp 4,sockets=4,cores=1,threads=1 [...] 

這位客人的表現竟然有點低。我們還沒有執行任何基準測試,但是假設當我們將 CPU 模型從“-cpu qemu32”切換到“-cpu Nehalem”時,將 VM 中的大量數據(文件)從一個目錄複製到另一個目錄會更快”。複製大約需要 2:40 小時的文件現在可以在 40 分鐘內複製。當然,這不是一個高質量的測試,還有很大的空間可以進行更專業的嘗試。但這是一個明確的指標,表明選擇正確的 CPU 型號可能會嚴重影響客戶機的性能。

現在我很好奇並跑了:

qemu-x86_64 -cpu ?
x86           [n270]
x86         [athlon]
x86       [pentium3]
x86       [pentium2]
x86        [pentium]
x86            [486]
x86        [coreduo]
x86          [kvm32]
x86         [qemu32]
x86          [kvm64]
x86       [core2duo]
x86         [phenom]
x86         [qemu64]

和:

kvm -cpu ?model
x86       Opteron_G3  AMD Opteron 23xx (Gen 3 Class Opteron)
x86       Opteron_G2  AMD Opteron 22xx (Gen 2 Class Opteron)
x86       Opteron_G1  AMD Opteron 240 (Gen 1 Class Opteron)
x86          Nehalem  Intel Core i7 9xx (Nehalem Class Core i7)
x86           Penryn  Intel Core 2 Duo P9xxx (Penryn Class Core 2)
x86           Conroe  Intel Celeron_4x0 (Conroe/Merom Class Core 2)
x86           [n270]  Intel(R) Atom(TM) CPU N270   @ 1.60GHz
x86         [athlon]  QEMU Virtual CPU version 1.0
x86       [pentium3]
x86       [pentium2]
x86        [pentium]
x86            [486]
x86        [coreduo]  Genuine Intel(R) CPU           T2600  @ 2.16GHz
x86          [kvm32]  Common 32-bit KVM processor
x86         [qemu32]  QEMU Virtual CPU version 1.0
x86          [kvm64]  Common KVM processor
x86       [core2duo]  Intel(R) Core(TM)2 Duo CPU     T7700  @ 2.40GHz
x86         [phenom]  AMD Phenom(tm) 9550 Quad-Core Processor
x86         [qemu64]  QEMU Virtual CPU version 1.0

對於所有這些不同的版本,有點難以猜測。“Nehalem”似乎是該列表中表現最好的一個。現在我想知道,如何判斷哪種 CPU 型號最適合我的客人?瀏覽網際網路,我找到了以下資源:

當我正確閱讀這些站點時,他們聲稱“-cpu host”可能會帶來最佳性能。我還不擔心遷移,因為兩個 KVM 主機都配備了相同的設備(完全相同的硬體)。

那麼,有經驗的 KVM 管理員有什麼建議呢?是否有黃金法則甚至矩陣,例如“此模型最適合該客戶作業系統”?

如果我能自己找到這些資訊,我深表歉意——我執行了各種穀歌搜尋並瀏覽了許多網站。我找不到能回答我問題的東西。

這真的很簡單。對於同構集群和單主機設置,請使用該host選項。對於混合集群,使用最低的可用 CPU 版本,因此如果一台主機是 Penryn 而另一台是 Nehalem,則在兩者上都使用 Penryn。

如果您使用的是 RHEV 或 oVirt,這已經是內置的。VMWare 將其稱為“EVC”並將其定位為一個巨大的功能。

回到性能,你肯定需要 virtio 任何你可以放的地方。如果您仍然遇到性能瓶頸,通常可以根據具體情況解決這些問題,具體取決於它們發生的位置。

$$ offtop $$關於您選擇的發行版,我已經在另一個文章中發表了評論$$ /offtop $$

引用自:https://serverfault.com/questions/404195