IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope: Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  AIX and UNIX  >

PowerVM 新特性 - Active Memory Sharing: 第 1 部分:入门

本文摘自红皮书《PowerVM Virtualization Active Memory Sharing》

developerWorks
文档选项

未显示需要 JavaScript 的文档选项

英文原文

英文原文


级别: 初级

developerWorks 中国, 编辑团队, IBM

2009 年 8 月 11 日

IBM PowerVM 设计为 IBM Power Systems 上的 AIX、IBM i 和 Linux 操作系统提供工业强度的虚拟化技术。PowerVM 提供广泛的配置选择,可以提高资产利用率、增加基础设施灵活性,并降低成本。

您可以通过访问"IBM Power 系列主机虚拟化专题”来了解其它的相关虚拟化文章:

Active Memory Sharing 是 IBM PowerVM 的高级内存虚拟化技术,向 IBM Power Systems 提供系统内存虚拟化功能,允许多个逻辑分区共享公共的物理内存池。

IBM Power System 的物理内存可以按专用模式或共享模式分配给多个逻辑分区。

  • 系统管理员能够将一些物理内存分配给一个逻辑分区,将一些物理内存分配给一个由其他逻辑分区共享的池。
  • 单个分区可以具有专用或共享的内存。
    • 专用模式(Dedicated mode)

      IBM Power System 平台已经支持专用内存模式多年了。在逻辑分区之间优化可用内存的分布是系统管理员的任务。如果某个逻辑分区的性能受到内存约束的影响,其他逻辑分区具有未使用的内存,那么管理员可以手动做出反应,即发出一个动态内存重新配置命令。重新配置又受到自由内存可用性和管理员的反应时间的支配。

    • 共享模式(Dedicated mode)

      使用共享内存模式时,由系统自动决定物理内存到逻辑分区的最佳分布,基于内存页需求调整内存分配。管理员只为共享内存池保留物理内存,给内存池分配逻辑分区。

Active Memory Sharing 可以用来提高系统的内存利用率,方法是降低系统内存需求,或者允许在现有系统上创建额外的逻辑分区。

本文主要介绍 Active Memory Sharing 技术,还会简要介绍组件和功能。

系统要求

为了使用 IBM PowerVM 的 Active Memory Sharing 特性,需要满足以下最小要求:

  • 一台基于 POWER6 处理器的 IBM Power System 服务器
  • 企业版 PowerVM 处于激活状态
  • 固件级别 340_075
  • 针对 HMC 管理系统的 HMC 版本 7.3.4 服务包 2 (V7R3.4.0M2)
  • 针对 HMC 和 IVM 管理系统的虚拟 I/O 服务器版本 2.1.0.1-FP21
  • AIX 6.1 TL 3
  • Novell SuSE SLES11

注意:要获得有关 Linux 支持的最新信息,请参见以下资源:

  • IBM PowerVM Active Memory Sharing Performance

    ftp://ftp.software.ibm.com/common/ssi/sa/wh/n/pow03017usen/POW03017USEN.PDF

  • Using Active Memory Sharing on SLES11

    http://www.ibm.com/developerworks/wikis/display/LinuxP/Using+Active+Memory+Sharing+on+SLES11





回页首


专用内存和共享内存

一台 IBM Power System 服务器上可以有多个独立的操作系统,每个系统使用一部分系统资源。操作系统运行在一个逻辑分区中,该分区只能够访问系统管理员配置的资源(比如处理器、内存和 I/O)。

系统资源可以专用于单个逻辑分区,也可以在一组逻辑分区之间共享。具体的选择取决于几个考虑因素,比如性能期望、整体资源优化和成本。通常,单个系统既配置有专用资源,也配置有共享资源。

逻辑分区对其所有的专用资源具有独占的访问权限。该设置在资源访问时间上也许有性能优势,但是失去的是高度依赖于逻辑分区负载的资源利用率。在服务器上,可能有些逻辑分区的专用资源负担过重,导致性能降低,而其他一些逻辑分区的资源则基本上没怎么用。

