Oracle® VM Server for SPARC 3.3 管理指南

退出打印视图

更新时间: 2015 年 10 月
 
 

使用内存动态重新配置

内存动态重新配置 (Memory Dynamic Reconfiguration, DR) 基于容量,通过此功能您可以在活动的逻辑域中添加或删除任意数量的内存。

    使用内存 DR 功能的要求和限制如下:

  • 您可以在任意域上执行内存 DR 操作。但是,给定时间内在一个域上只能执行一个内存 DR 操作。

  • 内存 DR 功能可对给定操作中涉及的内存的地址和大小强制执行 256 MB 对齐。请参见内存对齐

  • 不能使用内存 DR 功能向域中分配空闲内存池中的未对齐内存。请参见添加未对齐的内存

如果使用内存 DR 操作无法重新配置域的内存,则必须停止域才能重新配置内存。如果域是控制域,则必须先启动延迟重新配置。

在某些情况下,Logical Domains Manager 会将所请求的内存分配舍入到下一个为 8 KB 或 4 MB 倍数的最大内存量。以下示例显示了 ldm list-domain -l 命令的示例输出,其中的约束值小于实际分配的大小:

Memory:
          Constraints: 1965 M
          raddr          paddr5          size
          0x1000000      0x291000000     1968M

添加内存

如果域处于活动状态,可以使用 ldm add-memory 命令向域动态添加内存。如果指定内存大小大于域的当前内存大小,也可以使用 ldm set-memory 命令动态添加内存。

删除内存

如果域处于活动状态,可以使用 ldm remove-memory 命令从域中动态删除内存。如果指定内存大小小于域的当前内存大小,也可以使用 ldm set-memory 命令动态删除内存。

内存删除操作可能要运行很长时间。通过对指定域运行 ldm list -l 命令,可以跟踪 ldm remove-memory 命令的进度。

通过中断 ldm remove-memory 命令(按 Ctrl-C)或发出 ldm cancel-operation memdr 命令,可以取消正在进行的删除请求。如果取消内存删除请求,则只会影响该删除请求中的未处理部分,即,仍有待从域中删除的内存量。

部分内存 DR 请求

可能只能部分完成在域中动态添加或删除内存的请求。此结果分别取决于要添加或删除的适用内存的可用性。


注 - 从域中删除内存后,在将其添加到其他域之前,会先进行清除。

重新配置控制域内存

您可以使用内存 DR 功能重新配置控制域的内存。如果无法在控制域上执行内存 DR 请求,则必须先启动延迟重新配置。

从活动域中删除大量内存时可能不适合使用内存 DR,因为内存 DR 操作可能要运行很长时间。特别要指出的是,在系统初始配置期间,应使用延迟重新配置来减少控制域中的内存。

减少控制域的内存

使用延迟重新配置而不是内存 DR 从默认出厂初始配置中减少控制域的内存。在该默认配置中,控制域拥有主机系统的所有内存。之所以不太适合使用内存 DR 功能来实现此目的,是因为并不保证活动域能够添加(或者更典型的情况下能够放弃)所有请求的内存。当然,该域中运行的 OS 会尽最大可能来完成请求。另外,内存删除操作可能要运行很长时间。涉及到大量内存操作时这些问题会扩大化,正如初始减少控制域内存的情况。

因此,请按照以下步骤使用延迟重新配置:

  1. 使用 ldm start-reconf primary 命令将控制域置于延迟重新配置模式下。

  2. 根据需要对控制域拥有的主机系统资源进行分区。

  3. 如果需要,使用 ldm cancel-reconf 命令撤消步骤 2 中的操作,重新从头开始。

  4. 重新引导控制域以使重新配置更改生效。

动态重新配置和延迟重新配置

如果控制域中存在暂挂的延迟重新配置,系统将拒绝任何其他域的内存重新配置请求。如果控制域中不存在暂挂的延迟重新配置,系统将拒绝任何不支持内存 DR 的域的内存重新配置请求。对于这些域,该请求将转换为延迟重新配置请求。

