优化 AIX 7 内存性能: 第 1 部分,内存概述和内存参数的调优

AIX® 7 利用 POWER7 CPU 改进 LPAR 的内存使用情况。尽管内存调优可能比处理器或磁盘调优更难实现,但它同样是非常重要的。在 AIX 7 服务器中,与任何其他子系统相比,可以对内存进行更多的调优工作。更改系统中的某些内存参数可以极大地提高性能,特别是在这些参数尚未针对运行环境优化的情况下。这个分为三部分的内存调优系列深入讨论调优参数,主要关注优化内存性能的许多难题和各种最佳实践,还要讨论 AIX 6 和 AIX 7 中的一些改进。第 1 部分概述 AIX 中的内存,包括讨论虚拟内存和虚拟内存管理器(VMM)。

Ken Milberg, 作家/网站专家, Future Tech

Ken Milberg 是 PMP,同时也是 techtarget.com 的撰稿人/站点专家,他还为 searchopensource.com 提供 Linux 技术信息和支持。Ken 是 IBM Systems Magazine,Open Edition 的撰稿人和技术编辑。Ken 拥有 University of Maryland University College 的计算机与信息科学学士学位和技术管理科学硕士学位。他是 Long Island POWER-AIX 用户组的创始人和负责人。这些年以来,他在各种规模的企业工作过,并且担任过各种职位,包括 CIO 和高级 AIX 工程师。他现在在 Future Tech 工作,这是一家总部设在长岛的 IBM 业务合作伙伴。Ken 不仅是已通过 PMI 认证的项目管理专业人员(PMP),还是通过 IBM 认证的高级技术专家(CATE,IBM System p5 2006)。



2011 年 1 月 10 日

简介

作为系统管理员,您应该已经对内存的基本知识非常熟悉了,如物理内存和虚拟内存之间的区别。您可能还不很清楚 AIX® 7 中的虚拟内存管理器(VMM)是如何工作的,以及它与性能调优之间的关系如何。在 AIX 7 中,还有必要考虑虚拟内存的影响以及在工作负载分区(WPAR)中如何使用和应用它。本文将介绍一些可以用来优化系统的监视工具,概述一些比较重要的 AIX 7 内存管理功能,包括虚拟内存管理器是如何工作的以及动态可变的页面大小的影响。通过将这些增强功能的实现应用于系统环境,可以在系统中优化内存性能。

尽管您可能会发现,与其他子系统相比,内存的调优更为困难,但是收到的效果往往更加显著。根据所运行的系统的类型,可能还有一些应该在系统中采用的特定的调优建议。为了帮助说明这些内容,我将使用一个特定的示例并讨论设置这些参数的一些最佳实践。在某些情况下,动态地调整一两个参数可能会使系统的总体性能产生显著的变化。

无论要对哪个子系统进行调优,有一个方面是相同的,即始终应该将系统调优看作一个正在进行的过程。开始对系统进行监视的最佳时间是在首次将系统应用到生产环境中并正常运行时(而不是等到用户抱怨系统性能非常糟糕的时候)。必须在系统正常运行的时候建立系统运行状态的基准,这样在系统可能不正常时才能确认是否真的有问题。另外,应该一次仅进行一项更改,应该在更改之后尽快捕捉并分析数据,以便判断更改的影响(如果有影响的话)。

内存概述

本节概述与 AIX 7 有关的内存知识。我们将介绍 AIX 7 如何使用虚拟内存来寻址比系统物理内存更大的内存。还将解释 VMM 的工作方式以及它如何处理各种请求。

任何有关内存和 AIX 7 的讨论都必须先介绍 VMM。有时候,令 AIX 新手感到吃惊的是 VMM 处理系统的所有内存请求,而不仅仅是虚拟内存本身。在访问 RAM 时,VMM 需要分配空间,即使是在系统中有足够的物理内存的情况下。它实现分页空间的预分配过程。通过使用这种方法,VMM 在帮助管理实际内存方面扮演了重要的角色,而不仅是在虚拟内存方面。

下面说明它的工作原理。在 AIX 7 中,将所有的虚拟内存段划分为若干个页面。在 AIX 7 中,每个页面的默认大小为 4KB,但是可以根据使用的处理器环境在不同的范围内调整。POWER5+ 或更高版本的处理器也可以使用 64KB、16MB 和 16GB 的页面大小。POWER4 架构也可以支持 16MB 的页面大小。16MB 的页面称为大页面,16GB 称为超大页面,它们用于内存需求非常大的应用程序。

