Kvm-Virtualization

為什麼 KVM VPS 比 OPENVZ 慢

  • September 3, 2019

所以我剛買了一個KVM vps,當我把它和我現有的openvz vps進行比較時,我發現它比openvz vps慢,當我檢查處理器資訊時,它的資訊有點錯誤,所以我想知道公司可以控制共享cpu是否在不同 KVM 容器之間記憶體?

在 kvm 上:cat /proc/cpuinfo

vendor_id       : GenuineIntel
cpu family      : 6
model           : 79
model name      : Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz
stepping        : 1
microcode       : 0x1
cpu MHz         : 2199.996
cache size      : 4096 KB
bogomips        : 4399.99

我在英特爾網站上查看了這個 E5 處理器有大約 30 MB 的記憶體。

在 openvz vps 上:cat /proc/cpuinfo

vendor_id       : GenuineIntel
cpu family      : 6
model           : 63
model name      : Intel(R) Xeon(R) CPU E5-1660 v3 @ 3.00GHz
stepping        : 2
microcode       : 46
cpu MHz         : 2999.918
cache size      : 20480 KB
bogomips        : 5999.83

記憶體大小為 20 MB,這是真實的。

之後我做了cpu bench

在 kvm 上: sysbench –test=cpu –cpu-max-prime=20000 執行

Maximum prime number checked in CPU test: 20000


Test execution summary:
   total time:                          30.1875s
   total number of events:              10000
   total time taken by event execution: 30.1860
   per-request statistics:
        min:                                  2.57ms
        avg:                                  3.02ms
        max:                                  4.13ms
        approx.  95 percentile:               3.22ms

Threads fairness:
   events (avg/stddev):           10000.0000/0.00
   execution time (avg/stddev):   30.1860/0.00

在 openvz 上: sysbench –test=cpu –cpu-max-prime=20000 執行

Maximum prime number checked in CPU test: 20000


Test execution summary:
   total time:                          26.5902s
   total number of events:              10000
   total time taken by event execution: 26.5889
   per-request statistics:
        min:                                  2.64ms
        avg:                                  2.66ms
        max:                                  3.17ms
        approx.  95 percentile:               2.70ms

Threads fairness:
   events (avg/stddev):           10000.0000/0.00
   execution time (avg/stddev):   26.5889/0.00

所以你可以看到有 4 秒的差異,這是一件大事。

**簡短回答:**對於單執行緒工作負載,您的 OpenVZ CPU 比 KVM 使用的 CPU 更快。最重要的是,OpenVZ 是一種輕量級的虛擬化方法,因此,在所有其他條件相同的情況下,它比 KVM 快一些。

長答案: KVM CPU 是具有 2.2-2.9 GHz 基本/渦輪時鐘的 Broadwell Xeon。OpenVZ 使用具有 3.0-3.5 GHz 基本/渦輪時鐘的 Haswell Xeon。考慮到 Haswell 和 Broadwell IPC 基本相同,最快的 CPU 贏得單執行緒基準測試也就不足為奇了。

關於虛擬化平台:

KVM 是一個全硬體虛擬化平台(full HVM),而 OpenVZ 使用容器化,其他使用半虛擬化。

第一種方法基本上模擬整個虛擬機/平台,具有非常高兼容性的優點(即使最初編寫的作業系統並未考慮到虛擬化 - 即:Windows)。成本增加了成本,這在某些工作負載中可能非常重要。可以將特定的半虛擬化驅動程序添加到完整的 HVM 設置中,從而避免一些成本。

另一方面,半虛擬化需要客戶作業系統協作(例如,以超級呼叫的形式。換句話說,客戶作業系統必須適應在特定的主管/準虛擬化器下執行,因此準虛擬化主機不能執行任意客戶作業系統。優點是成本低得多,因此性能更快。

容器化甚至比半虛擬化的成本更低,因為只有一個作業系統實例;每個其他 VPS 都是一個 jail/chroot-on-steroid,它使用與“主”作業系統相同的核心來複製使用者空間部分。這同時也是它的主要優勢和劣勢:由於它只複製使用者空間工具,因此成本非常低。另一方面,單個核心用於所有VPS 映像。

無論如何,完全 HVM、半虛擬化和容器化之間的區別主要體現在延遲和 I/O 綁定的工作負載上。由於您的基準測試是純 CPU 壓力測試,因此差異主要歸因於不同的 CPU 配置(而不是不同的管理程序)。

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