使用VMware Tools 里的balloon driver回收内存是一个不错的选择,否则将发生严重的性能问题。 当vSphere管理员想把更多的虚拟机置于ESXi服务器上,内存的数量往往比CPU具有更多的局限性。 我们用最具成本效益的DIMM填满每一个DIMM插槽,当内存耗尽时买一个新的ESXi主机。当主机耗尽内存,VMkernel有几种方法从虚拟机回收物理内存。
其中一种方法是ballooning. 存在少许ballooning并不罕见,对虚拟机来说也不存在性能问题。利用ballooning技术回收越来越多的内存,性能也逐渐降低。如果ballooning导致高频率地交换,那么性能可能出现问……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
当vSphere管理员想把更多的虚拟机置于ESXi服务器上,内存的数量往往比CPU具有更多的局限性。
我们用最具成本效益的DIMM填满每一个DIMM插槽,当内存耗尽时买一个新的ESXi主机。当主机耗尽内存,VMkernel有几种方法从虚拟机回收物理内存。其中一种方法是ballooning.
存在少许ballooning并不罕见,对虚拟机来说也不存在性能问题。利用ballooning技术回收越来越多的内存,性能也逐渐降低。如果ballooning导致高频率地交换,那么性能可能出现问题。
Balloon driver发挥作用
Balloon driver是VMware Tools的一部分,驱动包和实用程序让虚拟机更好地运行。Balloon driver的目的是从虚拟机回收内存,然后释放到VMkernel,通常发生在ESXi服务器缺乏内存并且特定的虚拟机没有分配到内存的情况下。Balloon技术使内存压力显而易见。
VMkernel利用一定数量的内存使balloon driver膨胀。balloon driver从客户端操作系统申请内存,客户端为balloon driver分配内存页面。balloon driver通知VMkernel页面不再保存虚拟机数据,并释放用来支持虚拟机的物理页面。VMkernel不再支持虚拟页面,因为它知道页面中的虚拟机无关紧要。
ballooning的影响
当balloon driver第一次膨胀,客户端会分配空白页或闲置页面。空白页从来没有数据,而闲置页面有不再需要写入的数据。在这两种情况下,页面可以从虚拟机中获取而不影响虚拟机性能。有点膨胀的虚拟机将不会造成任何性能问题。如果少许膨胀可以释放足够的物理页面,就不必回收更多内存。
一旦空白页和空闲页面交付于balloon driver,客户端空余内存将接近于零。更多的内存回收可能会导致性能下降。性能下降的速度取决于虚拟机的操作系统和应用程序。大多数操作系统将使用一些内存作为磁盘高速缓存,加速访问频繁访问的磁盘块。未来的RAM会导致磁盘性能下降。一些应用程序对磁盘性能非常敏感,其他的则并非如此。
如果没有足够的内存回收,balloon driver将需要更多的内存。客户端将被迫做的第二件事是为了给balloon driver释放内存,将一些内存页面释放到硬盘,这被称为“客户端交换”。客户端选择磁盘上的哪些页面为balloon driver释放内存。同样,对于交换的内存大小,不同的应用有不同的标准。
通过了解虚拟机的内存信息,可以判定对应用程序产生哪些影响。如果发现高速率的交换,意味着ballooning导致性能降低。如果大量的内存必须由ballooning回收,缓存和活跃的页面可能会受到影响。内存回收得越多,对性能的影响就越大。
Windows对ballooning的反馈效果
释放压力
记住,ballooning是一个问题的症状,而不是原因。如果ESXi服务器的内存有压力,就释放它。我看过一些关于不要安装balloon driver程序的建议,因为它会导致客户端操作系统的交换。但这不是一个好建议。如果不利用balloon driver,VMkernel必须使用自己的内存作为交换,从虚拟机回收内存。VMkernel交换比ballooning对性能的影响更大。使用reservation阻止虚拟机内存被回收,因为reservation可以保留物理资源,虚拟机预留的内存不会被回收。另一方面你不能储备更多的内存,如果你需要过量使用,可能会看到偶尔膨胀。