如果VM只使用1GB,但是配置的4G,ESXi按需分配,只给1GB。如果VM现在要6G的内存。差的2GB内存VMkernel不会再为其分配内存了。开始使用到pagefile.sys/swap分区。
假设虚拟机上的应用内存使用量下降了,降为1G,但是虚拟机并不会把已经分配给它的内存还给ESXi主机(操作系统把空闲内存握在自己手里)。只有当ESXi主机内存紧张时,才会关心这些内存的回收。
ESXi内存回收机制(一般剩余内存低于10%,就会触发):
- 1.TPS (Transparent Page Sharing, 透明页面共享)
内容相同的内存页面(虚拟机内部以及虚拟机之间)只保留一份,类似存储的去重技术
默认情况下,虚拟机内部的透明页共享是开启的,即相同的内存页只写一份。出于安全考虑,虚拟机之间的透明共享没有开闭,通过命令行的方式开启虚拟机的透明页共享。即:Intra-VM开启;Inter-VM关闭。
- 2.Balloon Driver (气球驱动): 65% ~ 75%
VMware Tools ---> tools里的 vmmemctl 进程 (内存释放驱动程序)
首先回收 Free Memory 和 Idle Memory ---> VM性能无影响
按照默认65%的基准点进行回收,回收到虚拟机所有内存的65%就停止回收。不建议修改,如果要修改,建议范围是 65% ~75%
其次回收 Active Memory ---> pagefile/swap ----> VM性能有影响
如果Free和Idle都回收后,还是达不到 65% 的内存,就要回收active memory了。
- 3.Memory Compression (内存压缩)
将剩下还在用的虚拟机内存进行压缩,从 4KB 压缩小 2KB,VM性能有影响。
- 4.Host Swap Cache (主机交换缓存):(option)
在主机上配置本地的SSD盘,来作 swap 文件。
一般不用,还不如买内存加到主机上。
- 5.Swap File (交换文件)
.vswp文件,VM开机时产生,关机时自动删除
vswp = VM Allocation - VM Reservation(默认为0)
当所有的内存回收机制都完成后,ESXi主机还是没有拿到足够的内存。假如ESXi主机还要1G内存,其上有10个虚拟机,则每个虚拟机需要给出100M的内存,则在虚拟机内存中随机取出100M内容放到 .vswp 文件中。VM性能严重影响。
该功能是系统预置功能,没法关闭。可以将这个文件放置到本地磁盘来节省空间,但是会影响vMotion。