在 POWER6 中,引入了可变页面大小支持(VPSS),这意味着当应用程序需要更大的内存块时,系统将使用更大的页面。可以在 OS 中同时使用不同的页面大小,不同的应用程序使用不同的页面大小。另外,可以动态地改变页面大小,这会收集 4KB 页面以形成 64KB 的页面。这让应用程序能够访问更大的内存块,而不是许多小内存块,从而提高性能。页面大小可以动态地从 4KB 改为 64KB。可以使用 vmo 调优工具管理 VPSS 的调优。

所分配的页面可以位于 RAM 或者分页空间(存储在磁盘上的虚拟内存)。VMM 还维护一个称为空闲列表 的对象,此对象定义为未分配的页帧。它们用于处理缺页的情况。通常存在非常少的未分配页面(可以自行配置),VMM 使用这些页面来腾出空间并为其重新分配页帧。使用 VMM 的页面置换算法来选择要重新分配页帧的虚拟内存页面。这种分页算法决定对当前位于 RAM 中的哪些虚拟内存页面的页帧进行回收,并放回到空闲列表中。AIX 7 使用所有可用的内存,除了那些配置为未分配并用作空闲列表的内存之外。

要重申的是,VMM 的目的是管理 RAM 和虚拟页面的分配。由此可以看出,它的目标是帮助最大限度地缩短缺页响应时间,并在可能的情况下减少虚拟内存的使用。由于要在 RAM 和分页空间之间进行选择,在 RAM 可用的情况下,大多数人显然都更希望使用物理内存。VMM 还将虚拟内存段划分为两个不同的类别。它们是使用计算内存的工作段和使用文件内存的持久段。了解这两个类别之间的区别是非常重要的,因为这有助于实现系统的最优化。

计算内存

当进程对计算信息进行实际处理时,将使用计算内存。这些工作段是临时的(暂时的),当进程终止或者页面被偷取时,这些工作段将不复存在。它们没有对应的持久磁盘存储位置。在许多情况下,当一个进程终止时,会释放其物理内存和分页空间。在监视系统的过程中,当可用页面数量出现较大的峰值时,可以发现这种情况。当空闲的物理内存较少时,可以将最近没有使用过的程序从 RAM 转移到分页空间,以帮助释放物理内存,从而完成更多的实际工作。

文件内存

与计算内存不同,文件内存使用持久段并在磁盘上有持久存储位置。数据文件或者可执行程序通常都映射到持久段,而不是工作段。数据文件可以与文件系统相关,如 JFS、JFS2 或 NFS。它们一直都位于内存中,直到文件被卸载、页面被偷取或者取消到文件的链接。在将数据文件复制到 RAM 中之后,VMM 控制何时对这些页面进行覆盖或者使用它们存储其他数据。在可以选择的情况下,大多数人更希望将文件内存换出到磁盘,而不是换出计算内存。

当进程引用磁盘上的某个页面时,必须将其换入,这可能会导致将其他页面换出。VMM 一直在后台运行,尝试使用前面介绍的页面置换算法偷取最近没有引用过的页帧。它还帮助检测系统颠簸,当内存量非常低并且不断地换入和换出页面以支持处理时,可能会出现系统颠簸。VMM 实际上采用一种内存负载控制算法,它可以检测系统是否出现颠簸并尝试解决这种情况。如果不加以处理,系统颠簸可能会导致系统停滞,因为内核过分地关注于为页面腾出空间,而不是完成任何有实际意义的工作。

活动内存扩展

除了核心内存设置和环境之外,AIX 7 还可以利用 POWER7 CPU 提供活动内存扩展(AME)。

AME 压缩内存中的数据,这样就可以在内存中保存更多的数据,还可以减少在装载数据时换出到磁盘的页面数量。AME 的配置针对各个 LPAR,因此可以为数据库分区启用它,以便在内存中保存更多从磁盘读取的数据,同时对 web 服务器禁用它(对于 web 服务器,存储在内存中的信息经常要换出)。

为了避免压缩所有信息,内存划分为两个池,一个压缩的池和一个不压缩的池。AIX 7 会根据逻辑分区的工作负载和配置自动地调整这两个池的大小。用压缩率定义压缩量,例如如果分配给 LPAR 的内存量是 2048MB,可以指定压缩率为 2.0,那么有效的内存容量就是 4096MB。

因为不同的应用程序和环境能够采用不同的压缩率(例如,使用大量文本的应用程序可以受益于比较高的压缩率),可以使用 amepat 命令进行监视,判断对于给定的工作负载可能实现的压缩率。

