连续内存优化
连续内存优化程序动态地运行页面整合和提升。
动态变量页面大小支持
AIX® Version 6.1 的功能将稀疏引用的内存区域中 4 KB 页面大小的保守内存使用量与密集引用的内存区域中 64 KB 页面大小的性能优势相结合,自动无需用户干预,称为动态可变页面大小支持 (DVPSS)。
DVPSS 基于POWER6的能力,可在单个网段内支持混合页面大小。 体系结构支持不同页面大小的各种排列; 但是 POWER6 支持组合 4 KB 和 64 KB 页面大小。
变量页面大小段的缺省设置在 64 KB 大小并且对齐的区域内使用 4 KB 的页面和 4 KB 的转换,直到所有 16 个 4 KB 页面被引用。 当引用了所有 16 个页面时,DVPSS 将检查状态以具有相同状态(例如,相同的读取或写入页面保护、无执行保护、存储密钥保护和非 I/O 状态)。 如果它们确实处于相同的状态,那么将除去 4 KB 转换并替换为 64 KB 转换。
连续程序优化代理程序 (CPOagent)
对于操作系统支持的 DVPPS 方法,其限制是,必须在将页面大小提升到 64 KB 之前引用所有 16 个 4KB 页面。 CPOagent 通过使用连续内存优化(动态执行页面整合和提升)来解决这一限制。 此功能适用于 AIX 6.1 技术级别 6 及更高版本。
您可以在以下位置访问 CPOagent:
usr/lib/perf/CPOagent语法
CPOagent [-f 配置文件]
标志
| 项 | 描述 |
|---|---|
| -f | 更改缺省配置文件名称。 如果未指定此选项,那么将假定文件名位于 /usr/lib/perf/CPOagent.cf 文件位置。 |
缺省情况下,CPOagent 不会运行。 root 用户能够显式启动 CPOagent。 启动后,CPOagent 在后台运行以标识可通过更大页面大小获益的候选进程。 将根据超过指定阈值的内存和处理器使用率来标识候选进程。
注: CPOagent 当前可以将页面大小提升到 64 KB。
CPOagent 配置文件
CPOagent 启动时,将读取并解析配置文件中的信息。 配置文件是一个具有各种字段的节文件,该节文件包含:
TCPU=<n1>
TMEM=<n2>
PATI=<n3>
PATM=<n4>
PPTS=<n5>
TOPM=<n6>
PFLR=<c>配置文件中字段的描述如下所示:
| 字段 | 描述 |
|---|---|
| tcpu | 以百分比为单位来指定每个进程的 CPU 使用率阈值 缺省值:25 最小值:10 最大值:100 |
| tmem | 以 MB 为单位指定每个进程的内存使用阈值 缺省值:1 最小值:1 |
| 路径 | 以分钟为单位来指定页分析时间间隔 (PATI)。 它指定分析候选进程(用以标识可以整合并提升到更高大小的页面)的时间间隔。 缺省值:15 最小值:5 最大值:60 |
| 路径 | 以秒为单位来指定页分析时间监视器 (PATM)。 它指定要收集多长时间的页面使用率统计信息以标识要进行页面整合和提升的候选页面。 缺省值:30 最小值:5 最大值:180 |
| PPTS | 指定页面提升触发器样本 (PPTS)。 它用于指定在触发页面提升之前要收集的样本数量。 缺省值:4 最小值:4 |
| TOPM | 指定要进行页面整合和提升而必须考虑的每个 CPU 的最高 CPU 使用进程数。 缺省值:2 最小值:1 |
| PFLR | 指定通配符和进程,它们与 CPOagent 针对页面整合和提升而考虑的通配符相匹配。 这称为进程过滤器通配符 (PFLR)。 |
使用 CPOagent 的优点
使用 CPOagent 机制的优点包括:
- 应用程序对于更改是透明的。 因此,无需对应用程序进行更改。
- 将根据管理员在 CPOagent.cf 文件中设置的策略来运行页面提升,页面提升取决于对 CPU 和内存资源的工作负载需求。 这有助于高效地提升页面。 此进程允许对动态变量页面大小支持进行细粒度控制,从而确保为具有某个需求的应用程序运行页面提升。
样本方案
请考虑正在系统上运行的应用程序
StressEngine。 该应用程序消耗大量 CPU 和内存。 如果没有 CPOagent,那么直到引用了某一特定段的所有 16 个页面并且这些页面均处于相同状态之后,StressEngine 应用程序才能利用动态变量页面大小支持。 页面大小可以通过 svmon 命令所生成的进程报告来检查。# svmon -P 8454254 -O pgsz=on,unit=MB,segment=on
Unit: MB
-------------------------------------------------------------------------------
Pid Command Inuse Pin Pgsp Virtual
8454254 StressEngine 157.87 42.3 0 157.84
PageSize Inuse Pin Pgsp Virtual
s 4 KB 64.2 0.02 0 64.2
m 64 KB 93.7 42.3 0 93.7
Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual
86f49b 2 work process private s 64.1 0.02 0 64.1
9000 d work shared library text m 47.9 0 0 47.9
8002 0 work fork tree m 45.8 42.3 0 45.8
children=939b1c, 0
80fdc3 f work shared library data s 0.09 0 0 0.09
85fd37 1 clnt code,/dev/hd1:10 s 0.02 0 - -如果 CPOagent 已启动,并且具有以下样本 CPOagent.cf 文件--------------------------------------------
TCPU=25
TMEM=50
PATI=15
PATM=30
PPTS=4
TOPM=2
PFLR=Stress*
--------------------------------------------
根据配置文件,CPOagent 周期为 15 分钟 (PATI =15)。 对于特定 15 分钟时间间隔,CPOagent 监视正在运行的进程的 CPU 和内存使用情况。 符合以下条件的前两个进程 (TOPM =2):进程名称中包含 Stress (PFLR = Stress*);CPU 使用超过 25% (TCPU =
25);内存使用超过 50 MB (TMEM = 50),将为页面整合和提升的候选进程。 此进程通过在触发用于页面整合和提升的算法之前收集四个样本 (PPTS = 4) 来进行验证。 此外,将收集页面使用统计信息 30 秒 (PATM =30) 以标识页面提升和整合的候选页面。 现在,在运行 CPOagent 的情况下,将不会等待引用所有 16 个特定段页面。 CPOagent 通过引用 CPOagent.cf 配置文件以及应用程序对 CPU 和内存资源的需求来评估应用程序是否需要页面整合和提升。 提升的页面在 svmon 命令所生成的进程报告中显而易见。# svmon -P 8454254 -O pgsz=on,unit=MB,segment=on
Unit: MB
-------------------------------------------------------------------------------
Pid Command Inuse Pin Pgsp Virtual
8454254 StressEngine 157.87 42.3 0 157.84
PageSize Inuse Pin Pgsp Virtual
s 4 KB 64.2 0.02 0 64.2
m 64 KB 93.7 42.3 0 93.7
Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual
86f49b 2 work process private sm 64.1 0.02 0 64.1
9000 d work shared library text m 47.9 0 0 47.9
8002 0 work fork tree m 45.8 42.3 0 45.8
children=939b1c, 0
80fdc3 f work shared library data sm 0.09 0 0 0.09
85fd37 1 clnt code,/dev/hd1:10 s 0.02 0 - -