使用 AIX 上的 DB2 版本 9.1 或更高的意外的分页空间增长
问题 (摘要)
分页空间增长可能发生意想不到事情在DB2®/AIX® systems with 64K (medium) 。
症状
未意料的分页空间利用率的增长可能会发生在RAM中,保持应用程序有足够的内存在的DB2/AIX 系统上。这可以使用中型 (64 K) 内存页的DB2/AIX系统观察。虽然从分页本身对性能的影响应是微不足道的随着时间的推移可能耗尽分页空间。此条件通常导致停机。
原因
一个AIX缺陷被发现。当有可用的RAM时,通过AIX APAR IZ67445 - 64K PAGING TAKING PLACE 可以解决。
环境
这个问题影响以下系统的运行:
- DB2 9 或更高
- AIX 5.3 TL05 ,更高或任何级别的AIX 6.1
- p5+硬件或更高
DB2 的内存要求在这些环境中,很大一部分将使用64K内存页
诊断问题
用vmstat监视系统
活动的虚拟内存值将显示系统不受约束, 而且page-outs 将被看见.
[112]bugdbug /home/mcornish > vmstat 1 -t
系统配置: lcpu=16 mem=65536MB
kthr 内存页
----- -------------- -----------------------------------
r b avm fre re pi po fr sr cy
2 1 9286486 5691 7435 1456 0 0 9910 17488
4 2 9244576 39698 6456 3025 21 71 8466 18006
4 1 9236325 5057 5791 316 1 0 5215 12038
"-P all"选项将显示64K 页已启用:
[114]bugdbug /home/mcornish > vmstat -P all
系统配置: mem=65536MB
pgsz 内存页
----- -------------------------- ------------------------------------
siz avm fre re pi po fr sr cy
4K 7087040 6605456 76048 0 0 0 3 11 0
64K 443136 699104 5712 0 0 0 0 0 0
解决问题
当可用的时候升级AIX服务级别包含。直到那时,下列解决方法将导致在 DB2 中使用 4 K 内存页,避免意外的分页方案。请注意可能会降低性能,范围在 0-10%。
升级到包含可用时的阿帕尔 AIX 的服务级别。直到那时,下列解决方法将导致在 DB2 中使用 4 K 内存页,避免意外的分页方案。请注意可能会降低性能,范围在 0-10%。
为了确定64 K页是否可用给定系统上,发出命令"vmstat-P 所有"并检查是否有 64 K 页的行。如果只为 4k 页面的行,64 K 页将不可用,系统不是易受伤害的问题。
为共享内存配置 4k 页面: 于 DB2 9.1,DB2 使用 64 K (中型) 页在 AIX 时可用的共享内存。以下命令修改 DB2 4 K 内存页使用的共享内存。
db2set DB2_MEDIUM_PAGE_SUPPORT=OFF
此注册表变量的更改会对下一步的实例循环有影响。重置要重新启用共享内存的 64 K 页面的注册表变量。
配置专用内存: DB2 9.5 和更高版本的 4k 页面还为专用内存可用时使用 64 K (中型) 页面。
为了配置4K页对私有内存基于DPF系统
1. db2set DB2ENVLIST=LDR_CNTRL
2. add "export LDR_CNTRL=DATAPSIZE=4K" to sqllib/userprofile
这将会对下一步的实例循环生效。删除上述设置和回收要重新启用 64 K 页的实例。
为了配置 DB2 为单个分区的系统上的专用内存使用 4 K 页,以 root 用户发出以下命令:
ldedit-bdatapsize = 4 K /sqllib/adm/db2sysc
应该返回命令:
ldedit: File db2sysc updated.
为了使用此命令,必须停止该实例。
注意必须重复每页修改,任何时候,只要 db2sysc 程序将被替换。这会发生时发出 db2iupdt 命令 或实例迁移。
为了重新启用 64 K 页为专用内存 (默认值),发出命令:
ldedit bdatapsize = 64 K db2sysc
替代的解决方法: 替代的解决方法是增加分页空间来容纳分页空间使用量的增长。除非峰值工作负荷会导致成为受约束系统,配置相当于 RAM 的分页空间应足够应付最坏的情况。