发布时间: 2020-07-09 09:44:50
在我们服务器虚拟化的场景下,存在众多虚拟机,也就意味着我们需要更多的内存供给虚拟机使用,可是在我们使用的过程中并没有将所有的内存都使用完毕。因此我们在服务器虚拟化的场景下,就常常开启智能内存复用技术来提高服务器的虚拟机密度。那么内存复用具体什么呢?
内存复用是指在服务器物理内存一定的情况下,通过综合运用内存复用单项技术(内存气泡、内存交换、内存共享)对内存进行分时复用。通过内存复用,使得虚拟机内存规格总和大于服务器规格内存总和,提高服务器中虚拟机密度。
通过内存复用技术将物理内存虚拟出更多的内存供虚拟机使用,使虚拟机内存规格总和可以大于主机物理内存,最终提高主机的虚拟机密度。内存复用三种方式:
内存共享:虚拟机之间共享同一物理内存空间,此时虚拟机仅对内存做只读操作,当虚拟机需要对内存进行写操作时,开辟另一内存空间,并修改映射
内存置换:虚拟机长时间未访问的内存内容被置换到存储中,并建立映射,当虚拟机再次访问该内存内容时再置换回来
内存气泡:Hypervisor 通过内存气泡将较为空闲的虚拟机内存释放给内存使用率较高的虚拟机,从而提升内存利用率
那么这几种技术具体如何实现的呢?
正如内存共享,我们众多虚拟机具有相同的操作系统,也具有相同的内存页,内存共享将这些相同的内存页统一在一起作为一个共享的页,供给多个虚拟机同时读取,即做到减少内存的使用,又能保证内存都可以被同时读取到。而内存置换是使用服务的SWAP空间与内存空间进行置换实现可以置换出多余的内存给其他的虚拟机所使用。而内存气泡的原理则是Balloon Driver从源虚拟机申请可用内存页面,通过Grant Table授权给目标虚拟机,并更新虚拟机物理地址和机器地址映射关系表。
打开内存复用功能后,由内存复用策略接管物理内存的分配,在内存不紧张时虚拟机可以使用全 部物理内存。当出现竞争时,由内存复用策略为虚拟机实时调度内存资源,综合运用内存复用技术 释放虚拟机的空闲内存,为其他虚拟机的内存需求提供条件。
综上所述通过内存复用技术,可降低运营商或企业的成本。
当计算节点的内存数量固定时,可以提高计算节点的虚拟机密度。
当计算节点的虚拟机密度固定时,可以节省计算节点的内存数量。
那么内存复用对我们的环境有什么要求呢?
1. 如果集群下存在使用 iNIC 网卡的主机,则不能开启集群内存复用功能。
2. 每个计算节点上运行的所有虚拟机的预留内存之和不能大于虚拟机使用的实际可用物理内存总和。
3. 同时开启主机内存复用和 Guest NUMA 或者同时开启主机 CPU 资源隔离模式和 Guest NUMA,会导致 Guest NUMA 功能失效。
可能这时候就有同学问我,那这个内存复用这么好,我这么启动呢?我们在通过VRM管理界面的集群资源控制,对CAN主机的内存复用进行开/关操作。
是的,主机内存技术只能同时开启,也只能同时关闭,不能说单独开启内存共享、内存置换或内存气泡功能。而内存复用我们一般而言比值推荐最高到达150%。这样不会太影响虚拟机的业务,也可以更好的提高服务器的利用率。不过内存复用技术的开启是导致虚拟机性能下降,所以如果是重要业务的虚拟机,我们不建议开启。
通过此篇文章,你是否有了解到关于内存复用技术的内容?更多关于FusionCompute的特性,我们后续继续介绍哦。
下一篇: 【人工智能】机器学习—超参数调优