资源共享允许多个逻辑分区在 hypervisor 的控制下访问相同的资源,hypervisor 的作用是监视负载、应用分配规则以及分时访问资源。单个逻辑分区将共享资源看作自己对其具有完全的访问权限。由 hypervisor 管理实际访问,避免冲突或抵触,并允许访问那些具有最高资源需求的逻辑分区。

例如,PowerVM 的 Micro-Partitioning 特性被广泛用于共享处理器。管理员可以定义一个物理处理器池,逻辑分区可以创建为具有一组虚拟处理器和池访问规则。系统 hypervisor 根据访问规则和所有逻辑分区的负载,将物理处理器分配给虚拟处理器一段时间。分配对于给虚拟处理器(就好像是物理处理器一样)分配线程的操作系统是透明的。

PowerVM 的 Active Memory Sharing 特性允许系统内存的共享。除了传统的向单个逻辑分区分配专用内存之外,管理员还可以创建在一组逻辑分区之间共享的内存池。

系统中的每个逻辑分区可以配置为具有专用内存或共享内存,如图 1 所示。


图 1. 共享和专用内存逻辑分区
图 1. 共享和专用内存逻辑分区

专用内存分区具有根据其配置而保留的系统内存。内存大小是系统逻辑内存块大小(logical memory block size)的倍数(16、64、128 或 256 MB),内存只要一激活就会全都分配给逻辑分区。

共享内存分区被配置为具有是系统逻辑内存块大小倍数的逻辑内存空间,但是物理内存是由 Power Hypervisor 基于逻辑分区的运行时内存需求从共享内存池分配的。内存分配具有非常好的粒度,这取决于 hypervisor 的页大小,当前是 4 KB。

Active Memory Sharing 允许内存资源的过量使用(overcommitment)。由于逻辑内存根据逻辑分区的内存需求而与物理内存匹配,所以,所有逻辑分区的逻辑内存之和可以大于共享内存池的大小。

每个逻辑分区被允许使用所有分配的逻辑内存。当物理内存的累积使用达到池的大小时,hypervisor 可以透明地从共享内存分区窃取内存并分配给另一个共享内存分区。如果删除的内存页包含数据,那么数据将被存储到分页设备上,内存页内容在分配给另一个逻辑分区之前被清除。如果新分配的页包含数据,那么数据将从磁盘设备还原。

由于分页磁盘活动具有逻辑内存访问时间方面的成本,所以 hypervisor 跟踪内存使用情况,以窃取在近期可能不会用到的内存。共享内存分区的操作系统通过提供关于页面使用情况的线索以及释放内存页而与 hypervisor 合作,以限制 hypervisor 分页。





回页首


共享内存池

为 Active Memory Sharing 特性启用的系统可以配置为具有单个共享内存池。池是使用 Hardware Management Console (HMC) 或 Integrated Virtualization Manager (IVM) 创建的。

共享内存池是由 hypervisor 作为一个整体管理的一组物理内存块。池中的内存是在创建池时保留的,不能够再分配给其他专用内存分区。为了由共享内存分区独占使用,共享内存池直接由 hypervisor 管理。

例如,在具有 16 GB 实际内存的系统上,可以创建一个 10 GB 的共享内存池。剩下的 6 GB 内存将用于创建专用内存分区。用于共享内存池的 10 GB 内存马上被保留下来,即使没有定义或激活共享内存分区。

通过使用 HMC 或 IVM 界面,共享内存池的大小可以随时动态更改。池最大可以增大到可供逻辑分区使用的最大系统内存,最小可以减小到给专用内存分区提供额外的内存。

如果没有活跃的共享内存分区,池也可以动态地被删除,但是这样会阻止已定义的共享内存分区再次以共享内存模式被激活。

共享内存池配置需要定义一组分页设备,用于将多余的内存页存储到临时存储设备上。对与共享内存分区相关的分页设备的访问权限由同一系统上的分页虚拟 I/O 服务器提供。在创建池时,必须确定将给池提供分页服务的分页虚拟 I/O 服务器。

