AIX系统Memory性能评估 2一, VMM的管理简介 2 1.1 空闲列表维护 2 1.2 文件占用内存的比率维护 2 1.3 vmstat命令显示内存中的数据页数 3二, 使用vmstat确定内存的使用情况 3 2.1 faults故障 4 2.2 memory(内存) 4 2.3 page磁盘交换 4三, svmon命令 5 3.1 memory段 6 3.2 pg space段 6 3.3 pin 段 6 3.4 inuse 段 6 4, ps命令显示当前运行的进程状态 6 5, 内存的调整 7 AIX系统Memory性能评估 一, VMM的管理简介 内存和交换空间(虚拟内存)一般都是用页面来进行分配和管理的. 在内存中存在两种类型的页面:计算页面(一般为可执行文件段的页面)和文件页面(存储的数据文件的页面). 当我们执行程序或者读入数据的时候, 内存中的页面就逐渐被占用. 当空闲的内存只剩下minfree的时候, vmm的调页进程就被唤醒, 通过调页算法, 将内存中的页面转移到交换空间中. 直到空闲内存达到maxfree, 才停止调页.1.1 空闲列表维护 在这里, 我们涉及到两个参数:1, minfree: 最小空闲页链表尺寸. 一旦低于该值, 系统调页进程启动偷页以填充空闲页链表, 保证有足够的内存页面. 偷页就是将不常用的页面替换出去.2, maxfree: 最大空闲页链表尺寸. 一旦高于该值, 系统停止偷页.一般情况下, minfree和maxfree通过下面的公式得到.Maxfree=minmum(memory/128,128), minfree=maxfree-8如果发现空闲列表不足, 可以用下面的方法增加.在5.2以上的版本中可以通过vmo参数实现. #vmo –o minfree = 1000 –o maxfree = 1008 –P #-P参数使得修改永久生效.在AIX5.2之前的版本需要使用/usr/samples/kernel/vmtune命令Vmtune –f 1000 –F 1008 1.2 文件占用内存的比率维护 数据文件占用的内存不会主动释放, 所以容易造成内存的文件页面过高的占用, 导致其他的应用内存使用紧张. 这里有两个参数跟这个占用相关. # vmo -a |grep perm maxperm = 392704 maxperm% = 20 minperm = 98175 minperm% = 5 strict_maxperm = 0如上所示的两个参数解释如下:1, minperm: 用户IO文件访问的最小缓冲页数;2, maxperm: 用户io文件访问的最大缓冲页数;这里主要与性能相关的是maxperm. Maxperm参数指定了文件页面可以占用内存的上限.调整参数值的方法如下.Aix5.2以上的版本使用vmo命令#vmo –o maxperm%=80 –o minperm%=20在Aix5.2之前的版本一样要使用vmtune命令#vmtune –p 20 –P 80 –P 1.3 vmstat命令显示内存中的数据页数# vmstat -v |grep perm 5.0 minperm percentage 20.0 maxperm percentage 19.8 numperm percentage系统调页的规则1, 如果numperm>maxperm, 则只调出文件页面;2, 如果numperm conn / as sysdba Connected. SQL> oradebug setospid 487432 Oracle pid: 12, Unix process pid: 487432, image: oracle@i2db (MMNL) SQL> oradebug event 10046 trace name context forever,level 8 Statement processed. SQL> oradebug tracefile_name /oracle/admin/arpdb/bdump/arpdb_mmnl_487432.trc SQL> oradebug event 10046 trace name context off Statement processed. SQL> exit Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production With the Partitioning, OLAP and Data Mining options $ tkprof /oracle/admin/arpdb/bdump/arpdb_mmnl_487432.trc output = arpdb_mm1.txt TKPROF: Release 10.2.0.3.0 - Production on Tue Jul 14 17:31:29 2009 Copyright (c) 1982, 2005, Oracle. All rights reserved. $ 5, 内存的调整 具体调整需要结合系统运行的应用程序对症下药,如调整minperm/maxperm将改变内存与PAGING SPACE之间的交换算法,调整minpgahead/maxpgahead将改变内存块请求机制,调整minfree/maxfree将改变内存紧张时的内存清理刷新机制,等等。如果数据库使用裸设备,并且没有太多其他的应用,因为裸设备不需要文件系统的缓存,所以可以降低minperm,maxperm,maxclient的默认值,降低操作系统对内存的不必要的占用。 案例: 计费数据库数据库响应变慢,内存16G,裸设备,却存在很多的PI,PO情况。 在检查与内存相关的系统参数,发现如下问题:minperm% = 20, maxperm% = 80, maxclient% = 80 说明:以上三个参数为系统缺省配置,其表示,使用文件系统时,最多可使用80% * 16G=10.8G,用于缓存所访问的文件。 结论:由于以上参数采用系统缺省配置,文件系统缓存最大可以达到10.8G,在执行大量的文件cp操作后,系统的可用内存量迅速下降,在其后的计费过程中,由于大量page in/page out操作引起系统严重性能瓶颈。 优化: 将maxperm% = 30 ,maxclient% = 30 #vmo –o maxperm%=30 –P #vmo –o maxclient%=30 –P 5.2以前版本/usr/samples/kernel/vmtune –p 20 –P 30 /usr/samples/kernel/vmtune –t 30