《 vSphere资源管理》 例如,请考虑配置大小为1GB的虚拟机。当客户机操作系统引导时,系统会检测到它正运行在具有1GB 物理内存的专用计算机上。有些情况下,可能向虚拟机分配全部内容(即1GB)。在其他情况下,可能会得 到较小的分配量。无论实际分配如何,客户机操作系统都会继续运行,就好像正运行在具有1GB物理内存 的专用计算机上一样。 份额 如果可用量超过预留,则会为虚拟机指定相对优先级。 预留 主机保证为虚拟机预留的物理内存量下限,即使内存过载也是如此。将预留设 置为确保虚拟机高效运行的足够内存水平,这样就不会有过多的内存分页 在虚拟机消耗其预留的全部内存后,会允许其保留该内存量,并且不会将该内 存回收,即使该虚拟机闲置也是如此。某些客户机操作系统(例如 Linux)在 引导之后可能不会立即访问所配置的全部内存。在虚拟机消耗其预留的全部内 存之前, VMkernel可以将其预留的任何未使用部分分配给其他虚拟机。但 是,在客户机的工作负载增加并且虚拟机消耗其全部预留之后,允许其保留此 内存。 限制 主机可分配给虚拟机的物理内存量的上限。虚拟机的内存分配还受其配置大小 的隐式限制。 内存过载 对于每个正在运行的虚拟机,系统会为虚拟机的预留(如果有)和虚拟化开销预留物理内存。 所有虚拟机的已配置内存大小总量可能超过了主机上的可用物理内存量。但是,这并不一定意味着内存已过 载。当所有虚拟机的组合工作内存占用超过主机内存大小的组合工作内存占用时,内存已过载 由于EsXi主机使用内存管理技术,虚拟机可以使用的虚拟内存大于主机上可用的物理内存。例如,您有 个内存为2GB的主机,其上运行四个虚拟机,每个虚拟机的内存为1GB。这种情况下,内存会过载。例 如,如果所有4个虚拟机均闲置,则组合消耗内存可能远低于2GB。但是,如果所有4GB虚拟机均主动消 耗内存,则其内存占用可能超过2GB,并且ESX主机将过载。 过载有一定的意义,因为通常情况下有些虚拟机负载较轻,而有些虚拟机负载较重,相对活动水平会随着时 间的推移而有所差异 为了改善内存利用率,ESXi主机将闲置虚拟机的内存转移给需要更多内存的虚拟机。使用“预留”或“份 额”参数可优先向重要的虚拟机分配内存。如果这部分内存未使用,可以用于其他虚拟机。ESXi实施了多 种机制(如虚拟增长、内存共享、内存压缩和交换)来提供合理性能,即使主机尚未严重内存过载 如果虚拟机在内存过载环境下消耗了所有可预留内存,ESX主机可能会内存不足。虽然已打开电源的虚拟 机不受影响,但新虚拟机可能会由于内存不足而无法打开电源 注所有虚拟机内存开销也被视为预留 此外,ESⅪi主机上默认还会启用内存压缩,以在内存过载时提高虚拟机性能,如内存压缩中所述。 内存共享 内存共享是一项专用的ESX技术,有助于增加主机上的内存密度。 VMware,lc保留所有权利
例如,请考虑配置大小为 1GB 的虚拟机。当客户机操作系统引导时,系统会检测到它正运行在具有 1 GB 物理内存的专用计算机上。有些情况下,可能向虚拟机分配全部内容(即 1GB)。在其他情况下,可能会得 到较小的分配量。无论实际分配如何,客户机操作系统都会继续运行,就好像正运行在具有 1 GB 物理内存 的专用计算机上一样。 份额 如果可用量超过预留,则会为虚拟机指定相对优先级。 预留 主机保证为虚拟机预留的物理内存量下限,即使内存过载也是如此。将预留设 置为确保虚拟机高效运行的足够内存水平,这样就不会有过多的内存分页。 在虚拟机消耗其预留的全部内存后,会允许其保留该内存量,并且不会将该内 存回收,即使该虚拟机闲置也是如此。某些客户机操作系统(例如 Linux)在 引导之后可能不会立即访问所配置的全部内存。在虚拟机消耗其预留的全部内 存之前,VMkernel 可以将其预留的任何未使用部分分配给其他虚拟机。但 是,在客户机的工作负载增加并且虚拟机消耗其全部预留之后,允许其保留此 内存。 限制 主机可分配给虚拟机的物理内存量的上限。虚拟机的内存分配还受其配置大小 的隐式限制。 内存过载 对于每个正在运行的虚拟机,系统会为虚拟机的预留(如果有)和虚拟化开销预留物理内存。 所有虚拟机的已配置内存大小总量可能超过了主机上的可用物理内存量。但是,这并不一定意味着内存已过 载。当所有虚拟机的组合工作内存占用超过主机内存大小的组合工作内存占用时,内存已过载。 由于 ESXi 主机使用内存管理技术,虚拟机可以使用的虚拟内存大于主机上可用的物理内存。例如,您有一 个内存为 2 GB 的主机,其上运行四个虚拟机,每个虚拟机的内存为 1 GB。这种情况下,内存会过载。例 如,如果所有 4 个虚拟机均闲置,则组合消耗内存可能远低于 2GB。但是,如果所有 4GB 虚拟机均主动消 耗内存,则其内存占用可能超过 2GB,并且 ESXi 主机将过载。 过载有一定的意义,因为通常情况下有些虚拟机负载较轻,而有些虚拟机负载较重,相对活动水平会随着时 间的推移而有所差异。 为了改善内存利用率,ESXi 主机将闲置虚拟机的内存转移给需要更多内存的虚拟机。使用“预留”或“份 额”参数可优先向重要的虚拟机分配内存。如果这部分内存未使用,可以用于其他虚拟机。ESXi 实施了多 种机制(如虚拟增长、内存共享、内存压缩和交换)来提供合理性能,即使主机尚未严重内存过载。 如果虚拟机在内存过载环境下消耗了所有可预留内存,ESXi 主机可能会内存不足。虽然已打开电源的虚拟 机不受影响,但新虚拟机可能会由于内存不足而无法打开电源。 注 所有虚拟机内存开销也被视为预留。 此外,ESXi 主机上默认还会启用内存压缩,以在内存过载时提高虚拟机性能,如内存压缩中所述。 内存共享 内存共享是一项专用的 ESXi 技术,有助于增加主机上的内存密度。 《vSphere 资源管理》 VMware, Inc. 保留所有权利。 26
《 vSphere资源管理》 内存共享取决于以下观察结果:几个虚拟机可能正在运行同一客户机操作系统的多个实例。这些虚拟机可能 已加载相同的应用程序或组件,或者包含公用数据。这些情况下,主机使用专用的透明页面共享(TPS)技术 消除内存页的冗余副本。采用内存共享后,在虚拟机中运行的工作负载消耗的内存通常要少于其在物理机上 运行时可能需要的内存。因此,可以高效地支持更高级别的过量分配。通过内存共享节省的内存量取决于工 作负载是否由几乎相同的虚拟机组成,这些虚拟机可能会释放更多内存。如果工作负载差异较大,则可能会 导致节省的内存百分比明显降低。 注出于安全考虑,默认情况下,虚拟机间透明页面共享处于禁用状态,并且页面共享限于虚拟机内部内存 共享。页面共享不能在多个虚拟机间进行,只能在虚拟机内部进行。有关详细信息,请参见在虚拟机之间共 享内存 内存虚拟化 因为虚拟化引入了额外级别的内存映射,所以ESXi可以跨所有虚拟机来管理内存。 虚拟机的一些物理内存可能映射到共享页面或未映射或换出的页面。 主机执行虚拟内存管理时无需了解客户机操作系统,也不会干涉客户机操作系统自身的內存管理子系统 每个虚拟机的ⅥMM保持了从客户机操作系统的物理内存页到基础计算机上物理内存页的映射。( VMware 将基础主机物理页称为“计算机”页,将客户机操作系统的物理页称为“物理”页。) 每个虚拟机均有连续的可寻址物理内存空间,该空间从零开始。每个虚拟机使用的服务器上的基础计算机内 存不一定是连续的。 客户机虚拟地址到客户机物理地址的转换由客户机操作系统管理。管理程序仅负责将客户机物理地址转换为 计算机地址。硬件辅助的内存虚拟化将利用硬件设施生成具有由管理程序维护的客户机页表和嵌套页表的组 该图说明了ESXi如何实施内存虚拟化。 图51.Esxi内存映射 虚拟机 虚拟机 cb 客户机虚拟内存 客户机物理内存 abb|c口 计算机内存 方框表示页,而箭头表示不同的内存映射 从客户机虚拟内存到客户机物理内存的箭头表示客户机操作系统中的页表所保持的映射。(未显示x86 架构处理器从虚拟内存到线性内存的映射。) 从客户机物理内存到计算机内存的箭头表示由WMM保持的映射。 VMware,lc保留所有权利
内存共享取决于以下观察结果:几个虚拟机可能正在运行同一客户机操作系统的多个实例。这些虚拟机可能 已加载相同的应用程序或组件,或者包含公用数据。这些情况下,主机使用专用的透明页面共享 (TPS) 技术 消除内存页的冗余副本。采用内存共享后,在虚拟机中运行的工作负载消耗的内存通常要少于其在物理机上 运行时可能需要的内存。因此,可以高效地支持更高级别的过量分配。通过内存共享节省的内存量取决于工 作负载是否由几乎相同的虚拟机组成,这些虚拟机可能会释放更多内存。如果工作负载差异较大,则可能会 导致节省的内存百分比明显降低。 注 出于安全考虑,默认情况下,虚拟机间透明页面共享处于禁用状态,并且页面共享限于虚拟机内部内存 共享。页面共享不能在多个虚拟机间进行,只能在虚拟机内部进行。有关详细信息,请参见在虚拟机之间共 享内存。 内存虚拟化 因为虚拟化引入了额外级别的内存映射,所以 ESXi 可以跨所有虚拟机来管理内存。 虚拟机的一些物理内存可能映射到共享页面或未映射或换出的页面。 主机执行虚拟内存管理时无需了解客户机操作系统,也不会干涉客户机操作系统自身的内存管理子系统。 每个虚拟机的 VMM 保持了从客户机操作系统的物理内存页到基础计算机上物理内存页的映射。(VMware 将基础主机物理页称为“计算机”页,将客户机操作系统的物理页称为“物理”页。) 每个虚拟机均有连续的可寻址物理内存空间,该空间从零开始。每个虚拟机使用的服务器上的基础计算机内 存不一定是连续的。 客户机虚拟地址到客户机物理地址的转换由客户机操作系统管理。管理程序仅负责将客户机物理地址转换为 计算机地址。硬件辅助的内存虚拟化将利用硬件设施生成具有由管理程序维护的客户机页表和嵌套页表的组 合映射。 该图说明了 ESXi 如何实施内存虚拟化。 图 5‑1. ESXi 内存映射 虚拟机 1 客户机虚拟内存 客户机物理内存 计算机内存 a b a a b b c b c b b c 虚拟机 2 n 方框表示页,而箭头表示不同的内存映射。 n 从客户机虚拟内存到客户机物理内存的箭头表示客户机操作系统中的页表所保持的映射。(未显示 x86 架构处理器从虚拟内存到线性内存的映射。) n 从客户机物理内存到计算机内存的箭头表示由 VMM 保持的映射。 《vSphere 资源管理》 VMware, Inc. 保留所有权利。 27
《 vSphere资源管理》 虚线箭头表示从客户机虚拟内存到计算机内存的映射,该映射也由ⅥMM保持。运行虚拟机的基础处理 器使用卷影页表映射 硬件辅助的内存虚拟化 类似于 AMD SVM-V和 Intel xeon5500系列之类的部分CPU通过使用两层页表来提供对内存虚拟化的硬 件支持。 注在本主题中,“内存”可以指物理内存或永久内存。 第一层页表存储客户机虚拟-物理转换,而第二层页表存储客户机物理-计算机转换。TLB( translation look- aside buffer,转换旁视缓冲区)是由处理器的内存管理单元(MMU)硬件维护的转换缓存。TLB缺失是此缓 存中的缺失,而且硬件需要访问内存(可能是多次)来查找所需转换。如果TLB中没有某个客户机虚拟地 址,则硬件会查看这两个页表,将客户机虚拟地址转换成计算机地址。第一层页表由客户机操作系统维护 WMM仅维护第二层页表。 性能注意事项 使用硬件辅助时,会消除软件内存虚拟化的开销。特别是,硬件辅助消除了使卷影页表与客户机页表保持同 步所需的开销。但是,使用硬件辅助时ηLB缺失延迟时间明显较长。默认情况下,管理程序在硬件辅助模 式下使用大页以减少LB缺失的成本。因此,工作负载是否受益于硬件辅助主要取决于在使用软件内存虚 拟化时由内存虚拟化引起的开销。如果工作负载涉及少量页表活动(例如进程创建、映射内存或上下文切 换),则软件虚拟化不会引起显著开销。相反,具有大量页表活动的工作负载可能会因使用硬件辅助而受益。 默认情况下,管理程序在硬件辅助模式下使用大页以减少TLB缺失的成本。通过在客户机虚拟到客户机物 理以及客户机物理到计算机地址转换中使用大页,可以实现最佳性能 Page. LPageALwaysTryForNPT选项可以更改在客户机物理到计算机地址转换中使用大内存页的策略。有 关详细信息,请参见高级内存属性 支持大内存页 EsXi为大内存页提供有限的支持。 x86架构允许系统软件使用4KB、2MB和1GB页面。我们将4KB页面称为小内存页,而将2MB和1GB 页面称为大内存页。大内存页可缓解旁路转换缓冲(TLB)压力,降低页表遍历开销,从而提高工作负载的性 在虚拟化环境中,管理程序和客户机操作系统可独立使用大内存页。虽然客户机和管理程序都使用大內存页 可实现最大的性能影响,但在大多数情况下 仅在管理程序级别使用大内存页也可以观察到性能影响。 默认情况下ESXi管理程序使用2MB页面来备份客户机vRAM。 Sphere6.7ESⅪi支持使用1GB页面备 份客户机vRAM,但提供的支持有限。有关详细信息,请参见使用1GB页面备份客户机vRAM VMware,lc保留所有权利
n 虚线箭头表示从客户机虚拟内存到计算机内存的映射,该映射也由 VMM 保持。运行虚拟机的基础处理 器使用卷影页表映射。 硬件辅助的内存虚拟化 类似于 AMD SVM-V 和 Intel Xeon 5500 系列之类的部分 CPU 通过使用两层页表来提供对内存虚拟化的硬 件支持。 注 在本主题中,“内存”可以指物理内存或永久内存。 第一层页表存储客户机虚拟-物理转换,而第二层页表存储客户机物理-计算机转换。TLB(translation lookaside buffer,转换旁视缓冲区)是由处理器的内存管理单元 (MMU) 硬件维护的转换缓存。TLB 缺失是此缓 存中的缺失,而且硬件需要访问内存(可能是多次)来查找所需转换。如果 TLB 中没有某个客户机虚拟地 址,则硬件会查看这两个页表,将客户机虚拟地址转换成计算机地址。第一层页表由客户机操作系统维护。 VMM 仅维护第二层页表。 性能注意事项 使用硬件辅助时,会消除软件内存虚拟化的开销。特别是,硬件辅助消除了使卷影页表与客户机页表保持同 步所需的开销。但是,使用硬件辅助时 TLB 缺失延迟时间明显较长。默认情况下,管理程序在硬件辅助模 式下使用大页以减少 TLB 缺失的成本。因此,工作负载是否受益于硬件辅助主要取决于在使用软件内存虚 拟化时由内存虚拟化引起的开销。如果工作负载涉及少量页表活动(例如进程创建、映射内存或上下文切 换),则软件虚拟化不会引起显著开销。相反,具有大量页表活动的工作负载可能会因使用硬件辅助而受益。 默认情况下,管理程序在硬件辅助模式下使用大页以减少 TLB 缺失的成本。通过在客户机虚拟到客户机物 理以及客户机物理到计算机地址转换中使用大页,可以实现最佳性能。 LPage.LPageAlwaysTryForNPT 选项可以更改在客户机物理到计算机地址转换中使用大内存页的策略。有 关详细信息,请参见高级内存属性。 支持大内存页 ESXi 为大内存页提供有限的支持。 x86 架构允许系统软件使用 4KB、2MB 和 1GB 页面。我们将 4KB 页面称为小内存页,而将 2MB 和 1GB 页面称为大内存页。大内存页可缓解旁路转换缓冲 (TLB) 压力,降低页表遍历开销,从而提高工作负载的性 能。 在虚拟化环境中,管理程序和客户机操作系统可独立使用大内存页。虽然客户机和管理程序都使用大内存页 时可实现最大的性能影响,但在大多数情况下,即使仅在管理程序级别使用大内存页也可以观察到性能影响。 默认情况下 ESXi 管理程序使用 2MB 页面来备份客户机 vRAM 。vSphere 6.7 ESXi 支持使用 1 GB 页面备 份客户机 vRAM,但提供的支持有限。有关详细信息,请参见使用 1GB 页面备份客户机 vRAM。 《vSphere 资源管理》 VMware, Inc. 保留所有权利。 28
管理内存资源 6 使用 vSphere Client,可以查看有关内存分配设置的信息并对其进行更改。为了有效管理内存资源,还必须 熟悉内存开销、闲置内存消耗以及ESXi主机回收内存的方式 当管理内存资源时,可以指定内存分配。如果未自定义内存分配,则ESXi主机使用适合大多数情况下的默 人值 可以通过几种方式指定内存分配。 使用可通过 vSphere Client访问的属性和特殊功能。通过 vSphere Client,可以连接到ESXi主机或 vCenter server系统 使用高级设置 将 vSphere SDK用于脚本式内存分配 注在本章中,“内存”可以指物理内存或永久内存。 本章讨论了以下主题 了解内存开销 EsXi主机如何分配内存 内存回收 使用交换文件 在虚拟机之间共享内存 内存压缩 衡量和区分各种内存使用情况 内存可靠性 关于系统交换 了解内存开销 内存资源的虚拟化会涉及一些相关开销。 EsXi虚拟机可以引起两种内存开销: 在虚拟机内访问内存所需的额外时间 VMware,lc保留所有权利
管理内存资源 6 使用 vSphere Client,可以查看有关内存分配设置的信息并对其进行更改。为了有效管理内存资源,还必须 熟悉内存开销、闲置内存消耗以及 ESXi 主机回收内存的方式。 当管理内存资源时,可以指定内存分配。如果未自定义内存分配,则 ESXi 主机使用适合大多数情况下的默 认值。 可以通过几种方式指定内存分配。 n 使用可通过 vSphere Client 访问的属性和特殊功能。通过 vSphere Client,可以连接到 ESXi 主机或 vCenter Server 系统。 n 使用高级设置。 n 将 vSphere SDK 用于脚本式内存分配。 注 在本章中,“内存”可以指物理内存或永久内存。 本章讨论了以下主题: n 了解内存开销 n ESXi 主机如何分配内存 n 内存回收 n 使用交换文件 n 在虚拟机之间共享内存 n 内存压缩 n 衡量和区分各种内存使用情况 n 内存可靠性 n 关于系统交换 了解内存开销 内存资源的虚拟化会涉及一些相关开销。 ESXi 虚拟机可以引起两种内存开销: n 在虚拟机内访问内存所需的额外时间。 VMware, Inc. 保留所有权利。 29
《 vSphere资源管理》 超出向每个虚拟机分配的内存后,ESXi主机自身代码和数据结构所需的额外空间。 ESXi内存虚拟化向内存访问添加很少的时间开销。因为处理器分页硬件直接使用页表(基于软件的卷影页 表方法或硬件辅助的两级页表方法),所以虚拟机中的大多数内存访问在执行时没有地址转换开销。 内存空间开销有两部分 VMkernel系统范围内的固定开销 每个虚拟机的额外开销 开销内存包括为虚拟机框架缓冲区和各种虚拟化数据结构(如卷影页表)预留的空间。开销内存取决于虚拟 CPU数量以及为客户机操作系统配置的内存。 虚拟机上的开销内存 要打开虚拟机电源,需要一定数量的可用开销内存。您应当了解此开销量。 下表列出了打开虚拟机电源所需的开销内存量。当虚拟机开始运行之后,该虚拟机所使用的开销内存量可能 不同于表中列出的数量。通过启用虚拟机的MX交换功能以及启用硬件MMU来收集示例值。(默认情况 下启用∨X交换功能。) 注下表提供的是开销内存值的示例,并不尝试提供有关所有可能的配置的信息。您可以将虚拟机配置为最 多包含64个虚拟CPU,具体取决于主机上许可的CPU数、客户机操作系统支持的CPU数 表6-1.虚拟机上的示例开销内存 内存(MB) 1个vcPU 2个vcPu 4个vcPU 8个vcPu 1024 25.90 299 37.86 53.82 48.64 60.67 143.98 151.93 168.60 Esxi主机如何分配内存 主机将由 Limit参数指定的内存分配给每个虚拟机,除非內存过载。ESⅪi向虚拟机分配的内存决不会超过 指定的物理内存大小 例如,1GB虚拟机可能具有默认的限制(无限)或用户指定的限制(例如2GB)。在这两种情况下,ESXi 主机分配的内存决不会超过1GB,即不会超过为其指定的物理内存大小。 当内存过载时,向每个虚拟机分配的内存量介于预留和限制指定的内存量之间。授予虚拟机的高于预留量的 内存量会因当前的内存负载而异。 主机根据分配给虚拟机的份额数和对最近工作集大小的估计,确定每个虚拟机的分配量 份额一ESXi主机使用经过修改的按比例份额内存分配策略。内存份额给予虚拟机一部分可用物理内存。 工作集大小一ESX主机通过在连续的虚拟机执行时间周期监控内存活动,来估计工作集。采用快速响 应工作集大小增加且慢速响应工作集大小减小的技术,在几个时间周期内进行平稳估计 VMware,lc保留所有权利
n 超出向每个虚拟机分配的内存后,ESXi 主机自身代码和数据结构所需的额外空间。 ESXi 内存虚拟化向内存访问添加很少的时间开销。因为处理器分页硬件直接使用页表(基于软件的卷影页 表方法或硬件辅助的两级页表方法),所以虚拟机中的大多数内存访问在执行时没有地址转换开销。 内存空间开销有两部分: n VMkernel 系统范围内的固定开销。 n 每个虚拟机的额外开销。 开销内存包括为虚拟机框架缓冲区和各种虚拟化数据结构(如卷影页表)预留的空间。开销内存取决于虚拟 CPU 数量以及为客户机操作系统配置的内存。 虚拟机上的开销内存 要打开虚拟机电源,需要一定数量的可用开销内存。您应当了解此开销量。 下表列出了打开虚拟机电源所需的开销内存量。当虚拟机开始运行之后,该虚拟机所使用的开销内存量可能 不同于表中列出的数量。通过启用虚拟机的 VMX 交换功能以及启用硬件 MMU 来收集示例值。(默认情况 下启用 VMX 交换功能。) 注 下表提供的是开销内存值的示例,并不尝试提供有关所有可能的配置的信息。您可以将虚拟机配置为最 多包含 64 个虚拟 CPU,具体取决于主机上许可的 CPU 数、客户机操作系统支持的 CPU 数。 表 6‑1. 虚拟机上的示例开销内存 内存 (MB) 1 个 VCPU 2 个 VCPU 4 个 VCPU 8 个 VCPU 256 20.29 24.28 32.23 48.16 1024 25.90 29.91 37.86 53.82 4096 48.64 52.72 60.67 76.78 16384 139.62 143.98 151.93 168.60 ESXi 主机如何分配内存 主机将由 Limit 参数指定的内存分配给每个虚拟机,除非内存过载。ESXi 向虚拟机分配的内存决不会超过 指定的物理内存大小。 例如,1 GB 虚拟机可能具有默认的限制(无限)或用户指定的限制(例如 2 GB)。在这两种情况下,ESXi 主机分配的内存决不会超过 1 GB,即不会超过为其指定的物理内存大小。 当内存过载时,向每个虚拟机分配的内存量介于预留和限制指定的内存量之间。授予虚拟机的高于预留量的 内存量会因当前的内存负载而异。 主机根据分配给虚拟机的份额数和对最近工作集大小的估计,确定每个虚拟机的分配量。 n 份额 — ESXi 主机使用经过修改的按比例份额内存分配策略。内存份额给予虚拟机一部分可用物理内存。 n 工作集大小 — ESXi 主机通过在连续的虚拟机执行时间周期监控内存活动,来估计工作集。采用快速响 应工作集大小增加且慢速响应工作集大小减小的技术,在几个时间周期内进行平稳估计。 《vSphere 资源管理》 VMware, Inc. 保留所有权利。 30