动态内存允许 Hyper-V 根据来宾需求在最小值和最大值之间调整实际分配,适合许多空闲时间较多的虚拟机。它不会凭空增加物理内存,也不能用来掩盖宿主机长期超配。
一、五个设置分别做什么
- 启动内存(Startup RAM):来宾开机时获得的内存,必须足以完成启动、安装和升级。
- 最小内存(Minimum RAM):启动后 Hyper-V 可以回收至的下限。
- 最大内存(Maximum RAM):虚拟机允许增长到的上限。
- 内存缓冲区(Memory Buffer):Hyper-V 尝试在当前需求上额外保留的百分比。
- 内存权重(Memory Weight):宿主机内存紧张时,各虚拟机竞争资源的相对优先级。
最小值不能被理解成“系统只靠这么多也能正常工作”。若应用在峰值时需要更多内存,应给出合理最大值并确保宿主机真的有资源。
二、配置示例
关闭虚拟机后,可在“设置→内存”启用动态内存。PowerShell:
Set-VMMemory -VMName 'Web-Lab' -DynamicMemoryEnabled $true `
-StartupBytes 4GB -MinimumBytes 2GB -MaximumBytes 8GB `
-Buffer 20 -Priority 50
Get-VMMemory -VMName 'Web-Lab' |
Format-List DynamicMemoryEnabled,Startup,Minimum,Maximum,Buffer,Priority
数字只是教学示例。应先看来宾系统最低要求、常态工作集和峰值,再决定设置。
三、Smart Paging 不是长期交换空间
当虚拟机正在使用低于启动值的内存、执行重启而宿主机又无法立即提供差额时,Hyper-V 可能临时使用 Smart Paging 帮助重启。磁盘远慢于内存,这不是允许宿主机长期内存不足的理由。
安装或升级系统时,虚拟机主要受启动内存约束,动态最大值不能保证安装阶段自动获得足够内存。大版本升级前核对启动值。
四、如何判断设置是否合适
在宿主机观察“Hyper-V Dynamic Memory VM”和“Hyper-V Dynamic Memory Balancer”性能计数器,在来宾里同时查看提交内存、分页和应用响应时间。只看任务管理器一个瞬间容易误判。
数据库、大内存缓存和需要稳定延迟的程序可能更适合固定内存,或需要专项压测。动态内存与虚拟 NUMA 也有相互影响,大型 NUMA 敏感工作负载不要直接套用小型 Web 服务器经验。
本文为中文原创教程。参数含义参考 Microsoft Learn:Hyper-V Dynamic Memory Overview。
评论一下?