内存对齐

内存重新配置请求具有不同的对齐要求,具体取决于将应用请求的域的状态。

活动域的内存对齐

  • 动态添加和删除。内存块的地址和大小为对齐的 256 MB,以用于进行动态添加和动态删除。最小操作大小为 256 MB。

    将拒绝大于绑定大小的未对齐请求或删除请求。

      使用以下命令调整内存分配:

    • ldm add-memory如果在此命令中指定 –-auto-adj 选项,则要添加的内存量为对齐的 256 MB,这可能会增加实际添加到域的内存量。

    • ldm remove-memory如果在此命令中指定 –-auto-adj 选项,则要删除的内存量为对齐的 256 MB,这可能会减少实际从域中删除的内存量。

    • ldm set-memory可将此命令视为添加或删除操作。如果指定 –-auto-adj 选项,则要添加或删除的内存量为对齐的 256 MB,如上所述。请注意,此对齐可能会增大域的最终内存大小。

  • 延迟重新配置。内存块的地址和大小为对齐的 4 MB。如果发出的未对齐的请求,系统会将该请求舍入为对齐的 4 MB。

绑定域的内存对齐

绑定域的内存块的地址和大小为对齐的 4 MB。如果发出的未对齐的请求,系统会将该请求舍入为对齐的 4 MB。因此,所得到的域内存大小可能会超过您指定的大小。

对于 ldm add-memoryldm set-memoryldm remove-memory 命令,–-auto-adj 选项会将最终内存的大小舍入为对齐的 256 MB。因此,所得到的内存可能会超过您指定的大小。

非活动域的内存对齐

对于 ldm add-memoryldm set-memoryldm remove-memory 命令,–-auto-adj 选项会将最终内存的大小舍入为对齐的 256 MB。不存在对非活动域的对齐要求。绑定域的内存对齐中所述的限制在绑定非活动域后生效。

添加未对齐的内存

内存 DR 功能对动态添加到活动域或从活动域中删除的内存的地址和大小强制执行 256 MB 内存对齐。因此,不能使用内存 DR 删除活动域中的任何未对齐内存。

此外,也不能使用内存 DR 向活动域中添加空闲内存池中的任何未对齐内存。

在所有对齐的内存都已分配后,可以使用 ldm add-memory 命令将剩余的未对齐内存添加到绑定域或非活动域。还可以使用此命令借助延迟重新配置操作将剩余的未对齐内存添加到控制域。

以下示例说明如何将两个剩余的 128 MB 内存块添加到 primaryldom1 域中。ldom1 域处于绑定状态。

以下命令可在控制域上启动延迟重新配置操作。

primary# ldm start-reconf primary
Initiating a delayed reconfiguration operation on the primary domain.
All configuration changes for other domains are disabled until the
primary domain reboots, at which time the new configuration for the
primary domain also takes effect.

以下命令可向控制域中添加一个 128 MB 内存块。

primary# ldm add-memory 128M primary
------------------------------------------------------------------------------
Notice: The primary domain is in the process of a delayed reconfiguration.
Any changes made to the primary domain will only take effect after it reboots.
------------------------------------------------------------------------------

primary# ldm list
NAME             STATE      FLAGS   CONS    VCPU  MEMORY   UTIL  UPTIME
primary          active     -ndcv-  SP      8     2688M    0.1%  23d 8h 8m

primary# ldm list
NAME             STATE      FLAGS   CONS    VCPU  MEMORY   UTIL  UPTIME
primary          active     -n-cv-  SP      8     2560M    0.5%  23d 8h 9m
ldom1            bound      ------  5000    1     524M

以下命令可向 ldom1 域添加另外的 128 MB 内存块。

primary# ldm add-mem 128M ldom1
primary# ldm list
NAME             STATE      FLAGS   CONS    VCPU  MEMORY   UTIL  UPTIME
primary          active     -n-cv-  SP      8     2560M    0.1%  23d 8h 9m
ldom1            bound      ------  5000    1     652M

