AIX作業系統效能分析報告

ruanrong發表於2007-04-12

CPU

$ vmstat 5 5

$ iostat 5 5

[@more@]

1)CPU

$ vmstat 5 5

System configuration: lcpu=8 mem=7744MB

kthr memory page faults cpu

----- ----------- ------------------------ ------------ -----------

r b avm fre re pi po fr sr cy in sy cs us sy id wa

1 5 1943309 1817 0 341 109 2018 6836 0 1246 3524 5000 34 3 32 31

1 8 1943312 861 0 23 812 1975 2909 0 1227 776 4348 13 3 45 39

2 6 1945483 1855 0 78 737 1189 1880 0 639 1287 2119 30 1 39 30

2 5 1949024 1921 0 307 73 1002 2973 0 511 3190 1719 57 1 20 22

4 9 1959284 2146 0 400 35 2745 21198 0 824 21885 3045 62 2 12 24

從上面結果看出,CPUidle1245之間,wait2239之間,表示目前處於空閒狀態的CPU基本屬於正常;但是處於等待狀態的CPU較多,即有較多的程式在等待獲取資源後才能進入CPU執行。

2)記憶體

$ vmstat 5 5

System configuration: lcpu=8 mem=7744MB

kthr memory page faults cpu

----- ----------- ------------------------ ------------ -----------

r b avm fre re pi po fr sr cy in sy cs us sy id wa

1 5 1943309 1817 0 341 109 2018 6836 0 1246 3524 5000 34 3 32 31

1 8 1943312 861 0 23 812 1975 2909 0 1227 776 4348 13 3 45 39

2 6 1945483 1855 0 78 737 1189 1880 0 639 1287 2119 30 1 39 30

2 5 1949024 1921 0 307 73 1002 2973 0 511 3190 1719 57 1 20 22

4 9 1959284 2146 0 400 35 2745 21198 0 824 21885 3045 62 2 12 24

從上面看出,avm(啟用虛擬記憶體頁)1.95M*4K=7.8Gfre(實體記憶體中的空閒頁)1.9k*4k=7.6M,而實體記憶體有8G,表示實體記憶體已經被充分利用。

IBM預設採用LATE模式來排程記憶體和交換空間的使用,即程式需要記憶體時,則排程資料進入實際實體記憶體;而在AIX按照“最近最少使用演算法”排程該段資料到交換空間時,才分配實際的虛擬記憶體給此程式。所以實體記憶體的充分利用是IBM排程機制決定的,並不能確切反映記憶體是否不足。

而從交換空間的使用達到7.8G看,記憶體空間略現不足。

Pi po 值在23400之間,表示每秒從記憶體換入和換出的資料達到102k-1600k,同時fr:sr大部分時間在11以上,表示為獲得可用的實體記憶體,需要檢查更多的實體記憶體頁。綜合結論:記憶體頁面排程頻繁,記憶體容量出現瓶頸。

3)硬碟I/O

$ iostat 5 5

System configuration: lcpu=8 drives=14 paths=2 vdisks=0

tty: tin tout avg-cpu: % user % sys % idle % iowait

0.0 11.7 56.6 1.1 20.2 22.1

Disks: % tm_act Kbps tps Kb_read Kb_wrtn

dac0 0.0 0.0 0.0 0 0

dac0-utm 0.0 0.0 0.0 0 0

dac1 0.0 0.0 0.0 0 0

dac1-utm 0.0 0.0 0.0 0 0

hdisk1 92.3 842.4 210.6 4252 0

hdisk0 74.1 691.8 172.4 3492 0

dac3 0.0 0.0 0.0 0 0

dac3-utm 0.0 0.0 0.0 0 0

dac2 0.0 75.3 12.5 192 188

dac2-utm 0.0 0.0 0.0 0 0

hdisk2 1.8 75.3 12.5 192 188

hdisk3 0.0 0.0 0.0 0 0

cd0 0.0 0.0 0.0 0 0

hdisk4 0.0 0.0 0.0 0 0

從上面看出,hdisk0hdisk1 (為作業系統安裝盤)磁碟利用率達到74%和92%,非常繁忙,同時Kb_read3000k4000k每秒,而Kb_wrtn則為0,表示目前系統的主要I/O為讀操作。而在hdisk0hdisk1上各建有8G的頁面空間作為虛擬記憶體,再考慮到1)中pi po比較大的情況,可以推論是由於頁面空間交換頻繁,導致hdisk0hdisk1I/O比較高。

綜合結論:由於記憶體瓶頸,導致頁面交換頻繁,從而導致作業系統盤I/O過量,影響系統響應速度。

但是導致頁面頻繁交換的根本原因是什麼呢?透過分析下面的引數,以及結合AIX作業系統記憶體排程機制,分析如下:

4) 進一步分析

機器虛擬記憶體引數設定情況如下:

# vmo -a

maxclient% = 80

maxfree = 1088

maxperm = 1525023 (大約6.1G)

maxperm% = 80

maxpin = 1585972

memplace_unmapped_file = 2

mempools = 2

minfree = 960

minperm = 381255(大約1.5G

minperm% = 20

nokilluid = 0

vm_modlist_threshold = -1

vmm_fork_policy = 1

# topas 命令的部分結果如下:

Real,MB 7743

% Comp 64.8

% Noncomp 35.9

% Client 36.3

4個引數的解釋:

minfree maxfree 引數的值

使用空閒列表的目的是保持跟蹤程式終止釋放的實記憶體的頁幀,向要求者立即提供頁幀,而不是等待頁面竊取和與之相連的輸入輸出的結束。minfree 限制了空閒列表的容量,低於該數值時必須開始竊取頁充入空閒列表。當大於maxfree 引數時頁竊取會停止。

minperm maxperm 引數的值

作業系統透過把在曾經讀寫的記憶體頁留在實記憶體一滿足不同要求。如果檔案頁面在它們的頁幀被重新分配前被請求,那就節省了輸入輸出操作。該檔案頁面可以來自本地的或遠端的(如 NFS)系統。

頁幀使用的檔案相對用於計算的(工作或程式文字)段的檔案的比例是鬆散地受控於 minperm maxperm 的值的:

如果 RAM 中檔案頁面所佔的百分比高於 maxperm,頁面替換的竊取只用於檔案頁。

如果 RAM 中檔案頁面所佔的百分比低於 minperm,頁面替換的竊取同時用於檔案頁和計算頁。

如果 RAM 中檔案頁面所佔的百分比介於 minperm maxperm之間,頁面替換隻竊取檔案頁,除非檔案頁的重調入數量大於計算頁數。

其中Noncomp20%-80%之間,此時記憶體頁交換演算法通常只交換檔案快取頁,但如果檔案快取頁的交換率大於程式頁時,程式頁也同樣被交換。由於SGA屬於Comp頁,資料檔案快取屬於Noncomp頁,而在資料大量訪問時,檔案快取頁的交換率大於程式頁(SGA),因此大量的SGA頁面被交換;為避免大量SGA頁被交換,需要降低maxperm%值到35%以下,這樣就只有檔案快取頁面被交換,減少了SGA交換的次數。

5)結論

調整maxperm%minperm%的值,可以將MINPERMMAXPERM分別設為5%20%甚至更小,從而使記憶體更多地被用於OracleSGA而不是系統的檔案快取。

具體命令:# vmo -o minperm%=5 -o maxperm%=20

注意:加-p引數可以永久更改系統的配置,否則只改動當前的系統配置,重新啟動後則失效。

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

相關文章