动态内存控制 (DMC)

XenServer DMC(有时称为“动态内存优化”、“内存过载”或“内存膨胀”)的工作原理是:自动调整正在运行的 VM 的内存,使分配给每个 VM 的内存量保持在指定的最小内存值与最大内存值之间,确保性能并允许每台服务器具有更大的 VM 密度。

如果不启用 DMC,则当服务器满载时,启动更多 VM 会因“内存不足”错误而失败。要减少现有 VM 内存分配,为更多 VM 释放空间,您必须编辑每个 VM 的内存分配,然后重新启动 VM。启用 DMC 之后,即使在服务器满载时,XenServer 仍能通过在 VM 定义的内存范围内自动减少正在运行的 VM 的当前内存分配来尝试回收内存。

动态和静态内存范围

对于每个 VM,可以设置一个 动态内存范围 ,在此范围内,可以添加/删除 VM 的内存而无需重新启动 VM。可以在 VM 运行期间调整动态范围,而无需重新启动 VM。XenServer 始终保证为 VM 分配的内存量保持在动态范围内。例如,如果最小动态内存设置为 512 MB,最大动态内存设置为 1024 MB,则 VM 的动态内存范围 (DMR) 将为 512 - 1024 MB,在此范围内,VM 将正常运行。通过 DMC,XenServer 可确保始终在每个 VM 的指定 DMR 内为其分配内存。

如果主机服务器的内存充足,所有运行中的 VM 将获得最大动态内存级别;如果主机的内存不足,所有运行中的 VM 将获得最小动态内存级别。如果需要在“满载”的服务器上启动新 VM,则正在运行的 VM 会为新 VM 的启动“腾出”自己的内存。获得所需额外内存的方法是:在现有运行中 VM 的预定义动态范围内按比例腾出内存。

XenServer 支持的许多操作系统不完全支持动态添加或删除内存。因此,XenServer 必须在 VM 引导时声明 VM 需要占用的最大内存量,以允许来宾操作系统相应调整其页表和其他内存管理结构的大小。这在 XenServer 中引入了 静态内存范围 的概念。在 VM 运行期间无法调整静态内存范围,在下次重新启动 VM 前,动态范围始终限定在静态内存范围内。请注意,最小静态内存(静态范围的下限)用于保护管理员,设置为操作系统可以在 XenServer 上运行时占用的最少内存量。

重要: 静态最低级别设置为每个操作系统支持的级别,因此 Citrix 建议您不要对其进行更改。有关详细信息,请参阅《 XenServer 管理员指南 》。请将最大静态内存设置为高于最大动态内存,这样设置后,当您以后需要为 VM 分配更多内存时,无需重新启动即可进行分配。

DMC 内存限制

设置 DMC 值时,XenCenter 强制实施以下限制:

  • 最小动态内存值不能低于最小静态内存值。
  • 最小动态内存值不能高于最大动态内存值。
  • 最大动态内存值不能高于最大静态内存值。

可以将 VM 的内存属性更改为满足这些限制条件(需经过验证检查)的任何值。除了这些限制外,对于特定操作系统,Citrix 仅支持某些 VM 内存配置。详细信息在《 XenServer 管理员指南 》中介绍。

动态内存控制 (DMC)