AIX系统Memory性能评估
AIX系統Memory性能評估
一, VMM的管理簡介
1.1?空閑列表維護
1.2?文件占用內存的比率維護
1.3 vmstat命令顯示內存中的數據頁數
二,?使用vmstat確定內存的使用情況
2.1 faults故障
2.2 memory(內存)
2.3 page磁盤交換
三, svmon命令
3.1 memory段
3.2 pg space段
3.3 pin?段
3.4 inuse?段
4, ps命令顯示當前運行的進程狀態
5,?內存的調整
?
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<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的值,避免在它進行頁面替換的時候,替換其他類型的頁。
二,?使用vmstat確定內存的使用情況
該命令可迅速提供關于各種系統資源和與之相關的性能問題的簡要信息.
作為一個cpu監視器, vmstat命令優于iostat命令,?因為vmstat命令是滾動的,?使得它的每一行報告的輸出更容易掃描.?并且如果有很多磁盤鏈接到系統中,?由此所涉及到的開銷更少.
# 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
要檢查內存是否是瓶頸,?考慮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:
每秒設備中斷數
Sy:
每秒系統調用次數.
Cs:
每秒鐘的上下文切換次數.?物理cpu資源細分為10毫秒的邏輯時間片,?假設一個線程調度被運行,?它將一直運行直到它的時間片用完,或被搶先,或者自愿放棄cpu控制權.?當給予另一個線程cpu控制權時,?必須保存前一個線程的上下文或工作環境,并且必須裝入當前線程的上下文.?操作系統有一個很有效的上下文切換過程,?所以每次切換并不耗資源.?任何上下文切換的顯著增加,?如當cs比磁盤io和網絡信息包速率高很多,?都應進行進一步調查.
2.2 memory(內存)
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列表表示活動虛擬內存的頁面數,?每頁一般4KB
Fre表示空閑的頁面數.
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:?從磁盤交換到內存的交換頁(調頁空間)數量, 4KB/頁.?當進程訪問一個交換頁時就產生一個缺頁故障.
Po:?從內存交換到磁盤的交換頁數量, 4KB/頁.?如果寫入的交換頁在交換區間內不存在或者已經做了修改,?則寫入交換區間.如果不被再次訪問,?則會留在調度空間中直到進程終止或者放棄空間.
Fr:?根據頁面替換算法每秒釋放的頁數. VMM的頁面替換例程會定時掃描頁面禎表,?以釋放一些長時間沒有訪問的數據頁到空閑列表.?在這個過程中,?計算頁面不會產生IO,?工作頁面如果數據沒有發生修改,?也不需要寫回磁盤,?不會產生IO.
Sr:?為了釋放頁面掃描的頁數. Sr值如果比fr值高很多,?說明替換算法要查找可疑替換的頁面越困難.
Cy:?每秒頁面替換代碼掃描了PFT多少次,?因為增加空閑列表達到maxfree值,?不一定需要完全掃描PFT表,?就是說這個值一般會小于1,?而所有vmstat輸出都為整數,?所以cy通常為0.
三, svmon命令
????Svmon主要用來捕獲并分析虛擬內存快照.
# 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(大小):?物理內存總頁數. 4KB/頁
l?????????Inuse(正在使用):?物理內存中正在使用的內存頁面數.?包含活動進程和已經終止的持久文件頁面.
l?????????Free(空閑):?空閑列表中的頁面數量
l?????????Pin(固定內存):?鎖定在內存中的頁面數量(鎖定的意思就是不能被替換出去)
l?????????Virtual(虛擬內存):分配于系統虛擬空間的頁數.
3.2 pg space段
Size():?調頁空間總大小
Inuse():?已經分配頁的總數,?也就是已經使用的調頁空間頁數
3.3 pin?段
指定包含固定內存的頁面的實際內存的子集上的統計信息
l?????????Work():?物理內存中的工作段內存的頁數
l?????????Pers():?物理內存的持久段頁面的幀數.
l?????????Clnt():?物理內存中客戶段頁面的幀數.
3.4 inuse?段
指定正在使用的實際內存子集的統計信息
l?????????Work():?物理內存中的工作段內存的頁數
l?????????Pers():?物理內存的持久段頁面的幀數.
l?????????Clnt():?物理內存中客戶段頁面的幀數.
4, ps命令顯示當前運行的進程狀態
# 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,?內存的調整
具體調整需要結合系統運行的應用程序對癥下藥,如調整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
?
總結
以上是生活随笔為你收集整理的AIX系统Memory性能评估的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AIX进程监控与管理
- 下一篇: 深入解析oracle回滚段