AIX系统Memory性能评估
AIX系統(tǒng)Memory性能評估
一, VMM的管理簡介
1.1?空閑列表維護
1.2?文件占用內(nèi)存的比率維護
1.3 vmstat命令顯示內(nèi)存中的數(shù)據(jù)頁數(shù)
二,?使用vmstat確定內(nèi)存的使用情況
2.1 faults故障
2.2 memory(內(nèi)存)
2.3 page磁盤交換
三, svmon命令
3.1 memory段
3.2 pg space段
3.3 pin?段
3.4 inuse?段
4, ps命令顯示當前運行的進程狀態(tài)
5,?內(nèi)存的調(diào)整
?
AIX系統(tǒng)Memory性能評估
一, VMM的管理簡介
內(nèi)存和交換空間(虛擬內(nèi)存)一般都是用頁面來進行分配和管理的.?在內(nèi)存中存在兩種類型的頁面:計算頁面(一般為可執(zhí)行文件段的頁面)和文件頁面(存儲的數(shù)據(jù)文件的頁面).?當我們執(zhí)行程序或者讀入數(shù)據(jù)的時候,?內(nèi)存中的頁面就逐漸被占用.?當空閑的內(nèi)存只剩下minfree的時候, vmm的調(diào)頁進程就被喚醒,?通過調(diào)頁算法,?將內(nèi)存中的頁面轉(zhuǎn)移到交換空間中.?直到空閑內(nèi)存達到maxfree,?才停止調(diào)頁.
1.1?空閑列表維護
在這里,?我們涉及到兩個參數(shù):
1, minfree:?最小空閑頁鏈表尺寸.?一旦低于該值,?系統(tǒng)調(diào)頁進程啟動偷頁以填充空閑頁鏈表,?保證有足夠的內(nèi)存頁面.?偷頁就是將不常用的頁面替換出去.
2, maxfree:?最大空閑頁鏈表尺寸.?一旦高于該值,?系統(tǒng)停止偷頁.
一般情況下, minfree和maxfree通過下面的公式得到.
Maxfree=minmum(memory/128,128), minfree=maxfree-8
如果發(fā)現(xiàn)空閑列表不足,?可以用下面的方法增加.
在5.2以上的版本中可以通過vmo參數(shù)實現(xiàn).
#vmo –o minfree = 1000 –o maxfree = 1008 –P???#-P參數(shù)使得修改永久生效.
在AIX5.2之前的版本需要使用/usr/samples/kernel/vmtune命令
Vmtune –f 1000 –F 1008
1.2?文件占用內(nèi)存的比率維護
數(shù)據(jù)文件占用的內(nèi)存不會主動釋放,?所以容易造成內(nèi)存的文件頁面過高的占用,?導(dǎo)致其他的應(yīng)用內(nèi)存使用緊張.?這里有兩個參數(shù)跟這個占用相關(guān).
# vmo -a |grep perm
??????????????maxperm = 392704
?????????????maxperm% = 20
??????????????minperm = 98175
?????????????minperm% = 5
???????strict_maxperm = 0
如上所示的兩個參數(shù)解釋如下:
1, minperm:?用戶IO文件訪問的最小緩沖頁數(shù);
2, maxperm:?用戶io文件訪問的最大緩沖頁數(shù);
這里主要與性能相關(guān)的是maxperm. Maxperm參數(shù)指定了文件頁面可以占用內(nèi)存的上限.調(diào)整參數(shù)值的方法如下.
Aix5.2以上的版本使用vmo命令
#vmo –o maxperm%=80 –o minperm%=20
在Aix5.2之前的版本一樣要使用vmtune命令
#vmtune –p 20 –P 80 –P
1.3 vmstat命令顯示內(nèi)存中的數(shù)據(jù)頁數(shù)
# vmstat -v |grep perm
??????????????????5.0 minperm percentage
?????????????????20.0 maxperm percentage
?????????????????19.8 numperm percentage
系統(tǒng)調(diào)頁的規(guī)則
1,?如果numperm>maxperm,?則只調(diào)出文件頁面;
2,?如果numperm<minperm,?則同時調(diào)出文件頁面和計算頁面.
3,?如果minperm<numperm<maxperm,?則只調(diào)出文件頁面,?除非新調(diào)入的文件頁面大于計算頁面的總和.
如果系統(tǒng)在向調(diào)頁空間調(diào)出頁面,可能使因為內(nèi)存中的文件頁數(shù)低于maxperm,從而也調(diào)出了部分的計算頁面以達到maxfree的要求。在這種情況下,可以考慮把maxperm降低到低于numperm的某個值,從而阻止計算頁面的調(diào)出。在5.2 ML4以后的版本中,為了防止計算頁面被調(diào)出,可以采用另外一個方法,就是設(shè)置參數(shù)lru_file_repage=0。將該參數(shù)設(shè)為0,則告訴vmm在進行頁面替換的時候,優(yōu)先替換文件頁面。
maxclient通常應(yīng)該設(shè)置為一個小于或者等于maxperm的值。
增強JFS文件系統(tǒng)為它的緩沖區(qū)高速緩存使用客戶機文件,這不受maxperm和minperm的影響。為了在限制增強JFS文件系統(tǒng)使用高速緩存,可以指定maxclient的值,避免在它進行頁面替換的時候,替換其他類型的頁。
二,?使用vmstat確定內(nèi)存的使用情況
該命令可迅速提供關(guān)于各種系統(tǒng)資源和與之相關(guān)的性能問題的簡要信息.
作為一個cpu監(jiān)視器, vmstat命令優(yōu)于iostat命令,?因為vmstat命令是滾動的,?使得它的每一行報告的輸出更容易掃描.?并且如果有很多磁盤鏈接到系統(tǒng)中,?由此所涉及到的開銷更少.
# vmstat 2
?
System configuration: lcpu=8 mem=8192MB
?
kthr????memory??????????????page??????????????faults????????cpu???
----- ----------- ------------------------ ------------ -----------
?r??b???avm???fre??re??pi??po??fr???sr??cy??in???sy??cs us sy id wa
?0??0 1596212 186517???0???0???0???0????0???0 157 2242 757??5??0 95??0
?1??0 1602824 179905???0???0???0???0????0???0 276 8731 986 23??1 76??0
?1??0 1609397 173332???0???0???0???0????0???0 298 5696 1118 27??1 72??0
?1??0 1609407 173322???0???0???0???0????0???0 276 5630 1046 23??1 77??0
?1??0 1609593 173136???0???0???0???0????0???0 1209 10754 3699 10??3 87??0
?1??0 1609630 173099???0???0???0???0????0???0 637 8595 2061 26??1 72??0
要檢查內(nèi)存是否是瓶頸,?考慮vmstat報告中的memory列, pages列以及faults列
2.1 faults故障
kthr????memory??????????????page??????????????faults????????cpu???
----- ----------- ------------------------ ------------ -----------
?r??b???avm???fre??re??pi??po??fr???sr??cy??in???sy??cs?us sy id wa
?0??0 1596212 186517???0???0???0???0????0???0?157 2242 757??5??0 95??0
?1??0 1602824 179905???0???0???0???0????0???0?276 8731 986?23??1 76??0
?
In:
每秒設(shè)備中斷數(shù)
Sy:
每秒系統(tǒng)調(diào)用次數(shù).
Cs:
每秒鐘的上下文切換次數(shù).?物理cpu資源細分為10毫秒的邏輯時間片,?假設(shè)一個線程調(diào)度被運行,?它將一直運行直到它的時間片用完,或被搶先,或者自愿放棄cpu控制權(quán).?當給予另一個線程cpu控制權(quán)時,?必須保存前一個線程的上下文或工作環(huán)境,并且必須裝入當前線程的上下文.?操作系統(tǒng)有一個很有效的上下文切換過程,?所以每次切換并不耗資源.?任何上下文切換的顯著增加,?如當cs比磁盤io和網(wǎng)絡(luò)信息包速率高很多,?都應(yīng)進行進一步調(diào)查.
2.2 memory(內(nèi)存)
kthr????memory??????????????page??????????????faults????????cpu???
----- ----------- ------------------------ ------------ -----------
?r??b???avm???fre??re??pi??po??fr???sr??cy??in???sy??cs us sy id wa
?0??0 1596212 186517???0???0???0???0????0???0 157 2242 757??5??0 95??0
?1??0 1602824 179905???0???0???0???0????0???0 276 8731 986 23??1 76??0
?1??0 1609397 173332???0???0???0???0????0???0 298 5696 1118 27??1 72??0
Avm列表表示活動虛擬內(nèi)存的頁面數(shù),?每頁一般4KB
Fre表示空閑的頁面數(shù).
2.3 page磁盤交換
kthr????memory??????????????page??????????????faults????????cpu???
----- ----------- ------------------------ ------------ -----------
?r??b???avm???fre??re??pi??po??fr???sr??cy??in???sy??cs us sy id wa
?0??0 1596212 186517???0???0???0???0????0???0 157 2242 757??5??0 95??0
?1??0 1602824 179905???0???0???0???0????0???0 276 8731 986 23??1 76??0
?1??0 1609397 173332???0???0???0???0????0???0 298 5696 1118 27??1 72??0
Re:?該列無效
Pi:?從磁盤交換到內(nèi)存的交換頁(調(diào)頁空間)數(shù)量, 4KB/頁.?當進程訪問一個交換頁時就產(chǎn)生一個缺頁故障.
Po:?從內(nèi)存交換到磁盤的交換頁數(shù)量, 4KB/頁.?如果寫入的交換頁在交換區(qū)間內(nèi)不存在或者已經(jīng)做了修改,?則寫入交換區(qū)間.如果不被再次訪問,?則會留在調(diào)度空間中直到進程終止或者放棄空間.
Fr:?根據(jù)頁面替換算法每秒釋放的頁數(shù). VMM的頁面替換例程會定時掃描頁面禎表,?以釋放一些長時間沒有訪問的數(shù)據(jù)頁到空閑列表.?在這個過程中,?計算頁面不會產(chǎn)生IO,?工作頁面如果數(shù)據(jù)沒有發(fā)生修改,?也不需要寫回磁盤,?不會產(chǎn)生IO.
Sr:?為了釋放頁面掃描的頁數(shù). Sr值如果比fr值高很多,?說明替換算法要查找可疑替換的頁面越困難.
Cy:?每秒頁面替換代碼掃描了PFT多少次,?因為增加空閑列表達到maxfree值,?不一定需要完全掃描PFT表,?就是說這個值一般會小于1,?而所有vmstat輸出都為整數(shù),?所以cy通常為0.
三, svmon命令
????Svmon主要用來捕獲并分析虛擬內(nèi)存快照.
# svmon -G -i 2 2
???????????????size??????inuse???????free????????pin????virtual
memory??????2097152????2007242??????89910?????488437????1598949
pg space????4194304???????4268
?
???????????????work???????pers???????clnt??????other
pin??????????303244??????????0???????1802?????183391
in use??????1598949??????????0?????408293
?
PageSize???PoolSize??????inuse???????pgsp????????pin????virtual
s???4 KB??????????-????1934298???????4268?????434309????1526005
m??64 KB??????????-???????4559??????????0???????3383???????4559
???????????????size??????inuse???????free????????pin????virtual
memory??????2097152????2007238??????89914?????488439????1598945
pg space????4194304???????4268
?
???????????????work???????pers???????clnt??????other
pin??????????303246??????????0???????1802?????183391
in use??????1598945??????????0?????408293
?
PageSize???PoolSize??????inuse???????pgsp????????pin????virtual
s???4 KB??????????-????1934294???????4268?????434311????1526001
m??64 KB??????????-???????4559??????????0???????3383???????4559
3.1 memory段
l?????????Size(大小):?物理內(nèi)存總頁數(shù). 4KB/頁
l?????????Inuse(正在使用):?物理內(nèi)存中正在使用的內(nèi)存頁面數(shù).?包含活動進程和已經(jīng)終止的持久文件頁面.
l?????????Free(空閑):?空閑列表中的頁面數(shù)量
l?????????Pin(固定內(nèi)存):?鎖定在內(nèi)存中的頁面數(shù)量(鎖定的意思就是不能被替換出去)
l?????????Virtual(虛擬內(nèi)存):分配于系統(tǒng)虛擬空間的頁數(shù).
3.2 pg space段
Size():?調(diào)頁空間總大小
Inuse():?已經(jīng)分配頁的總數(shù),?也就是已經(jīng)使用的調(diào)頁空間頁數(shù)
3.3 pin?段
指定包含固定內(nèi)存的頁面的實際內(nèi)存的子集上的統(tǒng)計信息
l?????????Work():?物理內(nèi)存中的工作段內(nèi)存的頁數(shù)
l?????????Pers():?物理內(nèi)存的持久段頁面的幀數(shù).
l?????????Clnt():?物理內(nèi)存中客戶段頁面的幀數(shù).
3.4 inuse?段
指定正在使用的實際內(nèi)存子集的統(tǒng)計信息
l?????????Work():?物理內(nèi)存中的工作段內(nèi)存的頁數(shù)
l?????????Pers():?物理內(nèi)存的持久段頁面的幀數(shù).
l?????????Clnt():?物理內(nèi)存中客戶段頁面的幀數(shù).
4, ps命令顯示當前運行的進程狀態(tài)
# ps gv | sort +6b -nr |head -10
PID??TTY STAT TIME PGIN SIZE RSS???LIM??TSIZ???TRS %CPU %MEM COMMAND
561232??????- A????30:59????0??9248 84184????xx 50614 74936??0.0??1.0 ora_pmon
?454728??????- A?????0:14????0??8900 83836????xx 50614 74936??0.0??1.0 ora_s000
?729338??????- A?????3:12????0??8840 83776????xx 50614 74936??2.0??1.0 oracleSI
?581808??????- A????1710:17????6??8528 83464????xx 50614 74936??0.1??1.0 ora_lms0
?942332??????- A?????2:24????7??8500 83436????xx 50614 74936??0.0??1.0 ora_arc0
?868444??????- A?????1:06???39??8496 83432????xx 50614 74936??0.0??1.0 ora_arc1
?442494??????- A????1715:12????9??8372 83308????xx 50614 74936??0.1??1.0 ora_lms1
?647186??????- A????98:48???12??7912 82848????xx 50614 74936??0.0??1.0 ora_lmd0
?725148??????- A?????5:09????0??7460 82396????xx 50614 74936??1.8??1.0 oracleSI
?573582??????- A????143:00????0??7068 82004????xx 50614 74936??0.0??1.0 ora_lmon
我們可以用下面的方法查看具體的進程在干什么事情.
例如我們查看PID = 487432的進程,?可以使用下面的方法.
# su - oracle
[YOU HAVE NEW MAIL]
$ sqlplus /nolog
?
SQL*Plus: Release 10.2.0.3.0 - Production on Tue Jul 14 17:24:42 2009
?
Copyright (c) 1982, 2006, Oracle.??All Rights Reserved.
?
SQL> 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,?內(nèi)存的調(diào)整
具體調(diào)整需要結(jié)合系統(tǒng)運行的應(yīng)用程序?qū)ΠY下藥,如調(diào)整minperm/maxperm將改變內(nèi)存與PAGING SPACE之間的交換算法,調(diào)整minpgahead/maxpgahead將改變內(nèi)存塊請求機制,調(diào)整minfree/maxfree將改變內(nèi)存緊張時的內(nèi)存清理刷新機制,等等。如果數(shù)據(jù)庫使用裸設(shè)備,并且沒有太多其他的應(yīng)用,因為裸設(shè)備不需要文件系統(tǒng)的緩存,所以可以降低minperm,maxperm,maxclient的默認值,降低操作系統(tǒng)對內(nèi)存的不必要的占用。
案例:
計費數(shù)據(jù)庫數(shù)據(jù)庫響應(yīng)變慢,內(nèi)存16G,裸設(shè)備,卻存在很多的PI,PO情況。
在檢查與內(nèi)存相關(guān)的系統(tǒng)參數(shù),發(fā)現(xiàn)如下問題:
minperm% = 20,??maxperm% = 80,?maxclient% = 80
說明:以上三個參數(shù)為系統(tǒng)缺省配置,其表示,使用文件系統(tǒng)時,最多可使用80% * 16G=10.8G,用于緩存所訪問的文件。
結(jié)論:由于以上參數(shù)采用系統(tǒng)缺省配置,文件系統(tǒng)緩存最大可以達到10.8G,在執(zhí)行大量的文件cp操作后,系統(tǒng)的可用內(nèi)存量迅速下降,在其后的計費過程中,由于大量page in/page out操作引起系統(tǒng)嚴重性能瓶頸。
優(yōu)化:
將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
?
總結(jié)
以上是生活随笔為你收集整理的AIX系统Memory性能评估的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AIX进程监控与管理
- 下一篇: Windows 7系统如何重装或安装IE