每个共享内存分区都需要一个专用的分页设备才能启动。分页设备是在共享内存分区被激活时、基于逻辑分区的最大逻辑内存配置的可用性和大小而选择的。如果没有适合的分页设备可用,那么激活操作将会失败,显示一条错误消息,指出所需的分页设备大小。

分页设备可以动态地从共享内存池配置被添加或删除。设备只有在其没有分配给任何正在运行的逻辑分区时才可以被删除。如果逻辑分区在设备删除之后被激活,那么将从可用的分页设备中选择一个新的设备。

如果系统中没有可用的共享内存池,则不可能定义任何新的共享内存分区。共享内存池一旦可用,它就可以最多支持 128 个共享内存分区。





回页首


分页虚拟 I/O 服务器

当 hypervisor 需要释放共享内存池中的内存页时,内存内容必须存储到一个分页设备上,以便数据在以后再次被访问时可以还原。此活动叫做分页活动,由共享内存池配置中为分页定义的虚拟 I/O 服务器来执行。

多个虚拟 I/O 服务器逻辑分区可以出现在一个系统上,并且可由单个共享内存池使用。分页虚拟 I/O 服务器必须配置为具有专用内存,因为它是在为池本身提供服务。

分页虚拟 I/O 服务器设计为最多处理 128 个共享内存分区。

当 hypervisor 决定必须执行分页活动时,它会发送一个请求到分页虚拟 I/O 服务器,将属于特定逻辑分区的特定内存页复制到相应的分页设备,或者从中复制出来。分页虚拟 I/O 服务器执行该动作,然后向 hypervisor 通知完成。同一时间可能会发出多个分页请求。

对于每个活跃的共享内存分区,都需要一个单独的分页设备,该设备可以是以下之一:

  • 逻辑卷
  • 本地附加存储器
  • SAN 附加存储器
  • iSCSI 附加存储器

选择分页设备时应该考虑设备可以提供的响应时间。当需要执行分页活动时,共享内存分区的逻辑内存访问时间取决于磁盘设备的响应时间,推荐使用高性能且可靠的设备。

注意:使用 Integrated Virtualization Manager (IVM) 时,自动创建的所有分页设备都是逻辑卷。因此,在考虑物理设备需求时应该记住这一点。物理卷可以手动地加以选择。

在 HMC 管理的系统中,用户最多可以给共享内存池分配两个分页 VIOS 分区,以提供对分页设备的访问。这种冗余分页 VIOS 配置改善了,出现计划内或计划外 VIOS 中断时共享内存分区的可用性。

有关配置共享内存池具有冗余分页 VIOS 分区的额外信息,可在 LPAR Configuration Guidelines 中找到。





回页首


共享内存分区

一定义好共享内存池,就可以在系统中创建共享内存分区。逻辑分区为了被定义为共享内存分区,必须满足以下需求:

  • 使用共享的处理器。
  • 使用虚拟 I/O,包括以下适配器:
  • 虚拟以太网适配器
  • 虚拟 SCSI 适配器
  • 虚拟光纤通道适配器
  • 虚拟串行适配器
  • 运行在逻辑分区中的操作系统可以是 AIX、IBM i 或 Linux。
  • 最低 AIX 级别是版本 6.1 TL 03
  • 最低 IBM i 级别是版本 V6R1 PTF SI32798
  • Novell SuSE SLES11

注意:有关 Linux 支持的最新信息,请参见以下资源:

  • IBM PowerVM Active Memory Sharing Performance

    ftp://ftp.software.ibm.com/common/ssi/sa/wh/n/pow03017usen/POW03017USEN.PDF

  • Using Active Memory Sharing on SLES11

    http://www.ibm.com/developerworks/wikis/display/LinuxP/Using+Active+Memory+Sharing+on+SLES11

通过修改其分区配置并以新的配置重新启动逻辑分区,现有的专用内存分区可以更改为共享内存模式。由于共享内存分区不允许专用的适配器,所以有必要进行正确的规划。