在运行正常应用程序的同时,在后台以一定的时间间隔(以分钟为单位)运行 amepat 一定的次数。这会提供在 LPAR 中使用的压缩率的建议。在 清单 1 中可以看到一个示例。

清单 1. 获取活动内存扩展统计数据
Command Invoked                : amepat 1 1 

Date/Time of invocation        : Fri Aug 13 11:43:45 CDT 2010
Total Monitored time           : 1 mins 5 secs
Total Samples Collected        : 1

System Configuration:
---------------------
Partition Name                 : l488pp065_pub
Processor Implementation Mode  : POWER7
Number Of Logical CPUs         : 4
Processor Entitled Capacity    : 0.25
Processor Max. Capacity        : 1.00
True Memory                    : 2.00 GB
SMT Threads                    : 4
Shared Processor Mode          : Enabled-Uncapped
Active Memory Sharing          : Disabled
Active Memory Expansion        : Disabled

System Resource Statistics:               Current
---------------------------          ----------------
CPU Util (Phys. Processors)               0.04 [  4%]
Virtual Memory Size (MB)                  1628 [ 79%]
True Memory In-Use (MB)                   1895 [ 93%]
Pinned Memory (MB)                        1285 [ 63%]
File Cache Size (MB)                       243 [ 12%]
Available Memory (MB)                      337 [ 16%]

Active Memory Expansion Modeled Statistics         :
-------------------------------------------
Modeled Expanded Memory Size :   2.00 GB
Achievable Compression ratio   :2.10

Expansion    Modeled True      Modeled              CPU Usage  
Factor       Memory Size       Memory Gain          Estimate     
---------    -------------     ------------------   -----------     
     1.00          2.00 GB         0.00 KB [  0%]   0.00 [  0%]
     1.14          1.75 GB       256.00 MB [ 14%]   0.00 [  0%]

Active Memory Expansion Recommendation:
---------------------------------------
The recommended AME configuration for this workload is to configure the LPAR
with a memory size of 1.75 GB and to configure a memory expansion factor
of 1.14.  This will result in a memory gain of 14%. With this 
configuration, the estimated CPU usage due to AME is approximately 0.00 
physical processors, and the estimated overall peak CPU resource required for
the LPAR is 0.04 physical processors.

NOTE: amepat's recommendations are based on the workload's utilization level
during the monitored period. If there is a change in the workload's utilization
level or a change in workload itself, amepat should be run again.

amepat 报告的活动内存扩展 CPU 使用量只是估计值。根据工作负载不同,AME 实际的 CPU 使用量可能更低或更高。

可以使用 svmon 工具监视 LPAR 中当前的压缩情况,见 清单 2

清单 2. 使用 svmon 获取压缩统计数据
# svmon -G -O summary=longame,unit=MB
Unit: MB
Active Memory Expansion
--------------------------------------------------------------------
Size     Inuse   Free  DXMSz UCMInuse CMInuse TMSz    TMFr
1024.00 607.91 142.82 274.96 388.56   219.35   512.00 17.4
CPSz CPFr txf cxf CR
106.07 18.7 2.00 1.46 2.50

在这里,DXMSz 栏非常重要,它表示扩展内存的赤字。当无法达到指定的压缩率,系统开始使用无法通过压缩节省出的内存时,就会出现赤字。因此,应该注意不要指定过高的压缩率。

AME 的另一个重要问题是,vmstat 等大多数工具显示的内存大小通常是扩展内存的大小(即配置的内存乘以压缩率),而不是实际内存大小。要想查明在不压缩的情况下可用的实际内存,应该在不同工具的输出中寻找真实内存大小。


调优

我们来研究一些可以用来调优 VMM 以优化系统性能的工具。下面是一个环境示例,我们要在其中使用某种方法进行参数调优。我要介绍一些需要注意的关键参数。

在 AIX 7 中,由 vmo 工具负责 VMM 系统的可调参数的所有配置。它替代 AIX 5 中的 vmtune 工具。

更改页面大小可以最直接地提高性能,这是因为 Translation Lookaside Buffer (TLB) 现在可以映射到更大的虚拟内存范围,从而提高 TLB 的命中率。例如,对于高性能计算(HPC)或 Oracle ® 数据库,无论是在线事务处理(OLTP)还是数据仓库应用程序,都可以受益于大页面的使用。这是因为 Oracle 使用大量的虚拟内存,特别是对于其系统全局区域(SGA),这个区域用于缓存表数据和其他东西。

清单 3 中的命令分配 16777216 字节以提供 128 个大页面。

清单 3. 分配字节
# vmo -r -o lgpg_size=16777216 lgpg_regions=128

