1.首先对页面呈现的数据做一些对应解释
a.虚拟机详情页面【运行状态】,【内存使用率】是呈现的虚拟机内部查看的数据,可以与linux中的free,windows任务管理器中的内存对应
b.虚拟机列表中【占用主机资源】,【实际使用内存大小】呈现的是虚拟机对应的KVM进程所占用的物理内存大小,可以与在HCI后台ps axuf | grep vmid查看到的KVM进程使用的内存对应
在HCI后台ps axuf | grep vmid
2.虚拟机在不勾选【内存回收】或者勾选【大页内存】、【高性能虚拟机】的情况下。分配给虚拟机的内存将不会回收,虚拟机实际使用的内存大小就是分配的内存大小
3.在勾选了【内存回收】功能后,按照如下算法进行回收。
windows
当虚拟机运行主机剩余物理内存大于15%时,最多只回收可回收内存的35%;
当虚拟机运行主机剩余物理内存低于15%时,最多只回收可回收内存的75%;
当虚拟机运行主机剩余物理内存低于5%时,最多只回收可回收内存的95%。
linux
每次最多回收可回收内存的35%。
以回收35%情况为例,计算公式为:
回收后的实际占用率 = 配置内存 x ( 0.65 + 0.4 x 虚拟机内存使用率 )
代码部分注释如下
4.由于CentOS7.x内核bug(
参考链接),导致开启内存回收存在宕机风险,所以平台后台做了限制。即使客户在页面上配置了内存回收,也是不生效的。平台针对CentOS7.x系列的虚拟机不进行内存回收
5.需要跟客户强调的是:
内存回收机制实质上是平台再跟虚拟机抢占资源。
内存回收会影响虚拟机性能,甚至业务。
建议客户合理分配内存。