逻辑内存和物理内存

逻辑分区内存扇区的概要文件(profile)已经增强,允许选择专用内存或共享内存。分配给逻辑分区的内存然后被定义为专用内存或逻辑内存。

在共享内存分区中,两个参数定义了内存配置:

逻辑内存(Logical memory)

操作系统管理和可以访问的内存数量。使用中的逻辑内存页可能会由物理内存或池的分页设备备份。

内存权重(Memory weight)

由 hypervisor 用来区分从共享内存池向逻辑分区分配物理内存的优先次序的相对数值。较高的值增加更多物理内存被分配给逻辑分区的可能性。

跟专用内存分区一样,共享内存分区也具有最小、所需和最大内存配置值。对于共享内存分区,这些值控制分区的逻辑内存大小。当分区启动时,hypervisor 给它分配一个等于所需值的实际逻辑内存值。一个分区可以使用的物理内存数量受到为分区配置的逻辑内存数量的限制。例如,假设一个分区被配置为具有 10 GB 逻辑内存,那么分区可以使用的最大物理内存数量就是 10 GB,尽管分区实际使用的物理内存数量可能小于这个数值。

如果一个逻辑分区的内存需求随着时间而改变,那么就可能动态修改分配给它的逻辑内存的大小(假设满足最小和最大逻辑内存限制)。例如,一个具有 4 GB 逻辑内存的逻辑分区可能会宿主需要更多工作内存的附加应用程序:逻辑内存的大小然后可以增加到 8 GB,只要最大逻辑内存大小大于等于 8 GB 即可。

逻辑内存内容放置受 hypervisor 的控制,由它决定内容应该存储到物理内存中,还是存储到分页空间设备中。Hypervisor 通过向逻辑分区分配物理内存,以及使用分页虚拟 I/O 服务器在磁盘上存储一些逻辑内存,来管理共享内存池内容。

当属于共享内存分区的虚拟处理器引用一个物理内存页未备份的逻辑内存页时,将在 hypervisor 级别发出页失败,并且虚拟处理器被 hypervisor 挂起,从而释放它在使用的物理处理器。只有在 hypervisor 已经让被引用的页变得可用之后,虚拟处理器才会再次变得可运行。

Hypervisor 进行内存页窃取从操作系统角度是透明的,但是当 hypervisor 需要从页空间还原内存内容时,页窃取可能会增加内存访问时间。性能效果会因选择释放哪些页以及每个逻辑分区在访问多少内存而不同。

内存分类

为了整体优化共享内存的使用,hypervisor 和每个共享内存分区宿主的操作系统之间存在着协作。

操作系统知道逻辑内存页的重要性,并提供关于页使用情况的线索。它标记每个逻辑内存页,指出其有多重要,从而允许 hypervisor 区分页的优先次序,降低对共享内存分区性能的影响。

被借用页

借用过程(loaning process)可以改善 hypervisor 与每个操作系统之间的协作。不是仅仅执行页窃取,hypervisor 也请求释放一些逻辑内存页,而操作系统可以选择哪些页更适合于释放。通过借用页,操作系统减少了 hypervisor 的活动,改善了内存池的整体性能。

AIX 操作系统使得调优选择借用哪些逻辑页的算法成为可能。图 2 展示了一个例子,即 hypervisor 在给定时间所做的逻辑内存到物理内存的映射。共享内存分区拥有逻辑内存,并向 hypervisor 提供页使用情况分类(页线索)。物理内存的使用由 hypervisor 基于整个池的当前内存需求以及共享内存分区如何访问内存而独占地进行管理。

尽管 I/O 映射的页总是能分配到物理内存,但是所有其他页可能会被放置到物理内存中或者分页设备上。自由页和被借用页从共享内存分区的角度来看不具有内容,因而它们不需要复制到分页设备。


图 2. 逻辑内存到物理内存映射示例
图 2. 逻辑内存到物理内存映射示例

