AIX paging space过分的分析与解决.docx
《AIX paging space过分的分析与解决.docx》由会员分享,可在线阅读,更多相关《AIX paging space过分的分析与解决.docx(13页珍藏版)》请在冰豆网上搜索。
AIXpagingspace过分的分析与解决
AIX中PagingSpace使用率过高的分析与解决
金源(rollinjin@),硕士
金源,硕士,毕业于复旦大学,主要从事WEB应用的开发,感兴趣的领域包括系统性能调优、WEB2.0的开发、RUP和SOA等。
通过rollinjin@可以和他联系。
简介:
AIX操作系统中的PagingSpace是很重要的设备,PagingSpace使用率过高将影响系统整体性能,甚至会造成系统挂起。
文中对PagingSpace使用率过高的常见原因进行了分析,并给出了相应的解决方案。
发布日期:
2006年9月14日
级别:
初级
访问情况:
10381次浏览
评论:
0 (查看 | 添加评论-登录)
平均分(25个评分)
为本文评分
AIX操作系统中PagingSpace是很重要的设备,当系统中PagingSpace使用率过高、系统内存不足时,将影响系统的整体性能,甚至会造成系统的挂起。
针对这种情况,通常可以靠增加PagingSpace来加以缓解;但是当PagingSpace已经相当大,而PagingSpace使用率仍旧居高不下时,则需要通过进一步的分析来找出原因并加以解决。
文中分析了几种PagingSpace使用率持续增长直至过高的常见原因,并给出了相应的解决方案,以确保PagingSpace使用率被控制在安全的范围内。
1PagingSpace的创建原则
AIX中PagingSpace大小确定的指导原则如下:
∙系统实际内存小于64MB,pagingspace=2*RAM;
∙系统实际内存在64MBto256MB之间,PageSpace=RAMsize+16MB;
∙系统实际内存大于256MB,PageSpace=512+(RAM-256)*1.25;
∙当内存超过4GB时,则需要根据实际情况来定,一般可初始3GB,然后观察pagingspace的使用情况,如果使用率超过70%,则需要增加pagingspace。
此外在创建PagingSpace时还应遵循以下原则以提高性能:
∙创建的数量应尽可能的多;
∙每个PagingSpace的大小应该相同;
∙每个PagingSpace应尽可能的分配在不同的硬盘上。
AIX中可以通过命令lsps-s查看PagingSpace的使用情况。
列TotalPagingSpace给出的是系统总的PagingSpace空间大小,PercentUsed则表示已被占用的PagingSpace的百分比。
命令lsps-a可以用来查看PagingSpace的分布情况
回页首
2文件型内存对PagingSpace使用率的影响
在AIX系统中,内存可以简单的分为两类:
计算型内存和文件型内存。
类似大量文件类操作,如压缩、数据库的dump/load等操作会大量占用文件型内存。
如果按照系统缺省的配置,文件型内存最多会占用到内存总量的80%,由于文件型内存占用并不主动释放,从而可能造成内存资源的短缺及PagingSpace使用率过高。
命令topas可以用来查看文件型内存占用内存情况,在MEMORY一栏中的%Noncomp显示的是文件型内存的占用百分比。
如果文件型内存所占比例很高,而PagingSpace使用率居高不下时,可以通过降低minperm、maxperm的参数值来进行调优,减少文件型内存可占用的份额。
在进行调整前,首先通过命令vmo-a/vmtune-a来查看目前的参数值;minperm及maxperm的缺省值分别是30%和80%。
随后根据当前的值来确定minperm、maxperm新的参数值,并通过命令vmo及参数p和P来进行设定。
如需将minperm、maxperm的值分别设为15%和30%可用命令vmo-p15-P30来实现。
因为参数maxperm充当的是软限制,所以文件型内存的占用率依旧可以超过maxperm的设定值。
如果需要进行强制限制,则需要将参数strict_maxperm的值设为1,该参数的缺省值为0,但此方法需谨慎使用。
回页首
3应用程序内存泄露对PagingSpace使用率的影响
应用程序的内存泄露也是造成PagingSpace使用率不断增长的另一常见原因,此类情况的解决方法主要是找出内存泄露的应用,然后进行修正或安装补丁。
以下方法可用来找出发生内存泄露的应用:
该命令每m秒钟按降序列出前n个最耗内存进程。
为了便于分析,可以将结果输出到文件中,然后对内容进行分析,从而找出内存泄露的应用。
下例中命令svmon-P-t10-i5的结果被输出到文件svmonresult.txt中,该命令每5秒种输出一次最耗内存的前10个进程。
找出发生内存泄露的应用后可自行进行修正或查找相关的补丁进行安装。
回页首
4数据库参数配置对PagingSpace使用率的影响
在装有数据库的系统环境中,数据库相关参数的设置不当也容易造成PagingSpace的占用率过高。
以DB2为例,因为DB2使用自己的缓冲池进行数据缓存,所以其所能占用的内存量不受参数maxperm的控制,而是由自身的参数值来决定。
数据库占用的内存过多并且不及时释放的话同样会造成PagingSpace使用率的持续增长乃至耗尽,本节中采用DB2的设置为例来对此类情况进行说明。
就PagingSpace使用率而言,DB2的相关参数中需要特别关注的有DB2MEMDISCLAIM、DB2MEMMAXFREE、NUM_POOLAGENTS、ESTORE_SEG_SZ及NUM_ESTORE_SEGS。
其中DB2MEMDISCLAIM、DB2MEMMAXFREE、NUM_POOLAGENTS与DB2中代理的私有内存相关,而ESTORE_SEG_SZ、NUM_ESTORE_SEGS则决定扩展缓冲池的大小。
AIX中,注册变量DB2MEMDISCLAIM指明当程序停止时DB2UDB是否应该释放其占用的全部或部分内存。
DB2MEMDISCLAIM保持缺省值YES,则在DB2MEMMAXFREE的值为空时,程序结束后释放所有相关内存,否则只保留DB2MEMMAXFREE值大小的内存量,该值缺省为8M。
如果DB2MEMDISCLAIM的值被改为NO,则程序结束后内存不会被释放。
NUM_POOLAGENTS指定了DB2中可以保留的空闲代理的最大数目,如果该值过大,将会有大量的内存被空闲代理占用。
如NUM_POOLAGENTS的值为125,DB2MEMMAXFREE的值为8M,在DB2MEMDISCLAIM为YES时将最多有约1G的内存被空闲代理占用。
因此,当PagingSpace使用率偏高时,可以尝试查看DB2MEMDISCLAIM、DB2MEMMAXFREE、NUM_POOLAGENTS的值来确保没有过多的内存被DB2代理所占用。
如果空闲代理占用内存太多,则需要调整DB2MEMMAXFREE、NUM_POOLAGENTS的值来削减。
DB2MEMDISCLAIM、DB2MEMMAXFREE的值可用db2set命令来查看和设定;NUM_POOLAGENTS的值则可以通过以下步骤来查看和修改:
DB2中除了主缓冲池之外还经常用到扩展缓冲池,扩展缓冲池的大小也是决定内存使用量的一个重要因素。
扩展缓冲池(EXTENDEDSTORAGE)充当的是缓冲池中被换出页的辅助缓存,它的存在可以减少I/O操作,提高查询速度。
通常扩展缓冲池占用的内存不会主动释放,因此如果扩展缓冲池过大,随着时间的增加、缓冲池占用的内存量的不断增长,有相当大的可能造成内存资源的短缺、PagingSpace使用率过高。
扩展缓冲池的大小是由参数ESTORE_SEG_SZ、NUM_ESTORE_SEGS共同决定的,通过以下命令可以查看它们的值:
扩展缓冲池最多占用内存的计算方式如下:
假如系统中共有3个配置相同的DB,ESTORE_SEG_SZ的值为16000,NUM_ESTORE_SEGS的值为65,页面大小为4K,则扩展缓冲池最多可占用的内存为:
ESTORE_SEG_SZ、NUM_ESTORE_SEGS的参数值设定可以通过如下命令来实现:
DB2中还有其他一些参数决定着内存的使用情况,但是当发现内存占用后不释放的情况时,可以考虑首先查看本节中提到的相关参数。
对于其他的数据库,同样也需要注意一些类似参数值的设置,避免造成对内存的过量占用,从而造成对系统整体性能的影响。
回页首
5结束语
文中针对AIX中PagingSpace使用率过高的问题,分别从文件型内存、应用程序内存泄露和数据库参数配置三个方面进行了分析,并给出了相关的解决方法。
AIX操作系统中PagingSpace是很重要的设备,当系统中PagingSpace使用率过高、系统内存不足时,
将影响系统的整体性能,甚至会造成系统的挂起。
针对这种情况,通常可以靠增加PagingSpace来加
以缓解;但是当PagingSpace已经相当大,而PagingSpace使用率仍旧居高不下时,则需要通过进一
步的分析来找出原因并加以解决。
文中分析了几种PagingSpace使用率持续增长直至过高的常见原因,
并给出了相应的解决方案,以确保PagingSpace使用率被控制在安全的范围内。
1PagingSpace的创建原则
AIX中PagingSpace大小确定的指导原则如下:
系统实际内存小于64MB,pagingspace=2*RAM;
系统实际内存在64MBto256MB之间,PageSpace=RAMsize+16MB;
系统实际内存大于256MB,PageSpace=512+(RAM-256)*1.25;
当内存超过4GB时,则需要根据实际情况来定,一般可初始3GB,然后观察pagingspace的使用情况,如果使用率超过70%,则需要增加pagingspace或把OS中的min_perm%,max_perm%和max_client%参数调小一点
。
此外在创建PagingSpace时还应遵循以下原则以提高性能:
创建的数量应尽可能的多;
每个PagingSpace的大小应该相同;
每个PagingSpace应尽可能的分配在不同的硬盘上。
AIX中可以通过命令lsps-s查看PagingSpace的使用情况。
列TotalPagingSpace给出的是系统总的PagingSpace空间大小,PercentUsed则表示已被占用的PagingSpace的百分比。
eg:
#lsps-s
TotalPagingSpace PercentUsed
16384MB 1%
命令lsps-a可以用来查看PagingSpace的分布情况
#lsps-a
PageSpace PhysicalVolume VolumeGroup Size%UsedActive Auto Type
hd6 hdisk0 rootvg 16384MB 1 yes yes lv
2文件型内存对PagingSpace使用率的影响
在AIX系统中,内存可以简单的分为两类:
计算型内存和文件型内存。
类似大量文件类操作,如压缩、
数据库的dump/load等操作会大量占用文件型内存。
如果按照系统缺省的配置,文件型内存最多会占
用到内存总量的80%,由于文件型内存占用并不主动释放,从而可能造成内存资源的短缺及PagingSpace
使用率过高。
命令topas可以用来查看文件型内存占用内存情况,在MEMORY一栏中的%Noncomp显示的是文件型内存的占用百分比。
TopasMonitorforhost:
hostname EVENTS/QUEUES FILE/TTY
FriJul3113:
15:
392009 Interval:
2 Cswitch 1489 Readch 2896.8K
Syscall 7341 Writech 17338
Kernel 1.2 |# | Reads 327 Rawin 0
User 18.0 |###### | Writes 13 Ttyout 373
Wait 13.4 |#### | Forks 0 Igets 0
Idle 67.5 |#################### | Execs 0 Namei 33
Runqueue 1.5 Dirblk 0
Network KBPS I-Pack O-Pack KB-In KB-Out Waitqueue 0.0
en2 2.5 8.0 4.0 1.3 1.2
en0 1.1 2.0 2.0 0.4 0.7 PAGING MEMORY
lo0 0.0 0.0 0.0 0.0 0.0 Faults 174 Real,MB 7808
Steals 0 %Comp 83.3
Disk Busy% KBPS TPSKB-ReadKB-Writ PgspIn 0 %Noncomp 2.5
hdisk3 27.5 2924.0 322.0 2910.0 14.0 PgspOut 0 %Client 3.2
hdisk0 1.0 4.0 1.0 2.0 2.0 PageIn 1
hdisk1 0.5 2.0 0.5 0.0 2.0 PageOut 1 PAGINGSPACE
dac0 0.0 0.0 0.0 0.0 0.0 Sios 2 Size,MB 16384
dac0-utm 0.0 0.0 0.0 0.0 0.0 %Used 0.6
dac5 0.0 2924.0 322.0 2910.0 14.0 NFS(calls/sec) %Free 99.3
dac5-utm 0.0 0.0 0.0 0.0 0.0 ServerV2 0
dac2 0.0 0.0 0.0 0.0 0.0 ClientV2 0 Press:
dac4 0.0 0.0 0.0 0.0 0.0 ServerV3 0 "h"forhelp
cd0 0.0 0.0 0.0 0.0 0.0 ClientV3 0 "q"toquit
dac4-utm 0.0 0.0 0.0 0.0 0.0
hdisk2 0.0 0.0 0.0 0.0 0.0
dac2-utm 0.0 0.0 0.0 0.0 0.0
Name PID CPU% PgSpOwner
oracle 438598 22.1 7.2oracle
oracle 741490 3.6 5.5oracle
topas 975296 0.3 2.1root
oracle 897480 0.0 4.2oracle
hats_nim 225330 0.0 1.8root
aioserve 242162 0.0 0.1root
oracle 901544 0.0 4.2oracle
gil 28972 0.0 0.1root
aioserve 315456 0.0 0.1root
aioserve 118860 0.0 0.1root
aioserve 381290 0.0 0.1root
aioserve 323656 0.0 0.1root
hatsd 151846 0.0 8.2root
oracle 188724 0.0 7.1oracle
如果文件型内存所占比例很高,而PagingSpace使用率居高不下时,可以通过降低minperm、maxperm的
参数值来进行调优,减少文件型内存可占用的份额。
在进行调整前,首先通过命令vmo-a/vmtune-a来查看目前的参数值;minperm及maxperm的缺省值分别
是30%和80%。
#vmo-a
cpu_scale_memp=8
data_stagger_interval=161
defps=1
force_relalias_lite=0
framesets=2
htabscale=n/a
kernel_heap_psize=4096
large_page_heap_size=0
lgpg_regions=0
lgpg_size=0
low_ps_handling=1
lru_file_repage=1
lru_poll_interval=10
lrubucket=131072
maxclient%=10
maxfree=1088
maxperm=192213
maxperm%=10
maxpin=1613727
maxpin%=80
mbuf_heap_psize=4096
memory_affinity=1
memory_frames=1998848
memplace_data=2
memplace_mapped_file=2
memplace_shm_anonymous=2
memplace_shm_named=2
memplace_stack=2
memplace_text=2
memplace_unmapped_file=2
mempools=0
minfree=960
minperm=96106
minperm%=5
nokilluid=0
npskill=32768
npsrpgmax=262144
npsrpgmin=196608
npsscrubmax=262144
npsscrubmin=196608
npswarn=131072
num_spec_dataseg=0
numpsblks=4194304
page_steal_method=0
pagecoloring=n/a
pinnable_frames=637301
pta_balance_threshold=n/a
relalias_percentage=0
rpgclean=0
rpgcontrol=2
scrub=0
scrubclean=0
soft_min_lgpgs_vmpool=0
spec_dataseg_int=512
strict_maxclient=1
strict_maxperm=0
v_pinshm=1
vm_modlist_threshold=-1
vmm_fork_policy=1#
说明:
(1)minperm%
如果由文件页面占有的实际内存的百分比低于这个级别,则页面替换算法既替换文件页面也替换计算页面,而不管repagerate。
#vmo-a|grepminperm%
minperm%=20
(2)maxperm%
如果由文件页面占有的实际内存的百分比高于这个级别,则页面替换算法仅替换文件页面。
#vmo-a|grepmaxperm%
maxperm%=80
(3)maxclient%
如果由文件页面占有的实际内存的百分比高于这个级别,则页面替换算法仅替换客户机页面。
#vmo-a|grepmaxclient%
maxclient%=80
这三个参数,可以根据内存总量大小,进行适度调节。
计算型内存与文件型内存,在实际的应用中,
需要遵循以下一些原则(这些原则是自己归纳的):
1.使用的文件型内存百分比+使用的计算型内存百分比<100%
2.计算型内存中的pinnedmemory设置要合理,即sga大小要设置合理,要留一部份给OS,OS也需要pinnedmemory.当系统资源紧张时,OS的pinnedmemory具有最高的优先级.
3.保证系统非pinned计算型memory有一个合理的成长空间,这部份主要是给ORACLEPGA使用,当连接数增长过
快时,此内存的使用增长也相当的明显,而此增长很有可能会导致操作系统的交换。
当系统的使用的文件型内存百分比+使用的计算型内存百分比>=100%,系统便开始产生交换,系统的PAGINGSPACE会持续的增长,影响到产品库的安全。
恰当的设置OS内存参数,控制操作系统的交换,可以减少很多系统不稳定的情况发生。
比如说操作系统执行重启命令都执行不了:
shutdown-Fr
当由文件页面占有的实际内