我很幸运地参加了IBM的POWER6上用于主动内存共享(AMS)的早期发货计划(ESP)。 本文介绍了如何在非生产AIX实验室环境中配置Active Memory Sharing。 我还将介绍AMS的性能注意事项。 我的希望是,随着人们开始采用AMS,本文将有助于他们开始使用这一新的PowerVM™虚拟化技术。
我工作的组织被提名并接受了AMS的ESP。 几个月以来,我们能够测试AMS,然后其他人(IBM之外)才有机会尝试使用AMS。 既然AMS已可用于AIX和POWER6客户,我认为值得与AIX社区分享我的经验。
参与Beta版计划是一次很棒的经历。 我们可以访问Beta代码和测试文档。 我们还能够针对测试期间发现的任何错误打开PMR。 专为ESP客户创建了一个论坛,以便我们可以发布问题并直接从实际的AMS开发人员那里获得答案。
我们应该在非生产系统上测试AMS,并定期进行报告,向开发人员提供有关性能,功能和可用性的反馈。
总览
AMS是对POWER6平台上可用的IBM PowerVM虚拟化技术的增强。 这是一些人迫切等待了一段时间的功能。 对于完全虚拟化的AIX and POWER环境,这是难题的最后一部分。
AMS智能地将内存从一个逻辑分区(LPAR)流到另一个逻辑分区,以提高内存的利用率和灵活性。 该概念与共享处理器池和微分区的概念非常相似。 它允许您在POWER6系统上超额预订内存,并让系统(POWER Hypervisor™)在需要的地方分配内存。 不再需要DLPAR操作!
当然,您需要了解AMS的工作方式以及它如何与虚拟内存和AIX上的页面调度进行交互。 幸运的是,现有的性能工具已得到增强,可以帮助监视和管理AMS系统。
那么为什么我们需要AMS? 好吧,考虑一个具有p6 570的环境,该环境具有256GB的内存和32个AIX LPAR,其中每个LPAR都分配有8GB的内存。 所有内存都已分配,无法与其他LPAR共享。 但是,我们有未分配的处理单元,可用于构建更多的LPAR,但由于所有内存已被消耗,因此无法处理。 通常的做法是激活更多内存(使用CUoD)或购买并安装更多物理内存。
但是,将LPAR上的任何“未使用”或“空闲”内存与其他LPAR共享并在真正需要时将其退还不是很好吗? 但是,如何确定LPAR是否真的需要所有内存呢? 由于内存的AIX优化,这通常是一项艰巨的任务。 您执行了一些工作负载分析,发现并非所有LPAR都同时使用。 这是一个非生产系统,运行大量用于SAP / Oracle的开发和测试环境(例如)。 您现在知道,尽管LPAR可能已经消耗了所有内存,但它们并没有真正一直在使用它。
我们可以重新分配“空闲”内存并将其部署到其他真正需要它的地方吗? 是的:使用AMS,您可以。
主动内存共享(AMS)
在本节中,我将简要概述AMS的功能。 但是,我建议您查看有关AMS的IBM官方文档以获取详细信息。
传统上,每个LPAR都拥有其内存。 任何未使用的内存都可能被浪费。 如果内存被过度使用(过量使用),那么AIX将分页到调页空间(磁盘)。 为了处理这些情况,AIX管理员可以删除一些内存(如果他可以确定内存的实际使用情况),然后使用DLPAR将其重新分配给另一个LPAR,或者如果有空闲(未分配)的内存,则将其添加到LPAR,再次使用DLPAR 。 请参考图1。
图1.具有专用物理内存的LPAR
借助AMS,系统管理程序可以自动控制内存分配。 系统的物理内存位于“共享内存池”中。 LPAR被分配了“逻辑”共享内存。 但是,他们认为内存是真实的,因此更改对系统是透明的。 可以根据需要将该内存分配给LPAR。 未使用的内存可用于构建更多的LPAR或分配给需要它的用户。 LPAR和Hypervisor协同工作以确定何时以及在何处共享内存。 参见图2。
图2.具有共享“逻辑”内存的LPAR
为了使AMS正常运行,需要一种称为分页虚拟I / O服务器(VIOS)的新设备。 此分页VIOS设备为共享内存池提供分页服务,并为共享内存LPAR管理系统管理程序分页空间。 由于内存是在多个LPAR之间动态管理的,因此Hypervisor必须使用分页设备来备份无法使用共享内存池中的物理内存备份的多余内存。 这使我们可以进行内存订阅。
有三种方法可以使用AMS配置内存订阅。
第一个称为Non over-commit 。 在这种情况下,共享池中的实际内存量足以覆盖已配置的逻辑内存量(例如,四个LPAR每个需要8GB,因此该池配置了32GB内存。这非常适合共享内存)池。)。
第二种方法是逻辑过量使用 。 在给定时间“正在使用”的逻辑内存等于池中的物理内存。 因此,逻辑配置的总内存可以大于池中的物理内存。 但是, 工作集永远不会超出池中的物理内存。 稍后更多关于工作集的信息。 在这种配置中,LPAR上活跃使用的内存(工作集)将驻留在物理内存中,其余LPAR的逻辑内存位于分页VIOS上的分页设备上。 只是要使用此方法来重申“使用中”和“已配置”之间的区别:“已配置”逻辑内存可以更大,但“使用中”内存在任何时间点都不会超过内存池大小。
最终配置为Physical over-commit 。 在这种情况下,所有LPAR的工作集内存需求可能会超出池中的物理内存。 因此,池中的物理内存和分页VIOS上的分页设备都必须支持逻辑内存。 在“过量使用”的情况下,系统管理程序使用VIOS上的分页设备来备份多余的逻辑内存。
那么您应该使用哪种方法? 如何确定哪些LPAR很适合AMS? 这取决于您的工作负载要求。 本质上,任何没有使物理内存消耗最大化的工作负载都是AMS的最佳选择。
我更喜欢遵循逻辑过量使用方法。 此方法最适合在不同时间达到峰值,平均内存驻留时间( 工作集 )要求较低且没有持续工作负载的工作负载。 通常,非生产开发和测试环境符合此描述。 同样,用于冗余并且仅在故障转移/接管情况下需要资源的故障转移或“备份” LPAR(例如,用于PowerHA群集)也是AMS的良好目标。
为了确定哪种方法最好,您需要对系统的工作集要求有所了解。 工作集是系统上工作负载实际使用或需要的内存。 在将专用LPAR迁移到AMS之前,可以使用svmon之类的AIX性能工具来确定专用内存LPAR上正在使用的内存。
对于使用大量AIX文件高速缓存,对I / O延迟较不敏感的工作负载(例如文件服务器,打印服务器或网络应用程序),并且大多数情况下它们是不活动的,则物理过量提交方法是可以的。 也许您的NIM服务器也是不错的选择,因为它可能很少用于仅安装AIX系统并执行维护?
根据我的测试,我建议继续将专用内存用于具有以下特征的生产系统:高服务质量要求,持续的内存消耗,可预期的性能以及持续的高CPU使用率和高内存带宽要求。 所以不,我不会在我的生产环境中部署AMS。 其他环境可能不适合AMS,例如压力和体积测试系统。
我的工作量适合吗?
在实验室环境中,我必须确定工作负载是否适合我的共享内存池。 我有两个使用专用内存的现有LPAR。 在将它们转换为共享内存LPARS之前,我做了一些数字。 每个LPAR都有4GB的专用内存。 LPAR1大部分时间都是相对空闲的,并且根据其工作集,它不需要所有4GB的内存。 LPAR2(也具有4GB的内存)比较忙,有时需要更多的内存,有时它会分页到分页空间。 它可能会受益于更多的内存。
因此,在我的AMS环境中,我决定为每个LPAR添加一些额外的逻辑内存,以满足需求的高峰。 LPAR1将接收6GB的共享内存,而LPAR2将被分配8GB。 共享内存池将配置有12GB的物理内存,并且总共有14GB的逻辑内存分配给LPAR。 总逻辑内存大于共享内存池。 但是考虑到每个LPAR的工作量,在大多数情况下应该没问题。
在大多数情况下,两个LPAR都会很高兴地一起放入内存池中。 如果两个LPAR的工作集都小于或等于池大小,则不会出现过量使用。 如果工作集变得略大于池大小,那么当系统管理程序重新平衡LPAR的内存使用量时,将发生一些分页。 如果LPAR的工作集变得比池的大小大得多,那么将有很多分页,并且性能可能会受到很大影响。 因此,在转移到AMS之前,必须充分了解您的工作量。
AMS与AIX虚拟内存管理器和Hypervisor一起管理内存分配。 如果所有LPAR的工作量略大于池,则系统管理程序将要求AIX帮助确定可以在何处释放页面。 AIX可以根据需要将页面借给Hypervisor。 分配内存时,虚拟机管理程序会偏爱对内存有更高需求的LPAR。
如果池在物理上被过量使用,则虚拟机监控程序将主动从LPAR窃取页面。 如果这极大地影响性能,那么可能是时候向池中添加更多的物理内存了。
准备和计划
如果计划在您的环境中使用AMS,则必须确保系统具有以下必需的硬件,AIX版本,VIOS版本,固件级别和虚拟化配置:
- 基于POWER6处理器的IBM Power System
- 激活企业PowerVM以进行主动内存共享
- 固件级别340_070
- 适用于HMC受管系统的HMC版本7.3.4
- 虚拟I / O服务器版本2.1.0.1-FP20.0
- AIX 6.1 TL3
- 仅微分区
- 仅虚拟I / O
我的非生产实验室环境包括一个具有16GB内存的JS22™刀片服务器和四个POWER6处理器。 在刀片上配置的是VIOS(IVM)和两个AIX 6.1 LPAR。 作为ESP的一部分,我得到了安装的Beta代码,它将在我的JS22,VIOS和AIX LPAR上启用AMS。 我将实验室更新为提供的beta级别:
- 将刀片固件升级到EA340_043_039。
- 将刀片上的VIOS升级到2.1.0.1-FP-20.0。
- 在VIOS和AIX LPAR中应用了AMS修订。
- 已应用VET代码进行AMS激活。
两个LPAR都是现有系统(使用专用内存),具有现有工作负载。 第一个LPAR bxaix85正在运行一个SAP / Oracle实例。 另一个LPAR bxaix86正在运行三个应用程序:SAP / Oracle,Wily和Oracle Grid Control,其中每个应用程序都位于工作负载分区(WPAR)中。
两个LPAR的工作集大约为9.3GB,非常适合该池。 我运行svmon –G
并观察了使用中的内存值来确定工作集。 参见图3。
图3. svmon输出显示在LPAR上正在使用的专用内存
在极少数情况下,LPAR工作集会增长并且略大于池的大小。 这将是对AMS及其性能的很好测试。 我的目标是将这些现有LPAR从专用内存迁移到共享内存并监视其性能。
配置活动内存共享
要在实验室中配置AMS,我执行了以下步骤:
- 验证是否已使用VIOS上的lsvet命令成功激活了AMS VET代码。 参见图4。
图4.验证是否启用了AMS
- 定义了一个共享内存池。 整个AMS配置是使用Integrated Virtualization Manager(IVM)界面执行的。
我决定使用12GB的共享内存池。 在配置池之前,可用的池大小显示为0MB。 参见图5。
图5.创建池之前,共享内存池的大小为零
使用IVM界面定义池非常简单。 参见图6。
图6.用于创建共享内存的IVM接口
我为该池指定了12GB ,并选择rootvg作为VIOS分页设备的位置。 我建议您为此目的使用高性能SAN磁盘,但是对于我的Beta测试,这样做就可以了。 参见图7。
图7.定义共享内存池
定义了池之后,我从IVM和VIOS观察了其设置。 请注意,我还将最大大小更改为16GB,以便可以根据需要动态增加共享内存池的大小。 请参阅图8和9。
图8.共享内存池设置
图9. VIOS的共享内存和分页池视图
- 下一步是将现有的专用内存LPAR迁移到共享内存LPAR。 为此,我首先需要关闭每个LPAR并将配置文件从private更改为shared 。 请参阅图10、11和12。
图10.更改其配置文件之前,LPAR必须处于非活动状态
图11.在LPAR的内存配置文件中选择Shared
图12. LPAR的共享内存配置文件设置
在迁移到共享内存的过程中,IVM自动为每个LPAR创建一个VIOS分页设备。 它创建一个与共享内存池的最大内存值大小相等的页面设备。 请参考图13。
图13. IVM创建的分页设备
AMS寻呼设备可从VIOS查看。 参见图14。
图14. AMS寻呼设备
- 在将LPAR作为共享内存分区重新启动之后,我使用了lparstat和vmstat来查看LPAR的共享内存设置。 请参阅图15和图16。
。
图15.共享内存LPAR上的lparstat输出
具有标题的I / O内存表示分区在任何给定时间保证可用于I / O映射的最大物理内存量。 为分区分配权重以强制分配内存。 请参阅IBM文档以获取更多信息。
图16.共享内存LPAR上的vmstat输出
监控AMS
增强了诸如topas和vmstat之类的现有工具,以报告正在使用的物理内存,虚拟机监控程序分页速率,虚拟机监控程序分页速率延迟以及AIX借给虚拟机监控程序的内存量。 这些工具可用于监视AMS的性能和活动。 参见图17。
图17.共享内存LPAR上的topas cec输出
pmem是在给定时间从共享内存池分配给共享内存分区的物理内存(以GB为单位)。 请参阅IBM文档以获取更多信息。
svmon工具也支持AMS,可以显示LPAR上借出的内存量。 参见图18。
图18.共享内存LPAR上的svmon输出
行动中的AMS
在以下示例中,您可以观察到LPAR由于工作量增加而需要额外的内存。 内存会自动从一个LPAR重新分配到另一个LPAR。 内存按需借给繁忙的LPAR。 无需管理员交互,该活动对系统是透明的。
来自bxaix85的内存已借给bxaix86。 正在使用4GB(pmem),并已借出2GB内存(贷款)。 参见图19。
图19.来自bxaix85的内存已借给bxaix86
图20. bxaix86处于空闲状态
工作负载从bxaix85开始。 它借给bxaix86的内存又被借用了。 随着时间的推移,借出的金额减少(贷款),LPAR上使用的内存(pmem)增加。 请参考图21。
图21.工作负载从bxaix85开始
现在,两个LPAR的工作集都大于共享内存池的大小。 系统管理程序分页发生在bxaix86上(hpi和hpit),因为内存被返还给bxaix85。 bxaix86(pmem)上使用的内存已从8GB减少到刚刚超过6GB。
图22. bxaix86上正在使用的内存
一旦bxaix85有足够的内存来完成其工作,系统管理程序分页将在bxaix86(hpi和hpit)上停止。 请参考图23。
图23. Hypervisor分页在bxaix86上停止
一旦bxaix85完成其工作量,便在bxaix86上开始工作。 内存再次从bxaix85借给了bxaix86。 随着时间的流逝,bxaix85(pmem)上使用的内存减少,借出(贷款)的数量增加。 参见图24。
图24. bxaix85(pmem)上使用的内存减少
可以使用vmo在LPAR上更改AMS贷款政策。 默认情况下,仅借用文件缓存页面。 您可以更改此策略,具体取决于您希望借出内存页的积极程度。 请参阅图25。
图25.共享内存LPAR上的vmo设置
AMS在这里! 怎么办?
虚拟化难题的最后一部分已经到来:主动内存共享。 我们可以让我们的AIX POWER系统根据工作量和需求自动调整内存分配。 不再需要DLPAR操作! 顺便说一下,AMS支持带有内存的DLPAR,因此您仍然可以动态地从LPAR添加和删除内存,只是现在它是逻辑内存,而不是物理内存。
还有很多东西要学习,因为在虚拟化内存环境中将进行性能调整和监视差异。 由于AMS和逻辑内存有新的考虑因素,因此需要回顾监视AIX内存的传统方法。 与共享处理一样,这一次需要从内存的角度调整对监视和管理虚拟化资源的看法。
我还需要在环境中测试一些其他区域,例如使用双VIOS配置AMS,在支持AMS的系统上执行实时分区移动性以及将AMS与PowerHA(HACMP)集群一起使用。 我希望有时间尽快完成这项工作,并向AIX社区报告任何运气。 如果已经有人这样做,请告诉我!
结论
我希望对AMS的简短介绍能使您思考如何部署和迁移到这项新技术。 AMS有潜力在您对POWER6和PowerVM技术的投资中提高投资回报率和总投资成本。 具有在系统之间共享内存的能力将有助于降低成本,并提供一种更有效的内存部署方法。
如果要在环境中使用AMS,请开始考虑如何迁移到共享内存分区。 从基础开始,例如:
- 将您的HMC更新到最新级别。
- 更新POWER6固件。
- 将VIO服务器升级到2.1版。
- 将所有AIX系统升级到AIX 6.1。
- 制定迁移到AMS的迁移策略。 确定哪些系统适合AMS。 例如,从一些非生产系统开始。 测试它们,直到对性能满意为止。 迁移更多系统并重复该过程,直到您虚拟化了所需的内存为止。
现在也可以考虑考虑有关AMS以及最新的POWER6和AIX技术的培训。
翻译自: https://www.ibm.com/developerworks/aix/library/au-pwr6_ams/index.html