操作系统保留有逻辑内存和物理内存使用情况的统计数据,允许管理员监视共享内存分区的状态。具体来说,可以随时知道有多少物理内存在使用中,有多少自由内存处于被借用状态,与共享内存分区相关的 hypervisor 页失败数量,以及处理此类页失败所花费的平均时间。

注意:从用户空间应用程序的角度来看,Active Memory Sharing 的引入根本不需要任何更改,因为共享内存配置不影响应用程序的行为。只是内存访问时间相对于专用内存的访问时间来说可能会有改变,但是内存共享的优势会提高系统资源利用率,对 IT 基础设施是极为有利的。





回页首


使用示例

内存共享的目标是,通过在特定的时间点给最需要内存的逻辑分区分配物理内存,来优化内存池的使用。这种优化可用于降低逻辑分区的整体内存需求,或者用于在内存需求高峰期间允许逻辑分区增加它们的内存占有量。

根据物理内存的过量使用类型,有可能存在多种内存共享场景。取决于您的工作负载,这些内存共享场景可能会大大提高整体性能。

有关额外的性能说明,请参见:

ftp://ftp.software.ibm.com/common/ssi/sa/wh/n/pow03017usen/POW03017USEN.PDF

逻辑内存过量使用

在逻辑内存过量使用场景中,确定共享内存分区的内存大小时必须考虑整个时间间隔(比如一天)内的内存需求 , 并确保物理内存的整体需求永远不会超出池中的物理内存。

在这种配置中,有可能优化系统中的现有物理内存,或者降低整体内存需求。

现有内存优化

我们来考虑一组已经确定适当大小并且在使用专用内存的逻辑分区。在其中包含跟以前专用分区相同数量内存的内存池中,逻辑分区可以更改为共享逻辑分区。分配给每个共享内存分区的逻辑内存被配置为大于专用模式的内存大小。

例如,4 个都具有 10 GB 专用内存的逻辑分区被配置为共享一个 45 GB 的内存池,每个分区分配到 15 GB 逻辑内存。内存池中额外的 5 GB 存储容量可以帮助缓冲区应付突然的内存消耗高峰。

这种新的配置不改变整体内存需求,并且每个逻辑分区可以具有跟以前相同数量的物理内存。但是内存分配大大改善,这是因为,通过自动分配内存池中额外的页,其中一个逻辑分区的计划外高峰需求而导致的意外内存需求可以得到满足。

只要共享内存池不需要在同一时间给所有逻辑分区提供额外的页,hypervisor 分页就会是最小限度的。

如果 hypervisor 分页活动增加得太多,那么可能会向池中添加额外的内存,所有共享内存分区将会享受到内存可用性增加带来的好处。

这不同于专用内存配置,在专用内存配置中,新的内存必须只被静态地分配给一少部分选定的逻辑分区。

降低的内存需求

很好地了解多个分区前一阵子的物理内存需求,可以配置系统具有降低的内存配置。

例如,知道两个逻辑分区在高峰时各自需要 8 GB,但是它们的并发需求从来不超过 10 GB。共享内存池可以被定义为具有 10 GB 可用内存,每个逻辑分区被配置为具有 10 GB 逻辑内存。在专用内存配置中,需要 16 GB 内存,而不像共享内存设置那样只需要 10 GB。该场景展示在图 3 中,其中带有两个 AIX 逻辑分区。

db_server 逻辑分区启动一个作业,分配 7 GB 逻辑内存,而 web_server 逻辑分区则保持空闲。基于作业如何访问逻辑内存页,分区 db_server 逐渐增加实际内存使用量。分区 web_server 则相应地降低其实际内存使用量。Hypervisor 要求 AIX 借用内存并窃取一些内存页。

当 db_server 分区结束它的作业时,web_server 上的另一个作业启动,使用 7 GB 逻辑内存。随着新作业的内存访问,hypervisor 开始从 db_server 分区删除空闲的内存页,利用相同的借用和窃取技术将它们分配给 web_server 分区。


