關於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 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的值,避免在它進行頁面替換的時候,替換其他型別的頁。
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 實體記憶體中的客戶機頁面數(客戶機頁面就是一個遠端檔案頁面)
3、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
把這部分知識理一理,做一下記錄。
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 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的值,避免在它進行頁面替換的時候,替換其他型別的頁。
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 實體記憶體中的客戶機頁面數(客戶機頁面就是一個遠端檔案頁面)
3、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
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25462274/viewspace-2112378/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於xtrabackup --slave-info引數的說明
- 關於 navigator.mediaDevices.getUserMedia 的輸入引數說明dev
- 週報調整的若干思考
- mysql relay log相關引數說明MySql
- mysqldump引數說明MySql
- TOP引數說明
- 部落格關於ROS機器人作業系統內容調整說明ROS機器人作業系統
- Nginx的gzip配置引數說明Nginx
- 關於 Jupyter 的使用說明
- Oracle Table建立引數說明Oracle
- GoldenGate HANDLECOLLISIONS引數使用說明Go
- linux常用核心引數說明Linux
- 【AIX】AIX7.1 C編譯環境部署指導說明AI編譯
- 桌上型電腦電源相關引數說明
- 關於DedeCMS版本號的說明
- swoole優化核心引數調整優化
- JVM 引數調整對 sortx 的影響JVM
- 關於數字經濟時代的若干思考
- mydumper和myloader引數使用說明
- makefile中的一些引數說明
- ABAP-BITMAP的命令引數的使用說明
- 關於學習心態的調整
- 關於部落格更新說明
- 關於MySQL中的8個 character_set 變數說明MySql變數
- MySQL:關於ICP特性的說明(未完)MySql
- PostgreSQL安裝完成後,引數調整SQL
- Mysql my.cnf部分引數說明MySql
- /etc/sysctl.conf部分引數說明
- Azure Blob (三)引數設定說明
- 所有初始化引數說明(轉)
- pytest(10)-常用執行引數說明
- 資料泵的TRANSFORM引數說明及使用ORM
- 關於支援OPenACC的編譯器說明編譯
- solaris記憶體引數調整及管理記憶體
- 達夢資料庫引數調整方法資料庫
- 關於JavaScript跨域的若干想法JavaScript跨域
- JQuery Datatables Columns API 引數詳細說明jQueryAPI
- MySQL Galera cluster叢集常用引數說明MySql
- MogDB 2.1.1 初始化引數概要說明