内存 DR 示例

以下示例说明如何执行内存 DR 操作。有关相关 CLI 命令的信息,请参见 ldm(1M) 手册页。

示例 14-7  活动域上的内存 DR 操作

本示例说明如何动态向活动域 ldom1 添加内存和从中删除内存。

ldm list 的输出显示了 Memory (内存) 字段中各个域的内存。

primary# ldm list
NAME             STATE      FLAGS   CONS    VCPU  MEMORY   UTIL  UPTIME
primary          active     -n-cv-  SP      4     27392M   0.4%  1d 22h 53m
ldom1            active     -n----  5000    2     2G       0.4%  1d 1h 23m
ldom2            bound      ------  5001    2     200M

以下 ldm add-mem 命令将退出并显示错误,因为您必须将内存指定为 256 MB 的倍数。下一个 ldm add-mem 命令使用 –-auto-adj 选项,这样,即使您将 200M 指定为要添加的内存量,系统也会将内存量舍入为 256 MB。

primary# ldm add-mem 200M ldom1
The size of memory must be a multiple of 256MB.

primary# ldm add-mem --auto-adj 200M ldom1
Adjusting request size to 256M.
The ldom1 domain has been allocated 56M more memory
than requested because of memory alignment constraints.

primary# ldm list
NAME            STATE   FLAGS   CONS    VCPU    MEMORY  UTIL    UPTIME
primary         active  -n-cv-  SP      4       27392M  5.0%    8m
ldom1           active  -n----  5000    2       2304M   0.5%    1m
ldom2           bound   ------  5001    2       200M

ldm rm-mem 命令将退出并显示错误,因为您必须将内存指定为 256 MB 的倍数。将 –-auto-adj 选项添加到同一命令后,内存删除将成功,因为内存量会向下舍入到邻近的 256 MB 边界。

primary# ldm rm-mem --auto-adj 300M ldom1
Adjusting requested size to 256M.
The ldom1 domain has been allocated 44M more memory
than requested because of memory alignment constraints.

primary# ldm list
NAME            STATE   FLAGS   CONS    VCPU    MEMORY  UTIL    UPTIME
primary         active  -n-cv-  SP      4       27392M  0.3%    8m
ldom1           active  -n----  5000    2       2G      0.2%    2m
ldom2           bound   ------  5001    2       200M
示例 14-8  绑定域上的内存 DR 操作

本示例说明如何向绑定域 ldom2 添加内存和从中删除内存。

ldm list 的输出显示了 Memory (内存) 字段中各个域的内存。第一个 ldm add-mem 命令可向 ldom2 域中添加 100 MB 的内存。下一个 ldm add-mem 命令中指定了 –-auto-adj 选项,这可导致将额外的 112 MB 内存动态添加到 ldom2 中。

ldm rm-mem 命令可从 ldom2 域中动态删除 100 MB 的内存。如果在同一命令中指定 –-auto-adj 选项以删除 300 MB 内存,内存量将向下舍入到邻近的 256 MB 边界。

primary# ldm list
NAME             STATE      FLAGS   CONS    VCPU  MEMORY   UTIL  UPTIME
primary          active     -n-cv-  SP      4     27392M   0.4%  1d 22h 53m
ldom1            active     -n----  5000    2     2G       0.4%  1d 1h 23m
ldom2            bound      ------  5001    2     200M          

primary# ldm add-mem 100M ldom2

primary# ldm list
NAME             STATE      FLAGS   CONS    VCPU  MEMORY   UTIL  UPTIME
primary          active     -n-cv-  SP      4     27392M   0.5%  1d 22h 54m
ldom1            active     -n----  5000    2     2G       0.2%  1d 1h 25m
ldom2            bound      ------  5001    2     300M       

