所謂 Overcommitting 就是指 KVM hypervisor 可以支援超過實體 CPU & Memory 數量的使用,例如機器是 qual-core CPU,所有 guest 可以分配的 vCPU 個數可以超過 4 vCPU,RAM 也是一樣,不過,當你的硬體資源很有限,必須 Overcommitting 時,請務必先閱讀此篇,否則您的系統可能會呈現不穩定或效能過低狀況。
Tip: Xen hypervisor 是不支援 CPU Overcommitting。
此篇是參考 RedHat 官方手冊所撰寫。
Overcommitting virtualized CPU
- 當所有 guest 所分配的 vCPU 超過實體 CPU 數量時,若 CPU負載接近 100% 時,可能會引起系統不穩定。
- 最佳的超量使用 vCPU 是每一個 guest 只分配一個 vCPU,Linux 排程可以有效的協助作負載均衡,即使負載 100% 只要 5 vCPU 中超量使用 1 vCPU,系統也是安全的。
- 如果是超量分配,請不要分配與實體 core 有對稱數量的 vCPU 個數,例如有 4 vCPU 的 guest 不應該使用在有 dual-core CPU 的機器上,這可能會引起系統效能降低情形。
- 分配 vCPU 的數量不超過實體 CPU 的個數是最適當的設定且可如預期的運作。
Overcommitting virtualized RAM
大部分的作業系統或應用程式沒有完全用到 100% RAM 時,可以分配 guest 超過實體 RAM 容量的記憶體。