Hyper-V不支持Memory Overcommitment,一直为VMware和其他虚拟化厂商所诟病。当然,微软一直不承认这是他们的软肋,认为为了保证生产环境VM的性能,过量分配内存是不合时宜的。但是,微软的态度似乎突然转变,3月18日在其虚拟化的官方博客上发表了这样的一篇文章,声称微软听取了很多客户的意见,认为如何在避免性能下降的同时,最大限度的利用资源和投资,是客户所关心的,也是微软的努力方向,于是他们计划推出“动态内存”技术。
具体技术细节还不得而知,但看描述,很类似于VMware的Memory Overcommitment(内存过量分配)。
不过,有趣的是,微软提供了一个滑动调节器,给了用户更多的选择。我的理解是,滑动到最左边,追求最高性能的时候,就是相当于现在的,完全不过量分配内存。至于中间这些尺度是怎样设计的,还有待微软提供更多的细节。
不知道类似TPS(Transparent Page Sharing)之类的技术,是否会被微软采用。
不管怎样,这是个有趣的变化,也将使得Hyper-V越来越有竞争力。
又查阅了些资料,补充如下:
2008年10月公布的Hyper-V特性里面,包含有Dynamic Memory,但是在2009年夏天发布Hyper-V的时候被砍掉了,或许是当时这个技术还不成熟。
文章里面提到了Dynamic Memory,引用如下:
Overview
* Pool of memory is dynamically distributed across VMs
* Memory is dynamically allocated/removed based VM usage with no service interruption
Benefits
* Enables much higher consolidation ratios per host by addressing the greatest limiting factor to consolidation: Memory
How
VM memory configuration includes:
* Initial (what VM will boot with)
* Minimum (what VM is guaranteed)
* Maximum (what VM can grow to)
* Memory is added via Hot-Add MEM functionality
* Memory is removed via Balloon driver (supported OSs)
从这里看出,minimum,类似于VMware 的Memory Reservation,Maximum,类似于VMware的Memory Limit,而minimum和maximum之间的这些内存,可以通过Balloon驱动在VM之间调配。。。这和VMware的内存实现机制实在是太像了!
本博文先写到这里,待Hyper-V新版本出来之后再来测试。