primary# ldm add-mem --auto-adj 100M ldom2
Adjusting request size to 256M.
The ldom2 domain has been allocated 112M more memory
than requested because of memory alignment constraints.

primary# ldm list
NAME             STATE      FLAGS   CONS    VCPU  MEMORY   UTIL  UPTIME
primary          active     -n-cv-  SP      4     27392M   0.4%  1d 22h 55m
ldom1            active     -n----  5000    2     2G       0.5%  1d 1h 25m
ldom2            bound      ------  5001    2     512M          

primary# ldm rm-mem 100M ldom2
primary# ldm list
NAME             STATE      FLAGS   CONS    VCPU  MEMORY   UTIL  UPTIME
primary          active     -n-cv-  SP      4     27392M   3.3%  1d 22h 55m
ldom1            active     -n----  5000    2     2G       0.2%  1d 1h 25m
ldom2            bound      ------  5001    2     412M          

primary# ldm rm-mem --auto-adj 300M ldom2
Adjusting request size to 256M.
The ldom2 domain has been allocated 144M more memory
than requested because of memory alignment constraints.

primary# ldm list
NAME             STATE      FLAGS   CONS    VCPU  MEMORY   UTIL  UPTIME
primary          active     -n-cv-  SP      4     27392M   0.5%  1d 22h 55m
ldom1            active     -n----  5000    2     2G       0.2%  1d 1h 26m
ldom2            bound      ------  5001    2     256M
示例 14-9  设置域内存大小

本示例说明如何使用 ldm set-memory 命令向域中添加内存和从中删除内存。

ldm list 的输出显示了 Memory (内存) 字段中各个域的内存。

primary# ldm list
NAME             STATE      FLAGS   CONS    VCPU  MEMORY   UTIL  UPTIME
primary          active     -n-cv-  SP      4     27392M   0.5%  1d 22h 55m
ldom1            active     -n----  5000    2     2G       0.2%  1d 1h 26m
ldom2            bound      ------  5001    2     256M

以下 ldm set-mem 命令会尝试将 primary 域的大小设置为 3400 MB。最终错误表明指定的值不在 256 MB 边界上。将 –-auto-adj 选项添加到同一命令后,可以成功删除某些内存并保持在 256 MB 边界上。此命令还会发出警告,以指出并非所有请求的内存都可以删除,因为域可能正在使用某些内存。

primary# ldm set-mem 3400M primary
An ldm set-mem 3400M command would remove 23992MB, which is not a multiple
of 256MB. Instead, run ldm rm-mem 23808MB to ensure a 256MB alignment.

primary# ldm set-mem --auto-adj 3400M primary
Adjusting request size to 3.4G.
The primary domain has been allocated 184M more memory
than requested because of memory alignment constraints.
Only 9472M of memory could be removed from the primary domain
because the rest of the memory is in use.

下一个 ldm set-mem 命令会将处于绑定状态的 ldom2 域的内存大小设置为 690 MB。如果向同一命令中添加 –-auto-adj 选项,将动态向 ldom2 中添加额外的 78 MB 内存以保持在 256 MB 边界上。

primary# ldm set-mem 690M ldom2
primary# ldm list
NAME             STATE      FLAGS   CONS    VCPU  MEMORY   UTIL  UPTIME
primary          active     -n-cv-  SP      4     17920M   0.5%  1d 22h 56m
ldom1            active     -n----  5000    2     2G       0.6%  1d 1h 27m
ldom2            bound      ------  5001    2     690M          

primary# ldm set-mem --auto-adj 690M ldom2
Adjusting request size to 256M.
The ldom2 domain has been allocated 78M more memory
than requested because of memory alignment constraints.

primary# ldm list
NAME             STATE      FLAGS   CONS    VCPU  MEMORY   UTIL  UPTIME
primary          active     -n-cv-  SP      4     17920M   2.1%  1d 22h 57m
ldom1            active     -n----  5000    2     2G       0.2%  1d 1h 27m
ldom2            bound      ------  5001    2     768M