AIX+性能调优.docx
《AIX+性能调优.docx》由会员分享,可在线阅读,更多相关《AIX+性能调优.docx(36页珍藏版)》请在冰点文库上搜索。
AIX+性能调优
AIX性能调优内存篇之一概念
序号
版本号
更改人
日期
备注
1
1.0版
bldmickey
2007-06-16
本章介绍和AIX内存相关的一些基本概念.
物理内存
物理存在的内存,查看命令:
#prtconf|grepMemory
MemorySize:
15936MB
GoodMemorySize:
15936MB
物理内存的分类
(1)persistent(长久型)和work(工作型)内存
Persistent型是指读入到内存的内容本身在文件系统是存在的,例如包含数据的文件,可执行文件;工作型是指进程中的Stack,变量,共享内存段等(workingsegments,asarethekerneltextsegment,thekernel-extensiontextsegments,aswellastheshared-librarytextanddatasegments.),是进程中途产生的。
Persistent型内存被pageout的时候回写到文件系统中,work型内存被pageout的时候回写到pagingspace中.
通过svmon可以看到这两种内存的类型.
#svmon-G
size inuse free pin virtual
memory 4079616 3477314 602302 535874 894316
pgspace 7995392 2915
work pers clnt
pin 535874 0 0
inuse 894316 0 2582998
(2)Computational(计算型)和File(文件型)
Computational型内存包含working-storagesegmentsorprogramtext(executablefiles)segments.也就是包括work(工作型)再加上persistent(长久型)中的可执行文件的部分.File(文件型)是除去计算型的所有内存.Computational型可以理解为读入可执行文件的地方,文件型可以理解为读入文件中的data部分.
可以通过topas看到这两种内存的类型.
MEMORY
Real,MB 15936
%Comp 22.8
%Noncomp 63.3
%Client 63.8
(3)Client类型
Persistent类型的内存进一步被分类,其中client类型的内存被用于mapremotefiles(例如通过NFS访问的文件).EnhancedJFSfilesystem使用clientspage来缓存cache,所以在上面的svmon的结果中看到实际没有persistent的值,而都是clnt的值,因为用的都是EnhancedJFS文件系统.
work pers clnt
pin 535874 0 0
inuse 894316 0 2582998
虚拟内存
虚拟内存是物理内存和PagingSpace组合形成的虚拟内存空间,通过虚拟的地址空间映射到物理内存或者PagingSpace.
Pagingspace
Pagingspace是系统的一个物理存储空间,占用一定的磁盘空间,可以是logicalvolume或者文件的形式.AIX内核需要利用PagingSpace来管理虚拟内存。
和内存页面一样,AIX的PagingSpace也是以4KB为单位,当实际内存数的空闲值低于一定数量以后,系统需要把实际内存中的某些计算页面(ComputationPage)写回到PagingSpace中(pageout),以便释放出实际内存页面用于其他程序。
查看当前pagingspace的命令:
#lsps-a
PageSpace PhysicalVolume VolumeGroup Size%UsedActive Auto Type
hd6 hdisk1 rootvg 31232MB 1 yes yes lv
PageFault
Iftheaccessisgoingtoapageofvirtualmemorythatisstoredovertodisk,orhasnotbeenbroughtinyet,apagefaultoccurs,andtheexecutionoftheprogramissuspendeduntilthepagehasbeenreadfromdisk.查看pagefault的命令:
#sar-r5
Systemconfiguration:
lcpu=8mem=15936MB
10:
28:
12 slotscycle/sfault/s odio/s
10:
28:
177992467 0.00 3.39 0.20
pi(PageIn)
Thenumberofpagespagedinfrompagingspace.从pagingspacepage到内存中的page数目,这些页必定以前被pageout到pagespace中的.通过vmstat查看
#vmstat
Systemconfiguration:
lcpu=8mem=15936MB
kthr memory page faults cpu
---------------------------------------------------------------
r b avm fre re pi po fr sr cy in sy csussyidwa
1 1894750601858 0 0 0 2 3 0 15 861286 0 099 1
po(PageOut)
Thenumber(rate)ofpagespagedouttopagingspace.如果持续看到po但是没有看到pi的增长,并不一定代表出现了Thrashing,比如系统正在读取大量的persistentpages会导致看到大量的pageout,这时候需要查看一下应用的类型.被pageout出去的数据,如果有进程需要再次reference的时候,将产生pagefault,然后通过pagein再次写入到内存.通过vmstat查看
Thrashing
表示系统连续地pagingin和out,经常是系统缺乏内存的现象.
Repage
Pagefault可以是一个新的pagefault,也可以是一个repagefault. Anewpagefaultoccurswhenthereisnorecordofthepagehavingbeenreferencedrecently.Arepagefaultoccurswhenapagethatisknowntohavebeenreferencedrecentlyisreferencedagain,andisnotfoundinmemorybecausethepagehasbeenreplaced(andperhapswrittentodisk)sinceitwaslastaccessed.发生一次pagefault是正常机制,但应该避免发生多次的pagefault,AIX在这里是做了一种统计,分别统计计算型和非计算型内存发生repage的count,我们可以用vmtune去调整这两种内存的page的机制(vmtune-p-P).
AIX性能调优内存篇之二PagingSpace
序号
版本号
更改人
日期
备注
1
1.0版
bldmickey
2007-06-17
本章介绍和AIXPagingSpace相关的知识
部分内容来源:
PagingSpace的管理机制
在AIX4.3.2及以后版本中,操作系统提供了3种PagingSpace的管理机制:
∙DeferredPageSpaceAllocation(DPSA)
∙LatePageSpaceAllocation(LPSA)
∙EarlyPageSpaceAllocation(EPSA)
(1)DeferredPageSpaceAllocation(DPSA)
在AIX4.3.2之后,DPSA是系统默认的PagingSpace的管理机制。
在这种机制下,系统不会为进程保留任何的page页面,直到系统确认确实需要将内存中的页面pageout到PagingSpace中,才会把PagingSpace的页面分配给该进程。
DPSA是AIX4.3.2及以后版本中所使用的默认机制,它通常适用于配有很大容量RAM的系统,因为它可以减少很多PagingSpace资源的浪费。
这也是为什么当前的系统看不到大量pagingspace分配的原因.
(2)LatePageSpaceAllocation(LPSA)
在AIX4.2.1之后,4.3.2之前,操作系统默认使用LPSA机制。
这种机制是指当进程启动后,系统并不在PagingSpace中为该进程保留相应的页面。
只有当该进程的实际内存页面被修改过后,才会在PagingSpace中为这些被修改过的页面申请空间。
其中”内存页面被修改”的含义:
例如通过bzero()函数修改分配的内存的时候,或者调用calloc(),或者内存被初始化某些值的时候,系统会为这些workingpage在pagingspace中保留相应的页面.
这种机制在一定程度上减少了PagingSpace的空间浪费,但是对系统也存在一定的风险。
比如,当一些后起的进程用了几乎全部的PagingSpace后,由于先起的进程并没有保留足够的PagingSpace空间用于进程的pageout操作,会导致该进程被杀掉。
(3)EarlyPageSpaceAllocation(EPSA)
在AIX系统中,当PagingSpace的使用率达到一定百分比时,系统就无法将需要pageout的页面写到PagingSpace中,这时候,该进程就很可能被杀掉。
为了避免这种情况的发生,EPSA机制会保证当进程被启动时,在PagingSpace中先申请一块页面空间,该空间大小与该进程所需要占用的实际内存的大小一致(将环境变量PSALLOC设为early,也就是“exportPSALLOC=early”)。
这样就保证当进程使用malloc()调用的同时,在PagingSpace中有相应的空间保留给该进程,从而保证该进程的pageout操作。
这种机制虽然可以保证现有的进程安全,但由于很多被保留的页面空间并没有被用到,造成了非常大的空间浪费。
同时,也需要PagingSpace的大小比实际内存值要大很多。
EPSA在以前版本操作系统中使用比较多,主要的原因当时的系统物理内存比较少,一般都少于512M,在少内存的情况下EPSA会使系统进程的调度更加安全.
(4)相关命令
∙查看当前系统采用的pagingspace的机制
#vmo-a|grepdefps
defps=1
defps=1表示采用的是DPSA,如果defps=0表示采用的是LPSA.
∙修改pagingspace的机制,采用LPSA
#vmo-odefps=0
∙查看defps属性
当前值是1,缺省值是1,启动时的值是1,取值范围是0-1,类型是动态可以修改的.
#vmo-Ldefps
NAME CUR DEF BOOT MIN MAX UNIT TYPE
DEPENDENCIES
--------------------------------------------------------------------------------
defps 1 1 1 0 1 boolean D
--------------------------------------------------------------------------------
∙vmoTips
VMOManpage
-L[Tunable]
Liststhecharacteristicsofoneoralltunables,oneperline,usingthefollowingformat:
NAME CUR DEF BOOT MIN MAX UNIT TYPE DEPENDENCIES
--------------------------------------------------------------------------------
memory_frames 128K 128K 4KBpages S
--------------------------------------------------------------------------------
maxfree 1088 1088 130 16 200K 4KBpages D minfreememory_frames
--------------------------------------------------------------------------------
minfree 960 960 122 8 200K 4KBpages D maxfreememory_frames
--------------------------------------------------------------------------------
...
where:
CUR=currentvalue
DEF=defaultvalue
BOOT=rebootvalue
MIN=minimalvalue
MAX=maximumvalue
UNIT=tunableunitofmeasure
TYPE=parametertype:
D(forDynamic),S(forStatic),RforReboot),B(forBosboot),M(forMount),I(forIncremental),C(forConnect),andd(forDeprecated)
DEPENDENCIES=listofdependenttunableparameters,oneperline
Paging-spacethresholdstuning
如果pagingspace少到一定的空间,操作系统将会通过先告警进程释放pagingspace,最后可能会kill进程.相关的两个参数npswarn和npskill:
#vmo-a|grepnpswarn
npswarn=249856
#vmo-hnpswarn
Helpfortunablenpswarn:
Specifiesthenumberoffreepaging-spacepagesatwhichtheoperatingsystembeginssendingtheSIGDANGERsignaltoprocesses.Default:
MAX(512,4*npskill).大于0小于系统pagingspace的数目. Increasethevalueifyouexperienceprocessesbeingkilledbecauseoflowpagingspace.
#vmo-a|grepnpskill
npskill=62464
#vmo-hnpskill
Helpfortunablenpskill:
Specifiesthenumberoffreepaging-spacepagesatwhichtheoperatingsystembeginskillingprocesses.Default:
MAX(64,number_of_paging_space_pages/128).大于0小于系统pagingspace的数目.
Pagingspacegarbagecollection
AIX5.3之后可以利用pagingspacegarbagecollection机制来freeuppagingspace.只作用于deferredpagespaceallocationpolicy.
∙方法一:
re-pagein后的垃圾收集
Themethodoffreeingapaging-spacediskblockafterapagehasbeenreadbackintomemoryfrompagingspaceisemployedbydefault.相关参数:
npsrpgmin:
停止re-pagein垃圾收集的freepagingspaceblocks数目
npsrpgax:
开始re-pagein垃圾收集的freepagingspaceblocks数目
∙方法二:
scrubbingmemory
Anothermethodofpagingspacegarbagecollectionisbyscrubbingmemory,whichisimplementedwiththepsgckernelprocess.Thepsgckernelprocessfreesuppagingspacediskblocksformodifiedmemorypagesthathavenotyetbeenpagedoutagainorforunmodifiedpagesforwhichapagingspacediskblockexists.相关的参数:
npsscrubmin停止scrubbing内存的freepagingspaceblocks数目
npsscrubmax:
开始scrubbing内存的freepagingspaceblocks数目
#vmo-a|grepnps
npskill=62464
npsrpgmax=499712
npsrpgmin=374784
npsscrubmax=499712
npsscrubmin=374784
npswarn=249856
PagingSpace的创建原则
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应尽可能的分配在不同的硬盘上。
工程和维护建议(目前内存和硬盘都比较大,相对比较实用些):
如果硬盘空间不是问题的话,建议可以是内存的两倍.如果内存大于8G或者16G,可以考虑先和内存空间相同.同时用两块不同的内置盘各分配一半的pagingspace空间.对于做了根盘镜像的系统,建议可以不镜像pagingspace(维护时注意这些特点).大的swap空间可以避免DPSA可能产生的风险,对于运维来说可能可以减少相关的维护分析工作.
PagingSpace命令
AIX中可以通过命令lsps-s查看PagingSpace的使用情况。
列TotalPagingSpace给出的是系统总的PagingSpace空间大小,PercentUsed则表示已被占用的PagingSpace的百分