技术博客

虚拟化内存 Ballooning 是什么?什么时候会影响业务

内存 Ballooning 可以回收虚拟机空闲内存,但宿主机内存压力过高时,会引发性能抖动和排查困难。

内存超分Ballooning虚拟化性能运维

虚拟化内存比 CPU 更敏感。CPU 可以排队,内存不足时很容易导致交换、抖动甚至服务异常。

Ballooning 是一种内存回收机制。宿主机内存紧张时,通过虚拟机里的 balloon 驱动让虚拟机释放一部分内存给宿主机。它可以提高资源利用率,但也可能影响业务。

如果虚拟机确实有大量空闲内存,ballooning 影响不大。但如果虚拟机内部应用需要内存,强行回收会导致虚拟机内部开始 swap,性能明显下降。

运维要关注:

不要只看平台显示“内存还有余量”。要进入虚拟机内部看应用和系统状态。

生产建议:

内存超分能省成本,但代价是更复杂的性能风险。

Ballooning 排查清单

内存问题要同时看宿主机和虚拟机内部。宿主机看总压力,虚拟机内部看应用是否已经受影响。

宿主机:

free -h
vmstat 1
sar -r 1

虚拟机内部:

free -h
swapon --show
vmstat 1
dmesg -T | grep -i oom

如果宿主机内存紧张,同时多个虚拟机内部 swap 增长,说明内存超分已经影响业务。

运维建议

常见误区

看到虚拟机“已分配内存”不等于真实占用。也不要看到宿主机还有 cache 就认为一定安全。关键要看是否发生 swap、OOM、应用延迟升高。