VMware 在 VMkernel 中實作了 CPU Scheduler,提供 Physical CPU 與 Virtual CPU (vCPU) 的中介層。

這種集中化的設計優點是彈性,包括動態調整 Guest OS 的 vCPU 與 CPU 資源控制等。但缺點是 Scheduler latencies 問題。

其中 vSphere 5.1 的 cycle 預設是 50ms,官方雖然說這並不影響效能,但若業務場景必須 Low latency 時,影響就會很關鍵。

而為了確保 vCPU 至少能夠進行基本維運,VMkernel 最低都會為每個 vCPU 保留一點 CPU Mhz,剩下的資源才會放進 CPU Scheduler 排程。

集中化的設計也帶來了另一個問題:CPU Contention。若 VMware 有愈多 vCPU,Contention 的問題就會愈大,也就是 (1) 增加 vCPU 的效能不會是線性成長;(2) 若遇到了 CPU Contention 問題,增加 vCPU 也無益,即砸大錢擴增硬體無法解決問題。

整合上述的觀點,VMware 似乎無法應付大量的集群系統,亦或是它還有什麼秘密武器?我只是業餘玩家,剩下的就讓 VMware 專家補充解惑。