PowerVM 新特性 - Active Memory Sharing: 第 2 部分:详细架构
2009-09-06 00:00:00 来源:WEB开发网专用与共享内存模型
本节描述目前支持的两种内存模型的主要特征。
专用内存模型
在专用内存模型中,物理内存被分布到各个分区之间,一些内存专供管理程序用来维护内部数据结构。任何剩余内存都包含在空闲池中,如图 1 所示。专用内存分区上的动态逻辑分区 (DLPAR) 操作用于在分区之间或分区与空闲内存之间移动内存。
图 1.专用内存模型
当定义一个分区时,需要指定最小、期望和最大内存。最小内存值表示激活分区所需的最小内存量。最大值表示可动态分配给该分区的最大逻辑内存量。期望内存是将分配给该分区的内存量(如果可用)。它介于最小与最大内存之间。
配置的内存与专用内存分区中的物理内存相同。为分区分配的内存大于或等于在分区定义中指定的最小值,小于或等于在分区定义中指定的期望值,具体取决于系统中可用的物理内存量。
可以通过一个动态 LPAR 操作更改分配给专用内存分区的内存。
共享内存模型
在共享内存模型中,LPAR 共享来自单一池的内存,并且 LPAR 的配置内存将变为逻辑内存。
共享内存池是实际物理内存的一部分,管理程序将这一部分内存虚拟化,以将物理内存分配给共享内存分区和管理程序,如图 2 所示。
可通过以下方式更改共享内存池的大小:
从空闲池添加内存
缩减和移动(重新分配)专用内存分区的内存
图 2.共享内存模型
定义共享内存分区时,也需要指定该分区的最小、期望和最大逻辑内存。除了这些值,还可以通过编辑分区配置文件来更改共享内存权重。内存权重是管理程序决定哪个分区接收物理内存时的一个考虑因素。
HMC 或 IVM 根据 I/O 配置计算 I/O 授权内存。I/O 授权内存是保证可用于 I/O 映射的最大物理内存量。
重要:
您可以使用动态 LPAR 操作更改 I/O 授权内存。
通常情况下,您不需要更改此值,除非监控工具报告了过量 I/O 映射失败操作。
如果共享池中没有足够的物理内存来满足该分区的 I/O 配置所需要的 I/O 授权内存,那么共享内存分区的激活将会失败。
Active Memory Sharing 技术细节
Active Memory Sharing 支持选定的 LPAR 共享单一物理内存池中的内存。这项新功能受由管理程序管理的新的抽象层次支持。
重要:LPAR 的已配置内存(最小、期望和最大)会变为 Active Memory Sharing 环境中的逻辑内存。
图 3 给出了 Active Memory Sharing 所涉及的组件,这些组件将在本文后面几节中描述。
图 3.Active Memory Sharing 架构
Active Memory Sharing 类似于传统的基于操作系统页面的虚拟内存支持,后者为进程提供划分为页面的虚拟地址空间。这些虚拟内存页面被映射到物理内存(页面帧)或映射到磁盘上的存储块。
Active Memory Sharing 提供了相同的功能,但是对于 Active Memory Sharing,虚拟地址空间是 LPAR 的逻辑内存。通过 Active Memory Sharing,LPAR 逻辑内存被划分为虚拟内存页面,管理程序负责将这些虚拟内存页面映射到物理内存中或映射到磁盘。
注意:实际的物理内存是共享内存池的一部分,管理程序将这一部分内存虚拟化,以将资源分配给共享内存分区。因此,不会将内存显式绑定到处理器(内存相关性)。而且,也不会将物理内存绑定到 LPAR 在 Active Memory Sharing 环境中的逻辑内存。
对于 Active Memory Sharing,操作系统帮助管理程序处理以下请求:
借出内存页面
窃取长时间存在的页面
将页面内容保存到一个本地分页设备中,将其释放或借给管理程序。
这些协助操作是通过操作系统中新的内存借出功能来实现的。支持操作系统将老化的页面内容分页出去,并将它们租借给管理程序,用于扩展另一个共享内存分区的物理内存。这样做是因为操作系统能够更好地决定与可用内存相关的工作集。
这种按需内存分配功能使具有各种内存需求的工作负载能够分时共享一个综合环境中的相同内存,从而改善内存利用,如图 4 和图 5 所示。
图 4.具有专用内存的分区
图 4 显示了 3 个分区,每个分区都配置了专用内存,总内存量为 20 GB。一些分区使用的内存比为其分配的要少,因此这些内存无法用于创建另一个分区。
图 5 显示了 4 个分区,它们的内存配置方式与图 4 中的分区类似,但是这 4 个分区能够共享内存,进而改善了内存利用。在这种情况下,可以将相同的内存量供应给额外的分区。
图 5.具有共享内存的分区
系统中所有共享内存分区的逻辑内存综合可以大于系统中分配给共享内存池的实际物理内存。这样做的意图是允许系统上内存敏感的共享内存分区使用当前未被其他共享内存分区使用的物理内存分区。为此,每个共享内存分区都可以认为自己拥有更多内存,从而使总逻辑内存要大得多。
Active Memory Sharing 组件
本节介绍支持 Active Memory Sharing 所需的组件。
虚拟化控制点
虚拟化控制点(Virtualization Control Point)为 Active Memory Sharing 功能提供了管理员界面,并与 Active Memory Sharing 环境中的管理界面通信。
注意:在编写本文时,可用的虚拟化控制点是硬件管理控制台(Hardware Management Console,HMC)和集成虚拟化管理器(Integrated Virtualization Manager,IVM)。
通过一个用户界面,您可以配置和管理一个共享内存池,并配置分区来使用该池的内存资源。
图 6 显示了一个 HMC 环境中的用户界面的内存池管理部分。
图 6.HMC 内存池管理面板
共享内存池
共享内存池是一个经过配置的物理内存集合,由 Active Memory Sharing 管理器(Active Memory Sharing Manager)管理。系统管理员确定分配给共享池的物理内存量,这些内存以多个逻辑内存块(Logical Memory Block,LMB)的形式存在。共享内存池必须在创建共享内存分区之前创建。
HMC 或 IVM 用户界面指导用户设置期望的和最大的共享内存池大小、分页虚拟 I/O 服务器(Paging Virtual I/O Server)以及共享内存池的分页设备。
系统管理员必须根据将同时在池中运行的共享内存分区数量及其工作负载特征来选择共享内存池大小。系统管理员还要选择分配给一个共享内存池的分页设备数量。
注意:在由 HMC 和 IVM 管理的系统中,管理员可以动态更改共享内存池大小和分配给共享内存池的分页设备。
Active Memory Sharing 管理器
Active Memory Sharing 管理器(Active Memory Sharing Manager,AMSM)是一个管理程序组件,它管理共享内存池和与共享内存池相关联的分区的内存。AMSM 分配的物理内存块包含共享内存池。
AMSM 使用管理程序分页来尝试使所有分区工作集(当前工作负载所需的页面)驻留在一个过度受限系统的共享内存池中。如果操作系统中可以使用一个协作内存管理器(Collaborative Memory Manager,一种提供关于内存页面使用情况的线索的 OS 特性),该管理器可以与 AMSM 合作释放被请求的分区页面。
Active Memory Sharing 管理器还会维持共享内存池中的一个空闲物理页面列表,这些物理页面被按需分配给与共享内存池相关联的共享内存分区。当发生页面错误时,AMSM 分配一个空闲页面来处理该页面错误。这一过程会持续到 AMSM 的空闲列表达到一个较低的水平。在这时,Active Memory Sharing 管理器通过页面偷窃功能获取其他分区的内存,获取内存基于以下因素:
分区的共享内存权重
分区的页面使用状态
分区的页面使用统计信息
当一个分区需要一个内存页面来执行 I/O 操作(I/O 映射页面)时,Active Memory Sharing 管理器始终从分区的授权内存容量中分配物理内存页面。
注意:在必要时,Active Memory Sharing 管理器会在将所偷窃页面分配给其他分区之前对其内容进行清零,以保证这些页面的内容不可被任何其他分区读取。
分页虚拟 I/O 服务器
分页虚拟 I/O 服务器是为一个共享内存池提供分页服务的一个分区,它还管理与一个共享内存池相关联的共享内存分区的分页空间。
注意:在编写本文时,作为分页虚拟 I/O 服务器启用的虚拟 I/O 服务器专门服务于一个共享内存池。而且,无法向共享内存池分配多个分页虚拟 I/O 服务器来为共享内存分区服务。
在由 HMC 管理的系统中,HMC 提供了一个用户界面来启用用于 Active Memory Sharing 分页服务的虚拟 I/O 服务器。可以动态地启用虚拟 I/O 服务器分区来提供活动内存分区服务。在由 IVM 管理的系统中,始终会为分页服务启用承载 Active Memory Sharing 服务的虚拟 I/O 服务器。
注意:一次可以与共享内存池关联的功能共享内存分区数为 128 个(在编写本文时)。
HMC 还提供了一个用户界面来禁用虚拟 I/O 分区上的 Active Memory Sharing 分页服务。可以禁用一个虚拟 I/O 服务器上的 Active Memory Sharing 分页服务,只要它不是当前分配给共享内存池的分页虚拟 I/O 服务器。
在由 HMC 管理的系统中,用户可以分配至多两个分页 VIOS 分区给一个共享内存池,以提供对分页设备的访问。这种冗余分页 VIOS 配置改善了共享内存分区的可用性,比如在用于维护用途的计划 VIOS 宕机事件中。
关于为共享内存池配置冗余分页 VIOS 分区的其他信息可以在 LPAR 配置指南中找到。
分页设备
Active Memory Sharing 支持通过按需分配内存来在多个 LPAR 中进行动态内存管理。结果,管理程序必须使用一个分页设备来备份无法使用物理内存备份的过量内存。
操作系统分页
在专用的内存环境中,如果根据峰值需求来设置内存,那么很少需要进行 AIX 分页设备调优和优化,这为工作集提供了足够的内存。这也避免了分页。
使用 IBM i,操作系统分页与 AIX 不同,这是因为前者使用了单一级别的存储架构。您还需要使用 IBM i 调整峰值内存大小,但是如果发生了操作系统分页,则不会对指定分页设备执行该分页操作。单一级别的存储允许将分页等磁盘操作延伸到存储池中的所有磁盘。
通常,AIX 主引导磁盘的默认分页设备已足够正常的分页活动使用,配置所需的空间比分配给分区的内存小得多。IBM i 在某种意义上与此类似,只要内存经过了适当调整,分页活动通常不会出现问题。
操作系统分页主要在 Active Memory Sharing 中用于将页面从当前工作集租借给管理程序。因此,如果未启用租借功能,则无需优化 OS 分页设备。
重要:在 Active Memory Sharing 环境中,操作系统分页设备性能发挥着举足轻重的作用。分页操作也有两种级别:分区的操作系统分页和管理程序分页。
管理程序分页设备
Active Memory Sharing 管理程序使用分页设备来管理所有共享内存分区上的内存。如果未启用租借功能(该功能只能在 AIX 中启用),管理程序会首先使用分页设备来将物理页面的内容分页出去,然后才将其分配给其他共享内存分区。当地一个共享内存分区接触到已将内容分页出去的逻辑页面时,管理程序会找到一个空闲页面并向其中填充内容,以解决第一个共享内存分区的页面错误。
如果在系统上的所有共享内存分区中启用了租借功能,那么管理程序将执行低得多的分页级别,但是会出现管理程序分页活动峰值。
重要:建议尽可能保持分区设备与管理程序分页设备分离。共享内存分区的 I/O 操作可能与由管理程序分页导致的 I/O 操作竞争。
虚拟异步服务接口
虚拟异步服务接口(Virtual Asynchronous Service Interface,VASI)是一个虚拟设备,支持虚拟 I/O 服务器与管理程序通信。虚拟化控制点动态地将 VASI 设备添加到一个虚拟 I/O 服务器中,以将虚拟 I/O 服务器启用为分页虚拟 I/O 服务器。
分页进(page in)和分页出操作请求会使用此虚拟设备传达给分页虚拟 I/O 服务器。每个 VASI 适配器可以支持多个共享内存分区。
I/O 授权内存
I/O 授权内存的用途是描述在分区需要将其用于 I/O 操作时必须保持可用的最小物理内存量,无论任何分区可能对物理内存的需求有多大。
如果授权内存太小,结果将会是失败或延迟的 I/O 操作。例如,联网通常需要预保留一定量的物理内存来接收入站通信(比如以太网)包。如果在这些包试图写入分区内存时不存在物理内存,那么这种延迟的效果可能会导致联网超时。类似地,如果需要执行一个磁盘分页操作,并且锁定充当磁盘读取目标的物理页面,那么将导致磁盘读取延迟加剧,直到该物理内存能够被确定。
每个分区,主要是在其被设置为执行 I/O 操作时(比如磁盘读取或写入,或者 TCP/IP 通信),必须确保物理内存的一部分在执行此类操作期间保持不动。通过指明这一点,管理程序能够临时保留一定数量的物理页面。在此期间,管理程序不能将这些页面用于共享。
注意:授权内存大小不是绝对物理页面的一个规格,而是一个观测值,表示在某个可能的较长时期内必须可用于某些操作的物理页面数量。
Active Memory Sharing 支持技术
为了支持 Active Memory Sharing,需要使用一些新技术。以下小节将探讨这些主题。
页面租借
Active Memory Sharing 使用内存租借来代替内存飘移(ballooning)。使用飘移,一个管理程序想要使用的页面通过一个飘移设备驱动程序来分配,然后提供给管理程序。这些页面只有在由管理程序显式返回之后才能使用。考虑这种方法是因为它能够避免内部操作系统修改。然而,它会延缓对增加操作系统内存需求的响应,并且被限定为操作系统可以锁定的内存量。
使用页面租借,操作系统使用最易于租借的页面来响应管理程序租借请求,并且随着负载增加,操作系统会收回页面,并向管理程序提供关于增加的操作系统负载的反馈。
内存租借引入一类新的页面帧,称为租借页面帧。从操作系统角度看,租借的页面是空闲页面,但这些页面无法用于缓存文件数据。它们可用于工作存储数据,随后它们将自然地将已加载内存转变为分配给一个系统用户的内存的一部分。
如果启用了租借功能,操作系统将把其页面的内容分页出去,并将页面租借给管理程序。如果禁用了内存租借功能,则只有管理程序将使用提示将页面内容分页出去。在一个或多个共享内存分区中存在较高的过度订阅比率和较高的内存压力时,会将关键页面分页出去。
协作内存管理器
协作内存管理器是一种操作系统特性,它提供了关于内存页面使用情况的提示,PowerVM 管理程序使用这些提示来定位页面,以管理共享内存分区的物理内存。
Active Memory Sharing 管理器设计用于管理所有分区的共享内存,它没有每个分区的热(活动)和冷(老化)页面视图。如果逻辑页面是一个分区的工作集的一部分,那么管理程序不会从该分区选择这些逻辑页面。但是,如果发生了过量订阅,管理程序将无法避免这种情况,所以它与操作系统协作接收页面提示,以提高选择该分区在短期内不需要的逻辑页面的概率。
在每个共享内存分区中运行的操作系统,比如 AIX 和 IBM i,使用 CMM 来向管理程序提供每个逻辑页面使用情况的提示。
通常,管理程序根据提示,按照重要性以升序定位逻辑内存页面。
内存相关性
内存相关性信息不会由 Active Memory Sharing 模式下的分区的分区固件来报告。
对于 AIX,所有内存都属于同一个相关性域,使用单一虚拟内存池来表示被使用的所有内存。
对于 IBM i,如果分区正在一个 Active Memory Sharing 池中运行,那么 SLIC 的主要存储管理(Main Storage Management,MSM)组件使所有内存以节点 0 的形式出现。
特定于 IBM I 的组件
以下组件仅适用于 IBM i 操作系统。
具体化资源管理数据(Materialize Resource Management Data,MATRMD)说明
由 POWER® Hypervisor™ 提供的关于 Active Memory Sharing 配置和分页活动的信息可以在机器接口层之上供更改集的 IBM i 操作系统软件和应用程序使用。此信息可能有助于评估由管理程序内存分页活动所导致的分区性能行为。
您可以使用收集服务访问此信息。关于 Active Memory Sharing 的数据记录在一个名为 QAPMSHRMP 的新表中。
具体化选项收集的这些信息可供专门检索此信息的服务和性能 API 使用
重要:如果 HMC 或 IVM 已授权分区具体化共享池利用数据,那么您只能获取共享内存池数据。当前用于控制对共享处理器池数据的分区访问的也是这种机制。
管理程序 CPU 调度 PDC 事件
当性能浏览器(Performance Explore,PEX)使用一个指定了 BASEEVT(*CPUSWT) 的定义启动时,管理程序 CPU 调度(Hypervisor CPU Dispatch)活动的 PDC 事件从每个分区逻辑处理器中的调度跟踪日志缓冲区中收集而来。
在一个分区逻辑处理器被调度来在一个硬件处理器上运行时,以及由于处理器抢占 / 调度等原因,调度跟踪日志缓冲区条目由 POWER Hypervisor 创建。
如果分区在 Active Memory Sharing 模式下运行,那么抢占一个分区逻辑处理器的一个新原因将是,在访问未驻留在物理实存中的实存时发生页面错误。调度原因代码字段中的 0x08 值表示,一个逻辑实存页面错误导致了处理器抢占。
注意:调度原因字段中的这个新值出现在 QAYPETSKSW PEX 文件中的跟踪记录的当前 QTWHRC 字段中。
处理器与内存虚拟化比较
Active Memory Sharing 最大化内存利用率类似于共享处理器 LPAR 最大化处理器利用率。两种技术具有明显的相似之处和不同之处,如表 1 和表 2 所示。
表 1.共享处理器与共享内存技术之间的相似之处
相似的特征 | 共享处理器 | 共享内存 |
资源共享。多个 LPAR 共享一个池中的资源 | 处理器池 | 内存池 |
过量使用 | 在共享内存池中,虚拟处理器的数量可以大于物理处理器的数量 | 在共享池中,为所有分区配置的逻辑内存可以大于实际的物理内存 |
最大化利用率 | 一个 LPAR 中的未使用周期可被调度给任何处于无限模式下的 LPAR | 一个 LPAR 的未使用页面可重新分配给另一个 LPAR |
优先级 | LPAR 具有优先利用多余周期的权重 | LPAR 具有实施内存分配优先级的权重 |
池数 | 多个(当使用一个 HMC 时) | 一个 |
表 2.共享处理器与共享内存技术之间的不同之处
不同的特征 | 共享处理器 | 共享内存 |
依赖关系 | 不需要 Active Memory Sharing | 需要共享处理器 LPAR |
资源授权 | 处理器授权具有保障 | 未提供物理内存保障,但 I/O 授权内存除外 |
共享权重或优先级 | 已配置的共享权重仅用于调度超出一个 LPAR 的 CPU 授权的周期 | 共享权与其他因素结合使用来分配超出 I/O 授权的内存 |
共享池 | 不需要用户执行操作来配置共享处理器池 | 内存共享池必须由用户创建 |
物理与虚拟设备 | 同时支持物理和虚拟设备。 | 在编写本文档时,Active Memory Sharing 只支持在虚拟设备(网络、磁盘等)上使用 |
重要:在 Active Memory Sharing 技术中,授权并不意味着实际容量,共享处理器技术也是如此。
- ››Active Directory的复制拓扑,Active Directory系...
- ››Active Directory的主要还原,Active Directory系...
- ››Active Directory的脱机碎片整理,Active Directo...
- ››Active Object 并发模式在 Java 中的应用
- ››PowerVM 和 POWER7 处理器
- ››ActiveFile 手机文件管理
- ››Active Directory网络中DNS服务器的规划
- ››ActiveSkin 4.3软件换肤在VC中的实现
- ››Active Memory Sharing 与双 Virtual I/O Server ...
- ››PowerVM 新存储特性 - NPIV
- ››PowerVM 新特性 - Active Memory Sharing,第 5 部...
- ››PowerVM 新特性 - Active Memory Sharing,第 6 部...
赞助商链接