VMware ESX Server 3 中的内存管理(1)
VMware ESX Server 3 中的内存管理
简介
VMware ESX Server 3.0 的内存管理功能提供了一种独特而完备的管理方法,可以充分利用单个计算机的物理内存。如果工作负载繁重,内存就会成为制约因素。而有效的内存管理能够让更多的虚拟机共享同一个服务器,从而提高整合的投资回报率。随着虚拟化、CPU 以及内存技术的不断进步,添加内存已成为最大限度提高 ESX Server 主机利用率的最有效投资之一。
ESX Server 3 中的内存管理
ESX Server 体系结构
VMkernel 是 VMware 开发的一种高性能操作系统,可直接在 ESX Server 主机上运行。VMkernel 可以控制和管理硬件的大部分物理资源,其中包括:
? 内存
? 物理处理器
? 存储控制器
? 网络连接
? 键盘、视频设备和鼠标
VMkernel 包括用于 CPU、内存和磁盘访问的调度程序,具有成熟完善的存储和网络堆栈。
虚拟机监视器是实际负责 CPU 虚拟化的组件。虚拟机启动后,控制权将转交给虚拟机监视器,监视器便开始执行来自虚拟机的各种指令。控制权转交给虚拟机监视器这一过程会设置系统状态,这样虚拟机监视器便可以直接在硬件上运行。
除分配给服务控制台的内存之外,VMkernel 可以管理全部虚拟机内存。在旧版 ESX Server 中,服务控制台需要为主机上运行的每个虚拟机分配特定数量的内存。而 ESX Server 3.0 采用了新的体系结构,服务控制台不必负责主机上运行的每个虚拟机的内存要求。每个虚拟机的处理线程由 VMkernel 直接处理,因此无需再为每个虚拟机分配服务控制台内存。但如果服务器控制台中运行了代理(例如用于监视或备份),则可能需要为服务控制台分配更多的内存。
对于 VMkernel 托管的计算机内存,一部分留给 VMkernel 自身使用,其余部分则供虚拟机使用。虚拟机需要使用计算机内存的原因有二:每个虚拟机必须具有属于自己的内存,另外虚拟机监视器需要一定的内存来存储代码和数据。
虚拟机内存
每个虚拟机所占用的内存取决于为其配置的大小,再加上少量用于虚拟化的额外内存消耗。额外的内存消耗包括为虚拟机帧缓冲区以及各种虚拟化数据结构预留的空间。为虚拟机配置的大小是为其动态分配的内存大小,具体取决于以下三个因素。
预留量 是指主机为虚拟机保留的最低内存保障。限定量 是指主机中可供虚拟机使用的最高内存容量。最后一个因素是共享份额 ,如果服务器上的可用内存超过预留量,共享份额可以为某个虚拟机指定比该服务器上其他虚拟机更高的优先级。本白皮书将在下面几节对这三种因素进行更详细的论述。 简介 1
VMware 信息指南 VMware ESX Server 3 中的内存管理
内存的过量分配
针对每个正在运行的虚拟机,系统会保留一定的物理内存来作为该虚拟机的预留内存(如果有)及其虚拟化开销。但借助 ESX Server 主机采用的内存管理技术,虚拟机可以使用的内存会超出物理计算机(主机)上可供使用的内存。例如,一个具有 2 GB 内存的主机上可以运行四个具有 1 GB 内存的虚拟机。这种情况下,内存即为过量分配。过量分配这项技术对于提高内存利用率非常有效,因为在一般情况下,有些虚拟机的负载较低,而有些虚拟机的负载则较高,而且相对的活动级别也会随时间不断变化。
为提高内存利用率,ESX Server 主机会自动将空闲虚拟机的内存转移给需要更多内存的虚拟机。这部分内存在重新分配之前会被清除,从而强制隔离不同的虚拟机。预留量和共享份额参数用于为重要的虚拟机优先分配内存。这部分内存在空闲时仍可供其他虚拟机使用。
内存共享
许多工作负载都可以在虚拟机之间共享内存。例如,多个虚拟机可以同时运行同一客户操作系统的实例、载入相同的应用程序或组件,或者包含通用的数据。ESX Server 系统可使用专有的内存页面共享技术,安全清除冗余的内存页面副本。
如果 ESX Server 检测到系统长时间空闲,则 VMkernel 就会使用哈希算法比较各个物理内存页。遇到两个看起来内容相同的内存页后,将会执行二进制比较以确保这两个内存页的内容是相似的。然后,ESX Server 将更新这两个虚拟机的内存映射,使其指向同一个物理内存地址,从而释放其中一个内存页。如果一个虚拟机尝试写入或修改共享内存页,则 ESX Server 会首先复制该共享内存页,以便为每个虚拟机创建一个特有的实例。然后,请求对内存页执行写操作的虚拟机就能够修改内存页的内容,而又不会影响共享该内存页的其他虚拟机。
通过内存共享技术,包含多个虚拟机的工作负载所消耗的内存通常会少于该负载在多个物理机上运行时所消耗的内存。因此,系统就能有效地支持更高级别的过量分配内存。通过内存共享技术能够节省的内存数量取决于工作负载的特性。如果工作负载包含多个几乎完全相同的虚拟机,则可节省 30% 以上的内存,而如果工作负载包含的虚拟机差异迥然,则所节省的内存不会超过 5%。
ESX Server 内存
ESX Server 主机将为每个虚拟机分配由限定量参数所指定的内存量,除非内存处于过量分配的状态。ESX Server 主机为虚拟机分配的内存绝对不会超过为其指定的物理内存大小。例如,具有 1 GB 内存的虚拟机可能使用默认的限定量(无限大小)或由用户指定的限定量(例如,2 GB)。在这两种情况下,ESX Server 主机所分配的内存都不会超过 1 GB,即,为该虚拟机指定的物理内存大小。
在过量分配内存的情况下,为每个虚拟机分配的内存量均介于预留量与限定量之间。ESX Server 主机将根据为每个虚拟机分配的共享份额数来确定为该虚拟机分配的内存量。内存共享份额可以让虚拟机
西域无风 发表于: 2009-07-18
我要回答