虚拟化 CPU 超分怎么设?别让宿主机长期满负载
CPU 超分可以提升资源利用率,但过度超分会导致虚拟机调度等待、延迟升高和性能抖动。
虚拟化平台允许把虚拟 CPU 数量配置得超过物理 CPU 核心数,这叫 CPU 超分。适度超分可以提高资源利用率,因为不是所有虚拟机都会同时满载。
但超分不是越高越好。过度超分会让虚拟机等待物理 CPU 调度,表现为应用延迟升高、系统负载高、但单台虚拟机看起来 CPU 不一定满。
设置超分比要看业务类型:
- 轻量 Web、测试环境可以适当高一些。
- 数据库、中间件、编译任务要保守。
- 实时、低延迟业务不适合高超分。
- 同一宿主机不要放太多高峰时间一致的业务。
监控不能只看平均 CPU。要看宿主机 steal/wait、load、调度延迟、虚拟机响应时间和业务峰值。
建议建立资源分层:
- 生产关键业务:低超分或独占策略。
- 一般业务:中等超分。
- 测试开发:较高超分。
CPU 超分是提高利用率的工具,不是凭空增加算力。运维人员要在成本和稳定性之间找平衡。
如何判断超分是否过度
不要只看宿主机 CPU 使用率。CPU 使用率不高,也可能存在调度等待。更应该结合虚拟机延迟、宿主机负载和业务响应时间判断。
Linux 宿主机可以看:
uptime
mpstat -P ALL 1
pidstat -u 1
虚拟机内部可以看:
top
vmstat 1
如果虚拟机里 CPU steal 明显升高,说明虚拟机想运行但拿不到物理 CPU 时间。
建议的超分策略
- 生产数据库:低超分,必要时固定 CPU 亲和性。
- 普通 Web 服务:中等超分,观察峰值。
- 开发测试:可以较高超分,但要有限额。
- 批处理任务:尽量和在线业务错峰。
FAQ
vCPU 分配越多越好吗?
不是。vCPU 太多可能让调度更困难,尤其是老平台或特定 NUMA 场景。
