动态内存
动态内存
动态内存(动态模拟 Memory)是一种计算机内存管理技术,允许用户在虚拟操作系统启动时指定所需的随机存取存储器(RAM)容量,并最大限度地利用平台可用的系统内存。
定义
动态内存是Integrity VM的一项可选功能,通过它可以调整虚拟机使用的物理内存量,无需重新引导虚拟机。在Integrity VM的特定版本中,动态内存仅适用于运行HP-UX的虚拟机。这一功能使得Serviceguard节点等虚拟机能够在多个Serviceguard程序包中充当备用服务器。当程序包发生故障转移时,可以在故障转移前、转移中或转移后调整虚拟机的内存,以适应程序包的需求。为了使用动态内存,虚拟机必须安装虚拟机管理软件。
配置动态内存
默认情况下,动态内存并未启用。若要配置虚拟机以使用动态内存,可以通过hpvmcreate、hpvmmodify或hpvmclone命令进行设置。其中-x选项用于设置初始值。此外,还可以在引导过程的早期阶段配置虚拟机,以减少其内存大小,从而在VM Host系统上保持可用性并降低内存开销。为此,可以使用-x选项启用相关功能。在同一命令行上可以提供多个动态内存关键字。例如,要启用动态内存并将名为compass1的虚拟机配置为在引导进程中减少其大小,可以输入以下命令:
查看动态内存
可以使用Integrity VM的标准命令,为每个虚拟机显示动态内存参数和状态。例如,对于名为compass1的虚拟机,可以使用hpvmstatus命令显示以下动态内存信息:
管理动态内存
默认情况下,从虚拟机管理动态内存的功能处于关闭状态,必须通过VM Host启用。如果没有启用此功能,虽然可以显示动态内存信息,但无法更改内存大小。可以使用hpvmcreate、hpvmmodify或hpvmclone命令,并包含-x 动态模拟_memory_control选项。指定1作为该选项的参数。例如,在VM Host系统中,可以输入以下命令在名为compass1的虚拟机上启用动态内存控件:
故障排除
动态内存限制
使用动态内存有一些限制条件。虚拟机的大小不能超过其初始引导大小。如果虚拟机内存已经碎片化,尝试减少虚拟机大小可能会失败或需要较长时间。增加虚拟机大小需要VM Host上有足够的可用内存。如果VM Host内存不足,该操作可能需要较长时间,并可能失败。如果ram_target和ram_dyn_target_start的值不在ram_dyn_min和ram_dyn_max值之间,将会收到一条警告。
VM Host资源注意事项
HP-UX支持“大型页面”内存管理功能,可用于提高性能。Integrity VM可以通过确保在虚拟机启动时分配容量最大的可用页面来实现此功能。一旦分配并锁定这些页面之后,将无法更改其大小。此限制可使大型页面的碎片降至最低。该功能会限制可在VM Host系统上运行的软件类型。如果VM Host系统支持虚拟机以外的其他工作负荷,则大型页面可能会产生碎片,并可能导致新启动的虚拟机性能降低。动态内存增加了VM Host内存产生碎片的可能性。动态内存的当前实现方式可释放向虚拟机分配的内存部分。必须以大型连续块为单位执行这些操作;否则,减少虚拟机大小会使为该虚拟机分配的VM Host内存产生碎片。可通过软件防止产生此潜在碎片,即以物理连续内存的最小块大小64 MB的倍数为单位减少虚拟机大小。
Guest虚拟机资源注意事项
运行某一工作负荷的系统正常运行期间,大型页面可能会逐渐产生碎片。VM Host和运行HP-UX操作系统的虚拟机都会出现这种情况。如果虚拟机内存产生碎片,动态内存子系统将无法减少guest虚拟机的大小。这是因为此减少大小的操作使用最小块大小。如果动态内存无法删除至少64 MB的物理连续guest虚拟机内存,则不会减少大小。指定足够的Guest虚拟机内存如果将ram_dyn_target_start的值设置得过小,则guest虚拟机操作系统可能会在引导时挂起或崩溃。此种情况下,guest虚拟机无法访问足够的内存量。通常,降低分配给HP-UX guest虚拟机的内存时降幅不能超过其分配的内存大小的75%。对于配置了2 GB内存的虚拟机,其内存降低幅度不能超过50%。如果guest虚拟机在引导时崩溃,请在VM Host上使用hpvmmodify命令增大ram_dyn_target_start参数的值。例如,要增加名为compass1的guest虚拟机的内存大小,请在VM Host上输入以下命令:
设置该参数之后,请重新引导该guest虚拟机。如果guest虚拟机挂起,请在VM Host上使用hpvmstatus命令查看guest虚拟机上的内存统计信息。例如:
该问题的一个指示为可用内存量过小或为零,并且内存压力值较大(100)。如果出现这些指示,请在VM Host上使用hpvmmodify命令增加guest虚拟机的内存大小。然后,按正常方式引导该guest虚拟机。实际内存分配可能不相同如果指定的ram_target或ram_dyn_target_start参数的值所更改的内存大小不是64 MB的倍数,则会重置目标值。例如,如果指定6 GB的内存,HP-UX guest虚拟机实际可访问6135 MB的内存。如果尝试将内存大小设置为2048 MB,则实际删除的内存大小为4087 MB。由于它不是64 MB的倍数,因此会将目标内存大小重置为2103 MB。在Guest虚拟机和VM Host上启用动态内存在VM Host系统中使用动态内存参数之前,必须在guest虚拟机上安装guest虚拟机管理软件。例如,如果未安装guest虚拟机管理软件,hpvmstatus命令将显示以下内容:
如果尝试从VM Host修改guest虚拟机的动态内存,则会显示下列错误:
如果尝试从guest虚拟机修改动态内存,则会显示下列错误:
在升级Integrity VM时升级Guest虚拟机工具包动态内存软件包含两个组件:VM Host支持和HP-UX guest虚拟机支持。要使动态内存正常运行,以上两个组件的版本级别必须相同。升级Integrity VM时,还必须在guest虚拟机上安装新的guest虚拟机工具包(如果不再支持guest虚拟机操作系统,则应同时升级该操作系统)。在此升级过程中,动态内存可能无法运行。如果版本不匹配,启动guest虚拟机时会向VM Host的syslog文件(/var/adm/syslog/syslog.log)写入一条消息。例如:
此示例表明编号为5的虚拟机上的guest虚拟机管理软件工具包已过期。要确定编号为5的虚拟机,请使用hpvmstatus命令。在以下示例中,guest虚拟机5名为dale:
参考资料
目录
概述
定义
配置动态内存
查看动态内存
管理动态内存
故障排除
动态内存限制
VM Host资源注意事项
Guest虚拟机资源注意事项
参考资料