图 3. 内存的逻辑过量使用示例(查看大图
图 3. 内存的逻辑过量使用示例

宿主一组共享内存分区所需的内存用量会大大降低。因为共享内存分区不同时使用它们的所有内存,hypervisor 工作是有限的,并且大多数被窃取的页是自由页,需要的 I/O 操作也很少。

Hypervisor 监视每个共享内存分区的内存需求,并且能够满足内存需求。需要时,页窃取总是从具有较低频率内存活动的逻辑分区开始,以便限制磁盘 I/O 操作。

Hypervisor 必须执行高频率活动的期间是从一个逻辑分区转移工作负载到另一个逻辑分区期间。第一个逻辑分区可能拥有大多数内存,却并不访问它们,而第二个逻辑分区则需要为其增加的活动分配额外的物理内存。在这个短暂的期间内,应用程序会监视到一些增加的内存访问延迟,只要 hypervisor 完成内存重新分配,这就可以得到缓解。

逻辑过量使用对于具有以下特征的工作负载来说可能是个好机会:

  • 它们的内存使用量高峰和低谷有交错。比如说晚间和日间活动,或者被不同时区用户访问的应用程序。
  • 它们具有低平均内存驻留需求。
  • 它们不具有持续负载(比如零售总部和大学环境)
  • 为冗余性而使用的故障恢复和备份逻辑分区,它们只在主服务器停机时需要资源。资源不必专用于冗余服务器。

物理内存过量使用

物理过量使用发生在实际引用的所有逻辑内存之和超出共享内存池中的物理内存之时。然后 hypervisor 必须频繁地使用分页设备来备份活跃的内存页。

在这种场景中,取决于逻辑页是在物理内存中还是在分页设备中可用,内存访问时间会不同。Hypervisor 页失败率决定应用程序性能和吞吐量,但是所有逻辑分区都允许工作。

并不是所有的工作负载都会受到内存延迟的影响,并且过量使用允许创建比专用内存配置更大数量的逻辑分区。有一些场景中,hypervisor 分页良好适合于配置需求。

对于以下示例配置,物理过量使用是适当的:

  • 使用大量文件缓存的工作负载。操作系统可以根据 hypervisor 需求控制缓存大小,以便限制 hypervisor 分页。
  • 对内存延迟不太敏感的工作负载,比如文件服务器、打印服务器以及一些网络应用程序。
  • 大部分时间不活跃的逻辑分区。


参考资料

学习
  • 您可以参阅本文在 IBM Redbooks 网站上的 红皮书原文

  • 红皮书 《 IBM PowerVM Live Partition Mobility 》:本红皮书向您详细地介绍了 Live Partition Mobility 的概念和配置方法,是全面学习 Live Partition Mobility 的很好的资料。

  • IBM AIX 6 资源中心:在这里,我们集中地通过 AIX 6 的最新的 6 个特性来向您展示这个新产品的亮点。

  • IBM Power 系列主机虚拟化专题:在这里,我们为您整理了与 Power 系列主机虚拟化相关的内容,从概念、应用和新兴技术等方面向您介绍这个高级技术的方方面面。

  • AIX and UNIX 专区:developerWorks 的“AIX and UNIX 专区”提供了大量与 AIX 系统管理的所有方面相关的信息,您可以利用它们来扩展自己的 UNIX 技能。

  • AIX and UNIX 新手入门:访问“AIX and UNIX 新手入门”页面可了解更多关于 AIX 和 UNIX 的内容。

  • AIX and UNIX 专题汇总:AIX and UNIX 专区已经为您推出了很多的技术专题,为您总结了很多热门的知识点。我们在后面还会继续推出很多相关的热门专题给您,为了方便您的访问,我们在这里为您把本专区的所有专题进行汇总,让您更方便的找到您需要的内容。


获得产品和技术
  • IBM 试用软件:使用可从 developerWorks 直接下载的软件构建您的下一个开发项目。


讨论


关于作者




对本文的评价








IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款