如果希望与 HPC 和数据库应用程序中常用的共享内存结合使用大页面,还需要设置 v_pnshm 值:# vmo -p -o v_pinshm=1

最重要的 vmo 设置是 minpermmaxperm。将这些参数设置为适合自己系统的值,以确保针对计算内存或者文件内存进行优化。在大多数情况下,并不希望换出工作段,因为这样做会导致系统进行不必要的页面换出,会降低性能。以前,它的工作方式非常简单:如果文件页面数量(numperm%)大于 maxperm%,那么页面置换过程仅偷取文件页面。当它小于 minperm 时,可以偷取文件页面和计算页面。如果它的值介于两者之间,那么仅偷取文件页面,除非重新分页的文件页面的数量大于计算页面。还有另一种考虑方法,如果 numperm 大于 maxperm,就开始偷取持久的存储。基于这种原理,以前调整 minpermmaxperm 参数的方法是,将 maxperm 设置为小于 20,将 minperm 设置为小于等于 10。通常使用这种方法来优化数据库服务器。

现在调优方法完全不一样了。新的方法将 maxperm 设置为一个比较高的值(例如,大于 80),并确保将 lru_file_repage 参数设置为 0。lru_file_repage 是在带 ML4 的 AIX Version 5.2 和 AIX Version 5.3 的 ML1 中首次引入的。这个参数表示是否应该考虑 VMM 重分页计数,以及它应该偷取什么类型的内存。默认设置为 1,所以需要更改它。当将这个参数设置为 0 时,它告诉 VMM 希望仅偷取文件页面,而不是计算页面。如果 numperm 小于 minperm 或者大于 maxperm,那么情况会发生变化,这正是希望将 maxperm 设置得较高而将 minperm 设置得较低的原因。我们不要忘记一个事实:对这些值进行调优的主要原因是希望保护计算内存。回到前面的示例,Oracle 使用它自己的缓存,同时使用 AIX 7 文件缓存只会产生混乱,所以希望停止它。在这个场景中,如果降低 maxperm,那么会错误地停止正在运行的应用程序缓存程序。

清单 4 设置这些关键的调优参数。

清单 4. 设置调优参数
vmo -p -o minperm%=5
vmo -p -o maxperm%=90
vmo -p -o maxclient%=90

尽管您已经习惯于更改这些参数,但是现在只需保持 strict_maxpermstrict_maxclient 的默认值即可。如果将 strict_maxperm 改为 1,那么它将对可用于持久文件缓存的内存量设置硬限制。通过将 maxperm 值作为缓存的上限实现这一点。现在,没有必要这样做,因为并不希望使用 AIX 7 文件缓存,所以更改 lru_file_repage 参数是更有效的调优方法。

还有两个重要的参数需要注意,它们是 minfreemaxfree。如果空闲列表中的页面数降低到低于 minfree 参数,那么 VMM 开始偷取页面(仅仅是为了把页面添加到空闲列表中),这样做并不好。它将继续进行这种操作,直到空闲列表至少包含 maxfree 参数中指定的页面数。

在较早版本的 AIX 中,当 minfree 设置为默认值 120 时,常常会看到空闲列表为 120 或者更低,这会导致进行不必要的分页;更糟糕的是,这会阻塞那些需要空闲帧的线程,因为这个值设置得过低了。为了解决这个问题,在 AIX Version 5.3 中,将 minfreemaxfree 的默认值分别提高到了 960 和 1088。如果正在运行 AIX Version 5.2 或者更低的版本,建议采用下面的设置,可以使用 清单 5 中的命令手动更改。

清单 5. 手动设置 minfreemaxfree 参数
vmo -p -o minfree=960
vmo -p -o maxfree=1088

配置可变页面大小支持

VPSS 通过使用默认的 4KB 页面大小起作用。假设给应用程序分配了 16 个 4KB 的块,当前所有的块都在使用,那么它们被提升为一个 64KB 的块。重复执行这个过程,处理应用程序正在使用的连续 16 个 4KB 块的所有序列。

两个可配置参数控制 VPSS 的运行方式。第一个参数启用多种页面大小支持。通过 vmo 配置的 vmm_support 可调项设置 VPSS 的运行方式。0 值表示只支持 4KB 和 16MB 的页面大小。1 值允许 VMM 使用处理器支持的所有页面大小。2 值允许 VMM 对每个段使用多种页面大小,这是所有全新安装的默认设置。

在启用多种页面大小支持的情况下,vmm_default_pspa 参数控制提升为 64KB 页面需要多少个连续的 4KB 页面。一些应用程序(尤其是使用大量内存的应用程序)使用 64KB 页面大小可能性能更好,即使它们不使用完整的 64KB 页面。

