AIX記憶體效能調優(svmon sar vmo)

guyuanli發表於2009-07-20

一、svmon
# svmon
size inuse free pin virtual
memory 1048576 946885 101691 133404 311202
pg space 262144 31284
work pers clnt lpage
pin 133404 0 0 0
in use 289752 8615 648518 0
解釋:記憶體配置4GB (1048576), 其中已經使用 3.61GB(946885),還空閒388MB (101691)
在已經使用的記憶體裡,應用程式使用了1.15GB (289752),檔案快取使用了2.57GB(648518)
列出記憶體佔用率排名前15名的程式和相關資訊.
# svmon -Pt15 | perl -e 'while(<>){print if($.==2||$&&&!$s++);$.=0 if(/^-+$/)}'

[@more@]二、sar
sar的預設輸出(顯示了 CPU 使用情況)
-bash-3.00$ sar
SunOS unknown 5.10 Generic_118822-23 sun4u 01/20/2006
00:00:01 %usr %sys %wio %idle
00:10:00 0 0 0 100
. cut ...
09:30:00 4 47 0 49

Average 0 1 0 98

sar 命令輸出中的每一行都是一項單獨的度量,並且在最左邊的列中顯示了時間戳。其他列中則存放了相應的資料。(根據命令列所使用引數的不同,這些列也會有所不同。)在清單 2 中,CPU 使用情況被分解為四種類別:
• %usr: CPU 花費在使用者程式(如應用程式、Shell 指令碼或與該使用者進行的互動)上的時間的百分比。
• %sys: CPU 用來執行核心任務的時間的百分比。在本示例中該數字比較大,這是因為我正從核心隨機數生成器獲取資料。
• %wio: CPU 等待塊裝置(如磁碟)輸入或輸出的時間的百分比。
• %idle: CPU 未進行任何有用操作的時間的百分比。
最後一行是所有資料點的平均值。然而,因為大多數系統都會在忙時間段後經歷空閒時間段,所以平均值並不能反映完整的情況。
同時,對磁碟活動也進行了監視。高磁碟使用率意味著,從磁碟請求資料的應用程式更有可能會被阻塞(暫停),直到磁碟為該程式做好準備。通常,解決方案涉及到將檔案系統拆分到不同的磁碟或陣列。然而,第一步是要知道出現了問題。
sar -d 的輸出顯示了一個度量時間段內各種與磁碟相關的統計資料。為了更加簡潔,清單 3 僅顯示了硬碟驅動器的活動。
sar -d 的輸出(顯示了磁碟活動)

$ sar -d
SunOS unknown 5.10 Generic_118822-23 sun4u 01/22/2006

00:00:01 device %busy avque r+w/s blks/s avwait avserv
. cut ...
14:00:02 dad0 31 0.6 78 16102 1.9 5.3
dad0,c 0 0.0 0 0 0.0 0.0
dad0,h 31 0.6 78 16102 1.9 5.3
dad1 0 0.0 0 1 1.6 1.3
dad1,a 0 0.0 0 1 1.6 1.3
dad1,b 0 0.0 0 0 0.0 0.0
dad1,c 0 0.0 0 0 0.0 0.0
和前面的示例一樣,最左邊的是時間。其他列如下:
• device: 這是指正在進行測量的磁碟或磁碟分割槽。在 Sun Solaris 中,必須透過查詢 /etc/path_to_inst 中所報告的名稱將該磁碟轉換為物理磁碟,然後將該資訊交叉引用到 /dev/dsk 中的專案。在 Linux® 中,使用了磁碟裝置的主從裝置號。
• %busy: 這是讀取或寫入裝置的時間的百分比。
• avque: 這是用來序列化磁碟活動的佇列的平均深度。avque 的值越大,發生的阻塞就越多。
• r+w/s、blks/s:這分別是用每秒的讀或寫操作和磁碟盤塊來表示的磁碟活動。
• avwait:這是磁碟讀或寫操作等待執行的平均時間(單位為毫秒)。
• avserv:這是磁碟讀或寫操作所執行的平均時間(單位為毫秒)。
其中的一些數值,如 avwait 和 avserv 值,直接關係到使用者體驗。磁碟的高等待時間可能表示多個人正在競爭使用該磁碟,這一點可以透過高 avque 數值來證實。高 avserv 值表示磁碟的速度較慢。
同時還收集了許多其他的專案,可使用相應的引數來檢視它們:
• -b 引數顯示了緩衝區資訊和使用緩衝區與必須寫磁碟的比率。
• -c 引數顯示了系統呼叫分解為一些常用的呼叫,如 fork()、exec()、read() 和 write()。高程式建立會導致較差的效能,並且這是可能需要將一些應用程式轉移到其他計算機的訊號。
• -g、-p 和 -w 引數顯示了分頁(交換)活動。高分頁操作是記憶體缺乏的訊號。特別地,-w 選項顯示了程式切換的次數:高的數值表示計算機上執行的內容過多,該計算機在切換任務上花費了比實際工作更多的時間。
• -q 引數顯示了執行佇列的大小,它與當時的平均負載相同。
• -r 引數顯示了一段時間的可用記憶體和交換空間。

三、vmo
vmo -p -o minperm%=5
vmo -p -o maxperm%=90
vmo -p -o maxclient%=90

Although you used to have to change these parameters, you now leave strict_maxperm and strict_maxclient at their default numbers. If strict_maxperm were changed to 1, it would place a hard limit on the amount of memory that could be used for persistent file cache. This is done by making the maxperm value the upper limit for the cache. These days it is unnecessary, because changing the lru_file_repage parameter is a far more effective way of tuning, as you would prefer not to use AIX file caching.
Two other important parameters worth noting here are minfree and maxfree. If the number of pages on your free list falls below the minfree parameter, VMM starts to steal pages (just to add to the free list), which is not good. It continues to do this until the free list has at least the number of pages in the maxfree parameter.
In older versions of AIX when the default minfree was set at 120, you would commonly see your free list at 120 or lower, which led to more paging than was necessary, and worse, threads needing free frames were actually getting blocked because the value would be so low. To address this issue, the default values of minfree and maxfree were bumped up in AIX Version 5.3 to 960 and 1088, respectively. If you are running AIX Version 5.2 or lower, I would recommend these settings, which you can manually change using the commands in Listing 3.

Listing 3. Setting the minfree and maxfree parameters manually
vmo -p -o minfree=960
vmo -p -o maxfree=1088

四、關於AIX上VMO調整引數的若干說明
最近,關於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.6
在一個使用裸裝置的系統中,檔案型記憶體,即上面的%Noncomp,%Client,只需要使用整個系統很少的記憶體;而把大部份的記憶體作為計算型記憶體 (%Comp)來使用,這部份記憶體量主要為ORACLE SGA和PGA所用,其中ORACLE SGA 為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 分頁替換技術入門:http://www.ibm.com/developerworks/cn/aix/library/au-vmm/
AIX 5L 記憶體效能最佳化,第 2 部分: http://www.ibm.com/developerworks/cn/aix/library/au-aixoptimization-memtun2/
vmo 命令中文幫助:
aiX 中 Paging Space 使用率過高的分析與解決:http://www-128.ibm.com/developerworks/cn/aix/library/au-cn-pagingspace/index.html
Optimizing AIX 5L performance: Tuning your memory settings, Part 1:http://www.ibm.com/developerworks/aix/library/au-aixoptimization-memtun1/
AIX 效能調優 記憶體篇之二 Paging Space:http://bldmickey.blog.sohu.com/51694646.html

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7490392/viewspace-1024292/,如需轉載,請註明出處,否則將追究法律責任。

相關文章