关于AIX上VMO调整参数的若干说明web
最近,关于AIX机器上虚拟内存参数调整的问题出现了好几回,也调过好几台机器的参数,现结合网上的文档,算法
把这部分知识理一理,作一下记录。数据库
1.在AIX系统中,内存能够简单的分为两类,计算型内存和文件型内存,
在AIX操做系统中,可使用topas命令查看整个系统的运行状况,其中一个重要的部份是系统的内存使用状况,缓存
以及交换状况:安全
MEMORY
Real,MB 16032
% Comp 83.2
% Noncomp 9.9
% Client 9.9服务器
PAGING SPACE
Size,MB 16384
% Used 3.3
% Free 96.6oracle
在一个使用裸设备的系统中,文件型内存,即上面的%Noncomp,%Client,只须要使用整个系统不多的内存;而app
把大部份的内存做为计算型内存(%Comp)来使用,这部分内存量主要为ORACLE SGA和PGA所用,其中ORACLE SGA 为ide
pinned memory.性能
根据系统内存大小,设定系统能够pin住的最大值:
maxpin% = 80 --此值能够升高
v_pinshm = 1 --容许pin住内存
接下来是三个控制文件型内存的参数的值:
maxclient% = 10 --文件型内存可以使用内存总的百分比的最大值,<=maxperm%
maxperm% = 10 --文件型内存可以使用内存总的百分比的最大值
minperm% = 5 --文件型内存可以使用内存总的百分比的最小值
这三个参数,能够根据内存总量大小,进行适度调节。计算型内存与文件型内存,在实际的应用中,须要遵循
如下一些原则(前3条是参考别人的):
1.使用的文件型内存百分比 + 使用的计算型内存百分比 < 100%
2.计算型内存中的pinned memory设置要合理,即sga大小要设置合理,要留一部份给OS,OS也须要pinned
memory.当系统资源紧张时,OS的pinned memory具备最高的优先级.
3.保证系统非pinned 计算型 memory有一个合理的成长空间,这部份主要是给ORACLE PGA使用,当链接数
增加过快时,此内存的使用增加也至关的明显,而此增加颇有可能会致使操做系统的交换。
当系统的使用的文件型内存百分比 + 使用的计算型内存百分比 >= 100%,系统便开始产生交换,系统的
PAGING SPACE会持续的增加,影响到产品库的安全。
4.通常的数据库服务器,文件型内存可使用较少的空间,由于文件型内存并不主动释放,可能形成内存
资源的短缺及Paging Space使用率太高,因此数据库服务器上maxclient、maxperm、minperm的值不宜过大,典
型值以下:
maxclient% = 8
maxperm% = 12
minperm% = 5
如何更改这三个参数呢, 在AIX5.3上,可使用 vmo 命令,此命令设置或显示全部虚拟内存管理器调整参数
的当前值或下一个引导值。还能够用此命令进行永久性更改,或将更改推迟到下一次从新引导以后生效。此命令
是设置参数仍是显示参数,要由所带标志来决定。带 -o 标志的话,两个操做都执行。它既能够显示参数的值,
也能够为参数设置新值。
若是在修改这些参数前,想查看这些参数的值,则能够用下面的命令:
vmo -L 或者 vmstat -v 或者vmo -a
调整:vmo -p -o maxclent%=8
vmo -p -o maxperm%=12
vmo -p -o minperm%=5
利用-p参数,是当即生效的,不须要重启,下次重启仍然有效。
若是是-r参数,是不当即生效的,重启生效,turns on the updating of the
/etc/tunables/nextboot file.重启生效的参数记录在 /etc/tunables/nextboot。
由于参数maxperm充当的是软限制,因此文件型内存的占用率仍然能够超过maxperm的设定值,若是须要进行强制
限制,则须要将参数strict_maxperm的值设为1,该参数的缺省值是0,但此方法须要谨慎使用。
备注:也许有人不是很熟悉vmo,反而熟悉vmtune,其实他们是同样的
AIX 5.3之前,查看参数值 vmtune -a
修改minperm和maxperm的值为5%和20%,vmtune -p 5 -P 20
若是是64位内核,vmtune64 -p 5 -P 20
AIX 5.3: vmo -p -o maxperm%=20
vmo -p -o minperm%=5
------------------------------------------------------------
=-==========================================================
AIX 5.3主机性能评估-Memory性能评估
发布: 2009-8-07 14:03 | 做者: webmaster | 来源: BBS整理 | 查看: 39次
1.4.1VMM的管理简介
首先,仍是简单讲解一下内存以及的VMM的一点工做原理。
内存和交换空间通常都是用页面来进行分配和管理的。在内存中存在两种类型的页面:计算页面(通常为可执行文件段中的页面)和文件页面(存储的数据文件的页面)。当咱们执行程序或者读入数据的时候,内存中的页面就逐渐被占用。当空闲的内存只剩maxfree的时候,vmm的调页就被唤醒,经过调页算法,将内存中的页面转移到交换空间中。一直到空闲内存达到maxfree,才中止调页。
在这里,咱们涉及到两个参数:
1)Minfree:最小空闲页链表尺寸。一旦低于该值,系统偷页以填充页链表,保证有足够的内存页面。偷页就是将不经常使用的页面替换出去。
2)Maxfree:最大空闲页链表尺寸。一旦高于该值,系统中止偷页。
若是发现空闲列表不足,能够用下面的方法增长minfree参数
#vmo -o minfree=1000 -o maxfree=1008
Setting maxfree to 1008
Setting minfree to 1000
#vmo –o minfree=1000 –o maxfree=1008 –P # -P参数使修改永久生效
通常状况下,minfree和maxfree经过下面的公式获得:
maxfree=minmum(memory/128,128) ,minfree=maxfree-8
注意:在AIX 5.2以前的版本请使用/usr/samples/kernel/vmtune命令。
#/usr/samples/kernel/vmtune –f 1000 –F 1008
另外,关于内存的使用,咱们还有两个常常碰到的参数须要关注:
Minperm:用户I/O文件访问的最小缓冲区页数
Maxperm:用户I/O文件访问的最大缓冲区页数
Minperm和maxperm这两个参数的默认值分别为20%和80%。在这里主要与性能相关的是maxperm参数。maxperm参数指定了文件页面能够占用内存的上限,由于文件页面不主动释放,因此很容易形成内存的文件页面太高的占用,致使其余的应用内存使用紧张。调整参数值的方法以下:
#vmo -o maxperm%=80 -o minperm%=20
Setting minperm% to 20
Setting maxperm% to 80
在AIX 5.2以前的版本请使用/usr/samples/kernel/vmtune命令。
#/usr/samples/kernel/vmtune -p 20–P 80 将min和max的值分别设置为20%和80%。
查看当前的参数设置方法以下:
1)vmo –a 显示当前全部的参数设置
在AIX 5.2以前的版本请使用 # /usr/samples/kernel/vmtune 显示当前全部的参数设置
#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% = 80
maxfree = 1088
maxperm = 4587812
maxperm% = 80
maxpin = 4881650
maxpin% = 80
mbuf_heap_psize = 4096
memory_affinity = 1
memory_frames = 6029312
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 = 4
minfree = 960
minperm = 1146952
minperm% = 20
nokilluid = 0
npskill = 49152
npsrpgmax = 393216
npsrpgmin = 294912
npsscrubmax = 393216
npsscrubmin = 294912
npswarn = 196608
num_spec_dataseg = 0
numpsblks = 6291456
page_steal_method = 0
pagecoloring = n/a
pinnable_frames = 5601758
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 = 0
vm_modlist_threshold = -1
vmm_fork_policy = 1
vmm_mpsize_support = 1
2)vmstat -v
# vmstat -v
6029312 memory pages
5734766 lruable pages
2801540 free pages
4 memory pools
406918 pinned pages
80.0 maxpin percentage
20.0 minperm percentage
80.0 maxperm percentage
2.3 numperm percentage
135417 file pages
0.0 compressed percentage
0 compressed pages
0.0 numclient percentage
80.0 maxclient percentage
0 client pages
0 remote pageouts scheduled
312417 pending disk I/Os blocked with no pbuf
0 paging space I/Os blocked with no psbuf
2878 filesystem I/Os blocked with no fsbuf
0 client filesystem I/Os blocked with no fsbuf
0 external pager filesystem I/Os blocked with no fsbuf
显示minperm和maxperm和numperm的值。numperm值给出的是内存中文件页数。
系统调页的规则:
1) 若是numperm>maxperm,则只调出文件页面。
2) 若是numperm<minperm,则同时调出文件页面和计算页面。
3) 若是minperm<numperm<maxperm,则只调出文件页面,除非新调入的文件页面大于计算页面的总和。
若是系统在向调页空间调出页面,可能使由于内存中的文件页数低于maxperm,从而也调出了部分的计算页面以达到maxfree的要求。在这种状况下,能够考虑把maxperm下降到低于numperm的某个值,从而阻止计算页面的调出。在5.2 ML4之后的版本中,为了防止计算页面被调出,能够采用另一个方法,就是设置参数lru_file_repage=0。将该参数设为0,则告诉vmm在进行页面替换的时候,优先替换文件页面。
maxclient一般应该设置为一个小于或者等于maxperm的值。
加强JFS文件系统为它的缓冲区高速缓存使用客户机文件,这不受maxperm和minperm的影响。为了在限制加强JFS文件系统使用高速缓存,能够指定maxclient的值,避免在它进行页面替换的时候,替换其余类型的页。
www.ixdba.net
1.4.2 使用vmstat肯定内存的使用状况 主要检查vmstat输出的 memory和pages列和faults列。详细的说明见前一节cpu评估说明。 1.4.3 svmon命令 # svmon -G -i 2 2 size inuse free pin virtual memory 2097136 236845 1860291 152150 194943 pg space 1048576 960 work pers clnt lpage pin 151904 246 0 0 in use 194960 41885 0 0 size inuse free pin virtual memory 2097136 236853 1860283 152150 194947 pg space 1048576 960 work pers clnt lpage pin 151904 246 0 0 in use 194964 41889 0 0 memory段 ? size 物理内存总页数。4KB/页 ? inuse 物理内存中正在使用的内存页面数。包含活动进程和已经终止的进程的持久文件页面。 ? free 空闲列表中的页面数量 ? pin 锁定在内存中的页面数量(锁定的意思就是不能被替换出去) ? virtual pg space段 ? size 调页空间总大小 ? inuse 已经分配页的总数,也就是已经使用的调页空间页数 pin段 ? work 物理内存中的工做页面数 ? pers 物理内存中的持久页面数 ? clnt 物理内存中的客户机页面数(客户机页面就是一个远程文件页面) inuse段 ? work 物理内存中的工做页面数 ? pers 物理内存中的持久页面数 ? clnt 物理内存中的客户机页面数(客户机页面就是一个远程文件页面) 三、ps命令显示当前运行的进程状态信息。 运行下列命令,显示内存占用前10位的进程。 # ps gv |sort +6b -nr |head -10 2490538 - A 191:56 0 11840 32748 xx 45762 20924 0.1 0.0 ora_j00 2039970 - A 592:59 11 11728 32648 xx 45762 20924 0.3 0.0 ora_j00 2588922 - A 1118:31 22 11712 32632 xx 45762 20924 0.6 0.0 ora_j0 2523168 - A 305:01 1 11688 32608 xx 45762 20924 0.2 0.0 ora_j00 2474214 - A 0:01 0 11588 32512 xx 45762 20924 0.1 0.0 ora_j00 2007282 - A 0:01 0 10384 31308 xx 45762 20924 0.0 0.0 ora_j00 508120 - A 32:58 662 9344 27164 xx 45762 20924 0.0 0.0 ora_dbw 1351908 - A 0:02 1 5668 26560 xx 45762 20924 0.0 0.0 oracleo 3801250 - A 203:22 0 5648 26556 xx 45762 20924 0.1 0.0 oracleo 3915976 - A 0:00 0 5664 26556 xx 45762 20924 0.0 0.0 oracleo 若是是oracle的一些进程占用了过分的内存,咱们也能够经过前面相似的进程处理方法来分析。 1.4.4内存的调整 具体调整须要结合系统运行的应用程序对症下药,如调整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