内存缓冲区为虚拟机提供比实际需求更多的内存空间。虚拟机的内存缓冲区不以MB计算,而Hyper-V尝试保留为高于当时提交内存的额外值的内存百分比。默认设置20%,如图1所示。
内存缓存区是Hyper-V虚拟内存的基本设置,为每台虚拟机保留额外空间。
当内存需求在某个一两秒间隔内突然增大时,可以使用保留区域。
在没有缓存的情况下,这一两秒内突然增大的内存需求,会迫使虚拟机进入内存溢出状态,该状态下自动将内存页面文件写入磁盘,数据从高速运行的内存空间中转移到相对而言极慢的磁盘上,会导致计算性能的明显降低。
当内存需求发生改变时,额外保留的空间可以降低虚拟机把内存数据写入磁盘的概率。同时,更大的缓存空间也带来了浪费。
保留的内存区域总是处于可用状态,因此在虚拟机用到它之前都是闲置的。从设置看,用户灵活性很大,该比率可以是5%到95%之间的任意数字。
比较好的方式是,开始的时候设置的小一点。因为,当发现虚拟机总是发生写入磁盘的情况时,可以随时对比率进行调整。
图1
内存计算Hyper-V动态内存功能,通过调用内存压力来计算并确定出虚拟机所需要使用的内存大小值。
Hyper-V动态内存增长采用内存热插拔算法,而内存缩减采用的则是冒泡算法。
若要执行这一运算过程,Hyper-V需要知道虚拟机中所运行的来宾操作系统所提交的总内存大小,以作为虚拟机所需内存大小计算比例的压力。
Hyper-V会分配给虚拟机管理员设置的一个起始内存值,再附加一个缓冲区作为动态附加内存。
虚拟机系统通常使用此额外的附加内存作为其系统文件缓存以增强操作系统和应用程序的性能。
微软制定的缓冲区百分比范围为5%至95%,默认值为20%。如图2所示。
图2
计算公式虚拟机可用内存计算公式:
虚拟机可用内存=启动内存+启动内存*(缓冲区百分比/(1-缓冲区百分比))
计算实例管理员为某虚拟机设置内存大小为1200MB,缓冲区百分比为20%,则Hyper-V会附加额外的20%/(100%-20%) x 1200 MB = 300 MB内存,即总共1500MB内存给虚拟机。
如果此例中的缓冲区百分比设置为80%,则Hyper-V会附加额外的80%/(100%-80%) x 1200 MB = 4800 MB内存,即总共6000MB内存给虚拟机。