■ 动态内存增强Hyper-V
技术业务总部的基础设施事业部中工程技术专家小组的山崎先生
——动态内存并没像VMware一样使用页面共享,而是采用了过量调拨内存功能,这其中的原因何在?
山崎先生:由于Windows 7和Windows Server 2008 R2采用的都是大页面(2MB),这就不可能共享页面。像VMware的页面共享,是检查每页的共享数据再比较。然而,在2MB的页面中,完全相同的内容存在的可能性比较低。
而且,页面共享和内存检查都共享同样的内容。现在不是共享内存的时机。检查内存找到同一页面,还需要时间进行共享。
此外,当共享页面改变时,哪怕是一个字位的变化,若要取消共享页面,也必须在内存里复制相同数量的页面。经常会出现这种情况,这也是性能会下降的原因。因此,动态内存不采用页面共享。
只要利用页面共享,就需要有适应环境的新机制。例如,从一个像呼叫中心的虚拟场景中启动多个虚拟环境,就得考虑使用页面共享以节约内存。但我认为未来的Hyper-V会有一个采用页面共享的新理念。
动态内存的另一构想是在虚拟环境中不进行分页。当然,在虚拟环境中你可以采用更多的内存用于磁盘交换。但磁盘交换使性能下降很快。
共享页面,如果页面被共享,4KB相同数据出现的可能性很大。但Windows OS使用的是大页面,页面被扩展为2MB,因此同一数据出现的可能性较少,能够利用页面共享的情况也比较少
——动态内存定义内存的最大值和最小值是动态变化的。为什么不像其他公司那样定义最大值?
山崎先生:这也是和分页息息相关的。动态内存可以使我们在虚拟环境中根据需要扩展内存。因此,这种性能使得内存的最大容量是动态变化的。
如果虚拟环境启动时就定义了最大容量,当内存不能分配时,就有必要分页。动态内存指定了优先级和缓冲值。优先级决定虚拟机的优先次序,即决定着哪个虚拟机器优先分配内存。
此外,缓冲值设置了内存应该分配给整个系统的容量百分比。例如,当被设置为20%,则需要从各虚拟机削减20%的内存空间,当空间容量超过20%,则需要扩展虚拟机的内存。
如果需要为两个虚拟环境在同一时间进行内存扩展,且内存不足,内存会分配给优先级更高的虚拟环境。这种情况下,优先级低的虚拟环境会产生一个内存不足的错误。
如果使用动态内存运行SQL Server应用程序,你需要注意进行内存管理。这种应用程序,为确保在启动时具有最大可用内存,即使负载变小时也会继续保留最大值。
另外,你必须检查某些应用在启动和安装时指定的内存容量。当要运行在虚拟环境中只占用最小内存容量的应用程序时,你将需要使这些应用程序保持启动或可安装。
动态内存,在启动和安装的时候都动态改变内存占用量,因为有可能分配不了你应用程序所需的内存。
主页面,当内存不足时,将会在磁盘页面上创建一个交换文件
如果你没有足够的内存,虚拟机会出现超负荷现象。发生超负荷,此系统将会被锁死进而停止运作
Hyper-V的虚拟机可以锁定内存以避免交换