在这种情况下,可以使用 vmm_default_pspa 参数指定提升需要的 4KB 页面数小于 16 个,表示为百分数形式。默认值 0 表示需要 16 个页面。50 表示只需要 8 个页面。0 值表示把所有 4KB 页面提升为 64KB 页面。


结束语

如前所述,在对 AIX 7 进行优化或监视之前,必须建立一个基准。在进行调优之后,必须捕捉数据并分析更改的结果。如果没有这类信息,就无法真正了解调优工作的实际效果。在本系列的第 1 部分中,我们讨论了使用 VMM 提升系统内存容量的效果。还对一个 Oracle 系统进行了调优以优化内存子系统的使用。研究了一些重要的内核参数、它们的作用以及如何对它们进行调优,包括如何最适当地使用可变页面大小支持。

第 2 部分重点关注系统监视的细节,以确定内存瓶颈并分析趋势和结果。第 3 部分重点关注分页空间和对 VMM 进行调优以尽可能提高性能的其他方法。

参考资料

学习

  • AIX memory affinity support:通过 IBM System p™ and AIX 信息中心了解关于 AIX 内存的更多信息。
  • IBM Redbooks:“Database Performance Tuning on AIX” 帮助系统设计人员、系统管理员和数据库管理员设计、规划、实现、维护、监视和优化 AIX 上的 Relational Database Management System (RDMBS),从而实现最佳性能。
  • "Power to the people"(developerWorks,2004 年 5 月):阅读这篇文章,以了解 IBM 在芯片制造方面的历史。
  • "AIX 中的处理器关联"(developerWorks,2006 年 11 月):使用进程关联设置对线程进行绑定或取消绑定,这有助于找到麻烦的挂起或死锁问题的原因。通过阅读这篇文章了解如何使用处理器关联对进程进行限制,让进程只在指定的 CPU 上运行。
  • "CPU monitoring and tuning"(2002 年 3 月):了解如何使用标准的 AIX 工具帮助判断 CPU 瓶颈。
  • Operating system and device management:IBM 的这份文档向用户和系统管理员提供全面的系统管理和设备管理信息,可以帮助您在执行各种任务时选择适当的选项,比如系统备份和恢复系统、管理物理和逻辑存储以及调整分页空间。
  • "nmon 性能:分析 AIX 和 Linux® 性能的免费工具"(developerWorks,2006 年 2 月):这个免费工具可以在一个屏幕上提供大量的信息。
  • "nmon analyser —— 生成 AIX 性能报告的免费工具"(developerWorks,2006 年 4 月):通过阅读这篇文章,了解如何从 nmon 的输出生成各种便于报告的图表。
  • AIX 7.1 信息中心 提供 AIX 操作系统的技术信息。
  • The IBM AIX Version 6.1 Differences Guide 有助于了解 AIX 6.1 中的变动。
  • AIX and UNIX 专区:developerWorks 的“AIX and UNIX 专区”提供了大量与 AIX 系统管理的所有方面相关的信息,您可以利用它们来扩展自己的 UNIX 技能。
  • AIX and UNIX 新手入门:访问“AIX and UNIX 新手入门”页面可了解更多关于 AIX 和 UNIX 的内容。
  • AIX and UNIX 专题汇总:AIX and UNIX 专区已经为您推出了很多的技术专题,为您总结了很多热门的知识点。我们在后面还会继续推出很多相关的热门专题给您,为了方便您的访问,我们在这里为您把本专区的所有专题进行汇总,让您更方便的找到您需要的内容。
  • AIX and UNIX 下载中心:在这里你可以下载到可以运行在 AIX 或者是 UNIX 系统上的 IBM 服务器软件以及工具,让您可以提前免费试用他们的强大功能。
  • IBM Systems Magazine for AIX 中文版:本杂志的内容更加关注于趋势和企业级架构应用方面的内容,同时对于新兴的技术、产品、应用方式等也有很深入的探讨。IBM Systems Magazine 的内容都是由十分资深的业内人士撰写的,包括 IBM 的合作伙伴、IBM 的主机工程师以及高级管理人员。所以,从这些内容中,您可以了解到更高层次的应用理念,让您在选择和应用 IBM 系统时有一个更好的认识。
  • 在 AIX 和 UNIX 库中搜索以下主题:

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=AIX and UNIX
ArticleID=607097
ArticleTitle=优化 AIX 7 内存性能: 第 1 部分,内存概述和内存参数的调优
publish-date=01102011