【AIX】AIX記憶體機制

lhrbest發表於2017-07-26

【AIX】AIX記憶體機制

1  虛擬記憶體

虛擬記憶體是實體記憶體和交換空間(Paging Space)組合形成的虛擬記憶體空間, 通過虛擬的地址空間對映到實體記憶體或者 Paging Space

AIX 中,虛擬記憶體段被分成 4096 位元組大小的頁,實體記憶體則被劃分為 4096 位元組大小的頁幀(page frame

1.1  實體記憶體

實際存在的實體記憶體條上的可供系統使用的快取。

實體記憶體大小的檢視:

1)        # prtconf | grep memory

2)        # vmstat

3)        # lsattr –El sys0 –a realmem


A.
     
永久段(
Persistent segment)和工作段(Working segment 

AIX 區分不同的儲存段型別。理解不同的儲存段型別,特別是工作段和永久段的區別非常重要。 

永久段在磁碟上有一個永久的儲存位置。含有不可編輯資料的檔案或者只讀的執行程式被對映到持久段,例如包含資料的檔案,可執行檔案VMM 引數控制什麼時候分配給永久段的 RAM 頁幀可以被重寫,並且用於儲存新的資料。 

工作段是臨時性的,僅在它們被某個程式使用的時候存在,並且沒有固定的磁碟位置。程式堆疊以及資料區共享庫文字核心資料被對映到工作段。當工作段資料也不能存在於存中的時候,他們被儲存在磁碟上的頁交換空間。

程式退出執行,所有工作段佔用的頁面被返回。

# svmon –G可以看到這兩種記憶體型別
clip_image001 

B.       Computational(計算型)和 File(檔案型)

Computational 型記憶體包含 working-storage segments or program text (executable files) segments。也就是包括 work(工作段)再加上 persistent(永久段)中的可執行檔案的部分。 File(檔案型)是除去計算型的所有記憶體. Computational 型可以理解為讀入可執行檔案的地方,檔案型可以理解為讀入檔案中的 data 部分。


# topas
 

clip_image002 

C.      Client 型別

Persistent 段的記憶體進一步被分類,其中 client 型別的記憶體被用於 map remote

files(例如通過 NFS 訪問的檔案).Enhanced JFS file systemJFS2)使用 clients page 來快取 cache 

 

1.2    Paging Space


Paging space 是系統的一個物理儲存空間, 佔用一定的磁碟空間, 可以是 logical volume 或者檔案的形式。Paging space 是系統的一個物理儲存空間, 佔用一定的磁碟空間, 可以是 logical volume 或者檔案的形式。檢視當前 paging space 的命令:
clip_image003 


1.3     Page Fault

檢視 5 秒內調頁錯誤

clip_image004 

1.4    Page In&Page Out

The number of pages paged in from paging space, and The number (rate) of pages paged out to paging space.


vmstat 檢視

clip_image005 


注:如果持續看到 po 但是沒有看到 pi 的增長,並不一定代表出現了 Thrashing, 比如系統正在讀取大量的 persistent pages 會導致看到大量的 page out, 這時候需要檢視一下應用的型別。被 page out 出去的資料,如果有程式需要再次 reference 的時候,將產生 page fault,然後通過 page in 再次寫入到記憶體。

1.5    Thrashing(顛簸)表示系統連續地 paging in out, 經常是系統缺乏記憶體的現象。

1.6    Repage

Page fault 可以是一個新的 page fault,也可以是一個 repage fault。出現 new page fault 是指第一次呼叫, 近沒有相關的記錄。出現 repage fault 是指當剛剛呼叫過但是已經被替換出去了(很可能寫回磁碟了),再次呼叫。發生一次 page fault 是正常的,但應該避免發生多次的 page faultAIX 在這裡是做了一種統計,

分別統計計算型和非計算型記憶體發生 repage 的數量,我們可以用 vmo 去調整這兩種記憶體的 page 的機制。

2   Paging Space的管理機制

AIX 4.3.2 及以後版本中,作業系統提供了 3 Paging Space 的管理機制。 

分別為: 

Early Page Space Allocation (EPSA) 

Late Page Space Allocation (LPSA) 

Deferred Page Space Allocation (DPSA)

2.1    Early Page Space Allocation

AIX 系統中,當 Paging Space 的使用率達到一定百分比時,系統就無法

將需要 page out 的頁面寫到 Paging Space 中,這時候,該程式就很可能被殺掉。為了避免這種情況的發生,EPSA 機制會保證當程式被啟動時,在 Paging Space 中先申請一塊頁面空間,該空間大小與該程式所需要佔用的實際記憶體的大小一致(將環境變數 PSALLOC 設為 early,也就是“export PSALLOC=early”)。這樣就保證當程式使用 malloc()呼叫的同時,在 Paging Space 中有相應的空間保留給該程式,從而保證該程式的 page out 操作。這種機制雖然可以保證現有的程式安全,但由於很多被保留的頁面空間並沒有被用到,造成了非常大的空間浪費。同時,也需要 Paging Space 的大小比實際記憶體值要大很多。 

2.2    Late Page Space Allocation

AIX 4.2.1 之後, 4.3.2 之前,作業系統預設使用 LPSA 機制。這種機制是指當程式啟動後,系統並不在 Paging Space 中為該程式保留相應的頁面。只有當該程式的實際記憶體頁面被修改過後,才會在 Paging Space 中為這些被修改過的頁面申請空間。這種機制在一定程度上減少了 Paging Space 的空間浪費,但是對系統也存在一定的風險。比如,當一些後起的程式用了幾乎全部的 Paging Space 後,由於先起的程式並沒有保留足夠的 Paging Space 空間用於程式的 page out 操作,會導致該程式被殺掉。

2.3     Deferred Page Space Allocation 

AIX4.3.2 之後,DPSA 是系統預設的 Paging Space 的管理機制。在這種機

制下,系統不會為程式保留任何的 page 頁面,直到系統確認確實需要將記憶體中

的頁面 page out Paging Space 中,才會把 Paging Space 的頁面分配給該程式。這種機制不會造成 Paging Space 的空間浪費,但和 LPSA 一樣,這種機制也給系統帶來了相同的風險。

DPSA AIX 432 及以後版本中所使用的預設機制,它通常適用於配有很大容量 RAM 的系統,因為它可以減少很多 Paging Space 資源的浪費。對於 RAM 容量不是很大(比如小於 2GB)的系統,使用者可以採用 LPSA EPSA 機制。用

“/usr/samples/kernel/vmtune -d 0” 命令可以停止使用 DPSA,而使用 LPSA。用 “/usr/samples/kernel/vmtune -d 0” 命令加上“export PSALLOC=early”命令可以停止使用 DPSA,而使用 EPSA “/usr/samples/kernel/vmtune -d 1” 命令可以啟用 DPSA 

2.4   Paging Space的頁面釋放 

AIX 作業系統中,當記憶體中的頁面被 page 到了 Paging Space 中以後,那麼這一塊 Paging Space 的頁面空間將被保留給該記憶體頁面,即使該頁面已經被寫回到記憶體中。因此,用 lsps 命令看到的 Paging Space 的使用率可能並不能真實反映真正位於 Paging Space 中的頁面數,因為有些頁面可能已經寫回到了記憶體中。如果寫回到記憶體中的頁面是執行緒的工作儲存頁面(Working Storage),那麼隨著該執行緒的退出或者是相關的記憶體被釋放 -- free()Paging Space 中的相應頁面塊也才會被釋放。 

2.5檢視當前Paging space機制

clip_image007 

注:defps=1 表示採用的是 DPSA,如果 defps=0 表示採用的是 LPSA

?  修改 paging space 的機制,採用 LPSA 

# vmo -o defps=0

?  檢視 defps 屬性

clip_image008 

當前值是 1,預設值是 1,啟動時的值是 1, 取值範圍是 0-1,型別是動態可以修改的

2.6    Paging-space thresholds tuning

如果 paging space 少到一定的空間,作業系統將會通過先告警程式釋放 paging space,後可能會 kill 程式.相關的兩個引數 npswarn npskill

# vmo -a |grep npswarn               npswarn = 4096

預設值:max5124×npskill

# vmo -h npswarn

Help for tunable npswarn:

Specifies the number of free paging-space pages at which the operating system begins sending the SIGDANGER signal to processes. Default: MAX (512,4*npskill). The value of npswarn must be greater than zero and less than the total number of paging space pages on the system. Increase the value if you experience processes being killed because of low paging space. # vmo -a |grep npskill               npskill = 1024 預設值:max (64, paging space 總頁數 /128)

# vmo -h npskill

Help for tunable npskill:

Specifies the number of free paging-space pages at which the operating system begins killing processes. Default: MAX (64, number_of_paging_space_pages/128). The npskill value must be greater than zero and less than the total number of paging space pages on the system.

2.7     Paging space garbage collection

AIX 5.3 之後可以利用 paging space garbage collection 機制來 free up paging space。只作用於 deferred page space allocation policy

?    方法一:re-pagein 後的垃圾收集

一個頁面從交換空間調回到記憶體之後,釋放磁碟資料塊。

相關引數:

npsrpgmin停止 re-pagein 垃圾收集的 free paging space blocks 數目 npsrpgmax開始 re-pagein 垃圾收集的 free paging space blocks 數目

?    方法二:scrubbing memory

另一種方法是,psgc 核心程式實現清理記憶體。psgc 核心程式釋放那些已修

改且不會再調出記憶體頁或者沒有修改過在交換空間的資料塊。相關的引數:

npsscrubmin:停止 scrubbing 記憶體的 free paging space blocks 數目 npsscrubmax:開始 scrubbing 記憶體的 free paging space blocks 數目

# vmo -a |grep nps                npskill = 62464              npsrpgmax = 499712             npsrpgmin = 374784           npsscrubmax = 499712           npsscrubmin = 374784               npswarn = 249856

2.8   Paging Space的建立原則

AIXPaging Space大小確定的指導原則如下(理論上)

?       系統實際記憶體小於64MB, paging space= 2 * RAM  

?       系統實際記憶體在 64MB to 256MB 之間, Page Space = RAM size + 16MB  

?       系統實際記憶體大於 256MB , Page Space = 512 + ( RAM - 256 ) * 1.25  

?       當記憶體超過4GB,則需要根據實際情況來定,一般可初始3GB, 然後觀察paging space的使用情況,如果使用率超過70%, 則需要增加paging space  

此外在建立Paging Space時還應遵循以下原則以提高效能:

?       建立的數量應儘可能的多; 

?       每個Paging Space的大小應該相同; 

?       每個Paging Space應儘可能的分配在不同的硬碟上。 

工程和維護建議(目前記憶體和硬碟都比較大,相對比較實用些):

       如果硬碟空間不是問題的話,建議可以是記憶體的兩倍。如果記憶體大於8G或者16G,可以考慮先和記憶體空間相同。同時用兩塊不同的內建盤各分配一半的paging space空間。 對於做了根盤映象的系統,建議可以不作映象paging space(維護時注意這些特點)。 大的swap 空間可以避免DPSA可能產生的風險,對運維來說,可能可以減少相關的維護分析工作。

3虛擬記憶體管理器VMM

3.1   VMM簡介

AIX? 虛擬記憶體管理器 (AIX VMM) 是一種基於分頁的虛擬記憶體管理器。一個分頁就是一個固定大小的資料塊。分頁既可以位於記憶體中(也就是說,對映到實體記憶體中的某個位置)、也可以位於磁碟中(也就是說,從實體記憶體中替換到分頁空間或者檔案系統)。

AIX VMM 有一個非常獨特的方面,即快取的檔案資料的管理。AIX VMM 將快取的檔案資料與對其它型別虛擬記憶體(例如,程式資料、程式堆疊等等)的管理整合到了一起。它將檔案資料快取為分頁,就如同程式的虛擬記憶體一樣。

AIX 根據需要將分頁對映到實際記憶體。如果應用程式引用了某個分頁,而

該分頁並沒有對映到實際記憶體中,那麼系統將產生一個缺頁。為了解決缺頁, AIX 核心會將所引用的分頁載入到實際記憶體中的某個位置。如果所引用的分頁是一個新的分頁(也就是說,位於先前從未引用過的程式資料堆中的分頁),那麼載入所引用的分頁只需要用零來填充一個實際記憶體位置(也就是說,提供一個填滿零的分頁)。如果所引用的分頁是一個預先存在的分頁(也就是說,檔案中的某個分頁、或者先前換出的某個分頁),那麼載入所引用的分頁需要從磁碟

(分頁空間或者磁碟檔案系統)中將該分頁讀入到實際記憶體中的某個位置。

在將分頁載入到實際記憶體中之後,它將被標記為未經修改的。如果某個程式或者核心修改了該分頁,那麼該分頁的狀態將更改為已修改的。這允許 AIX 跟蹤在將某個分頁載入到記憶體之後是否對其進行過修改。

隨著系統將更多的分頁新增到實際記憶體中,實際記憶體中空閒位置(可以包含分頁)的數目將會減少。也可以將空閒位置的數目稱為空閒分頁框架的數目。當空閒分頁框架的數目達到某個較低的值時,AIX 核心就必須清空實際記憶體中的某些位置,以便重用新的分頁。這個過程也稱為分頁替換。

AIX VMM 提供了一些後臺守護程式,專門負責進行分頁替換。其中一個分頁替換守護程式稱為 lrud(顯示為 ps -k 的輸出中的 lrud)。lrud 守護程式負責在記憶體分頁中進行掃描,並回收某些分頁以便為實際記憶體騰出空間。當分頁替換守護程式確定它希望回收某個特定的分頁時,這個分頁替換守護程式將執行下面兩項操作中的一項: 

?       如果該分頁經過了修改,那麼分頁替換守護程式將該分頁寫入到輔助儲存位置(例如,分頁空間或者檔案系統磁碟)。將包含該分頁的實體記憶體塊標記為空閒,併為其它的分頁做好重用的準備。 

?       如果該分頁沒有經過修改,那麼分頁替換守護程式可以簡單地將實體記憶體塊標記為空閒,這樣一來,就可以將該實體記憶體塊重用於另一個分頁。在這種情況下,分頁替換守護程式不需要將該分頁寫入到磁碟,因為該分頁在記憶體中的版本並沒有經過修改,因此與位於磁碟中(在分頁空間中、或者在磁碟檔案系統中)的分頁副本完全相同。  分頁替換守護程式可以根據系統記憶體的使用情況和可調引數,選擇不同型別的分頁進行回收。

簡單地說:

VMM 服務於來自系統以及應用程式的記憶體請求。虛擬地址空間劃分成段。每段的大小是 256 MB,它是虛擬記憶體地址空間中一個鄰接的部分,資料物件可對映到該空間。虛擬記憶體段以頁為單位進行分割槽,每個頁面大小為 4096 位元組,可以存在於實體記憶體中或者存在於磁碟上的頁交換空間。AIX 通過使用虛擬記憶體可以定址比系統中實體記憶體更大的儲存空間。

虛擬地址空間劃分成段。每段的大小是 256 MB,它是虛擬記憶體地址空間中一個鄰接的部分,資料物件可對映到該空間。虛擬記憶體段劃分成固定大小的單元叫做頁。預設頁面大小是 4096 位元組。段中的每頁在需要之前可位於實際記憶體(RAM)中,或儲存在磁碟上。同樣,實際記憶體也可以劃分成 4096 位元組的頁幀 page frame

3.2   VMM的目標

?  小化使用虛擬記憶體的總處理器時間和磁碟頻寬代價 

?  小化發生 page fault 的響應時間代價

VMM 使用了一個頁面替換演算法來確定當前處於記憶體中的哪些虛擬記憶體頁要將它們的 page frames 重新指定到空閒列表中。頁面替換演算法使用了幾個機制:

?       虛擬記憶體段分成 persistent 持久段或 work 工作段。 

?       虛擬記憶體段分成包含計算 computational 記憶體或檔案 file 記憶體。 

?       引起 page fault 的虛擬記憶體頁。 

?       page fault 分成 new page fault repage faults 

?       在每個虛擬記憶體段中維護一個 repage faults 率的統計資訊。 

?       使用者可調閾值影響頁面替換演算法的結果。

3.3空閒列表Free List

VMM 主要有以下兩個主要功能: 

(1)    管理頁幀的分配 

(2)    解析對當前沒有調入 RAM 中的虛擬記憶體頁的引用

為了完成上述功能,VMM 維護一個可用幀列表,並且使用一個頁面替換演算法決定哪些當前在 RAM 中的虛擬記憶體頁使用的頁幀將被分配到可以可用幀列

表。頁面替換演算法將考慮永久段(Persistent segment)和工作段(Working segment)的分配、頁交換和 VMM 閾值等因素。在絕大多數環境中,偶爾時候 VMM 必須通過 reasign 由執行程式佔有的一些頁面幀來新增到空閒列表中。需要 reasign 頁面幀的虛擬記憶體頁由 VMM 的頁面替換演算法進行選擇。VMM 閾值決定了重新指定的幀的數量。

檢視空閒列表:

clip_image010

3.4頁面替換(Page replacement

當空閒列表中可用的實際記憶體幀數量減少時就會呼叫一個頁面替換器(stealer)。頁面替換器在整個頁面幀表(PFT)中移動,尋找可替換(steal)的頁面。

PFT 中包含一些標誌用來表示哪些頁已經被引用,哪些頁已經被修改。如果頁面替換器遇到一個已經引用的頁,它不會替換這個頁而是為該頁重新設定引用標誌。在下一個時鐘(頁面替換器)經過該頁且引用位仍未啟用時,它便被替換。初次通過時未被引用的頁面會立即得到替換。修改標誌表示該頁進入記憶體後上面的資料已經改變。當頁面要被替換時,如果設定了修改標誌,那麼在替換該頁之前進行頁面調出呼叫。屬於工作段的頁面寫入調頁空間;而持久段中的頁面寫到磁碟上。

如圖所示:

clip_image011 

上圖中: 第一個表是具有四列的頁面幀表,它包含實際地址、段型別、引用標誌和修改標誌。第二個表叫做空閒列表,它包含所有空閒頁的地址。後一個表代表除去所有空閒地址後 終得到的頁面幀表。

除了頁面替換以外,演算法還可通過使用一個包含 近缺頁故障標識的歷史緩衝區來跟蹤新頁故障(第一次引用)和重新調頁故障(引用已經調出的頁)。然後它可以儘量平衡檔案(持久資料)頁面的調出和計算(工作儲存器或程式文字)頁面的調出。

當程式退出時,它的工作儲存器立刻釋放並且它的關聯記憶體幀也放回到空閒列表中。然而由該程式開啟的任何檔案可保留在記憶體中。

 

如果執行緒在單處理器上執行,那麼頁面替換可直接線上程作用域中進行。在多處理器系統中,頁面替換通過核心程式 lrud 進行,在達到閾值 minfree 時,該程式被分派到 CPU 中。從 AIX 4.3.3 開始,核心程式 lrud 是多執行緒的,每個儲存池中一個執行緒。根據 CPU 數量和 RAM 大小將實際記憶體劃分成平均大小的儲存池。系統中儲存池的數量可通過執行命令 vmo -a 來確定。

clip_image012 

3.5  重新調頁(Repaging)

Page faults

a)new page fault b)repage fault

如果沒有 近引用頁面的記錄的話,會出現一個 new page fault。而出現 repage faults 是指一個知道其 近已經引用的頁再次被引用,但由於該頁在上次訪問後已經被替換(可能寫到磁碟上)而在記憶體中找不到它。

理想的頁面替換策略通過總是替換那些不會再次引用的頁面幀而完全減少 repage faults(假設有足夠的實際記憶體)。因而 repage faults 數是頁面替換演算法有效性的一個相反評測標準,演算法將頻繁被重用的頁面儲存在記憶體中,從而降低了總體 I/O 需求並潛在地改善了系統效能。


為了分清一個缺頁故障是新頁故障還是重新調頁故障,VMM 維護一個重新調頁歷史記錄緩衝區,它包含 N 個 近缺頁故障的頁面標識,其中 N 是記憶體可保留的幀數。例如,512 MB 記憶體需要一個 128 KB repage faults 歷史記錄緩衝區。在頁面調進時,如果它的標識可在重新調頁歷史記錄緩衝區中找到,則將它計為一個重新調頁。VMM 還可以分別評估計算記憶體重新調頁率和檔案記憶體重新調頁率,只需為每種型別的記憶體維護 repage faults 計數即可。每次頁面替換演算法執行時都將重新調頁率乘以 0.9,這樣可比歷史重新調頁活動更有力地反映近的重新調頁活動。


4  引數調整,只為記憶體調優

4.1   minfreemaxfree

1)      minfree

空閒列表中可接受的實際記憶體頁面幀的小數量。當空閒列表的大小低於這個數時,VMM 開始替換頁面。它將一直替換頁面直到空閒列表的大小達到 maxfree

2)      maxfree

free list 的大小超過 maxfree 的時候,VMM page stealing 將停止。當程式終止並釋放它們的工作段頁面或刪除其頁面在記憶體中的檔案時,結果是空閒列表的大小可能會超過這個數。

注:從AIX 5.3開始, minfree引數的預設值增加到每個記憶體緩衝池960 maxfree 引數的預設值增加到每個記憶體緩衝池1088

minfree = max(960,邏輯 cpu * 120)/memory pools 數量)  

maxfree = minfree + (邏輯 cpu * maximum read ahead) /memory pools 數量)

 Where, 


1.檢視 cpu 個數: bindprocessor -q (count number of available processors)  2.memory pools 數量:vmstat -v(note: If the number is 0 use 1 as a default) Maximum read ahead is the greater of maxpgahead or j2_maxPageReadAhead from ioo -a

 4.2  minpermmaxperm


    minperm maxperm 是兩個 基本的分頁替換可調引數。這兩個可調引數用於指出 AIX 核心應該使用多少記憶體來快取非計算性的分頁。maxperm 可調引數指出應該用於快取非計算性分頁的 大記憶體量。

    在預設情況下,maxperm 是一個非嚴格的限制,這意味著在某些情況下可以超出這個限制。將 maxperm 設定為非嚴格的限制,這允許在具有可用空閒

記憶體的時候,可以在記憶體中快取更多的非計算性檔案。通過將 strict_maxperm 可調引數設定為 1,就可以使 maxperm 限制成為嚴格的限制。當 maxperm

嚴格限制的時候,即使有可供使用的空閒記憶體,核心也不允許非計算性分頁的數

目超出 maxperm 的限制。因此,將 maxperm 作為嚴格限制的缺點是,非計算性分頁的數目不能超出 maxperm 的限制,並且在系統中具有空閒記憶體的時候,也不能使用更多的記憶體。minperm 限制指出應該用於非計算性分頁的 低記憶體量。

    非計算性分頁的數目稱為 numpermvmstat –v 命令可以顯示系統的 numperm 值所佔系統實際記憶體的百分比。

下面的給出了有關這些可調引數在不同的系統條件下如何進行工作的概況:

clip_image013 

 
  
當非計算性分頁的數目 numperm maxperm 的時候,AIX 分頁替換守護程式嚴格地選擇非計算性分頁(例如,快取的非可執行檔案)進行操作。

    當非計算性分頁的數目 numperm minperm 的時候,AIX 分頁替換守護程式將選擇計算性分頁和非計算性分頁進行操作。在這種情況下,AIX 將掃描兩類分頁,並且回收近來較少使用的分頁。


當非計算性分頁的數目(numperm)在 minperm maxperm 之間的時候, lru_file_repage 可調引數將控制 AIX 分頁替換守護程式替換的分頁型別
clip_image014 


numperm minperm maxperm 之間的時候,如果 lru_file_repage 可調引數設定為 1,那麼 AIX 分頁替換守護程式將根據其內部重新分頁表來確定選擇何種型別的分頁進行操作。
AIX 核心維護了一個重新分頁表,以便確定哪些分頁在換出後將很快地換入。當核心將一個分頁換出、然後再將其換入的時候,通常表示這個分頁經常會被使用,並且該分頁應該保留在記憶體中。核心記錄了對計算性分頁重新分頁的次數,以及對非計算性分頁重新分頁的次數。然後,AIX 核心可以使用這個資訊來確定哪一類分頁的重新分頁工作更加頻繁(因而,表示這一類分頁正在頻繁地使用)。當 lru_file_repage 可調引數設定為 1 時,AIX 核心使用這個重新分頁資訊來確定是否僅選擇非計算性的分頁進行操作、或者選擇計算性的和非計算性的分頁進行操作。如果計算性分頁的重新分頁速度比非計算性分頁的重新分頁速度高,那麼 AIX 核心將僅選擇非計算性的分頁進行操作(因為計算性分頁的使用更為頻繁)。如果非計算性分頁的重新分頁速度比計算性分頁的重新分頁速度高,那麼 AIX 核心將選擇計算性的分頁和非計算性的分頁進行操作。

在大多數的客戶環境中, 理想的方式是始終讓核心只選擇非計算性的分頁進行操作,因為與對非計算性的分頁(即資料檔案快取)進行分頁相比,對計算性的分頁(例如,程式的堆疊、資料等等)進行分頁通常會對程式產生更大的效能開銷。因此,可以將 lru_file_repage 可調引數設定為 0。在這種情況下,當 numperm minperm maxperm 之間的時候,AIX 核心始終選擇非計算性的分頁進行操作。

minperm 建議值:5%

maxperm 建議值:20%

4.3  maxclient 

除了 minperm maxperm 可調引數之外,還有一個 maxclient 可調引數。

maxclient 可調引數指定應該用於快取非計算性客戶端分頁的 大記憶體量的限

制。因為所有非計算性客戶端分頁是非計算性永久儲存分頁總數的子集,所以 maxclient 限制必須始終小於或者等於 maxperm 限制。非計算性客戶端分頁的數目稱為 numclientvmstat v 命令可以顯示系統

numclient 值佔系統實際記憶體的百分比。

在預設情況下,maxclient 限制是嚴格的限制。這意味著,AIX 核心不允許非計算性的客戶端檔案快取超出 maxclient 限制的範圍(也就是說,AIX 核心

不允許 numclient 超出 maxclient)。當 numclient 達到 maxclient 限制時,AIX

核心將採用特殊的、僅客戶端的模式開始分頁替換。在這種僅客戶端的模式中, AIX 分頁替換守護程式將嚴格地選擇客戶端分頁進行操作。 maxclient<maxperm

5  監視系統的記憶體使用情況

5.1    vmstat -v

# vmstat -v

       4980736 memory pages

        739175 lruable pages

        432957 free pages

             1 memory pools

         84650 pinned pages

          80.0 maxpin percentage

          20.0 minperm percentage  <<- system’s minperm% setting

          80.0 maxperm percentage  <<- system’s maxperm% setting

           2.2 numperm percentage  << % of memory containing non-comp. pages

         16529 file pages          <<- # of non-comp. pages

           0.0 compressed percentage

             0 compressed pages

           2.2 numclient percentage <<- % of memory containingnon-comp. client pages

          80.0 maxclient percentage <<- system’s maxclient% setting

         16503 client pages         <<- # of client pages

             0 remote pageouts scheduled

             0 pending disk I/Os blocked with no pbuf

             0 paging space I/Os blocked with no psbuf

          2484 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

             0 Virtualized Partition Memory Page Faults

          0.00 Time resolving virtualized partition memory page faults

 

因此,在上面的示例中,一共有 16529 個非計算性的檔案分頁被對映到了記憶體中。這些非計算性的分頁使用了 2.2% 的記憶體。在這 16529 個非計算性的檔案分頁中,有 16503 個是客戶端分頁。 

5.2  svmon –G

#  svmon -G

               size      inuse       free        pin    virtual memory       786432     209710     576722     133537     188426 pg space     131072       1121

 

               work       pers       clnt pin          133537          0          0 in use       188426          0      21284

 

        要了解系統實際記憶體的使用情況,svmon顯示了下面三列: 

?       work——工作儲存 

?       pers——永續性儲存(永續性儲存分頁都是非客戶端分頁,即 JFS 分頁。) 

?       clnt——客戶端儲存 

對於每種分頁型別,svmon將顯示下面兩行: 

?       inuse——對映到記憶體中的 4K 分頁的數目 

?       pin ——對映到記憶體中的、且固定的 4K 分頁的數目(pin inuse的子集) 

因此,在上面的示例中,一共有 188426 個工作儲存分頁對映到記憶體中。在這

188426 個工作儲存分頁中,有 133537 個是固定的(也就是說,不能換出的)。示例中顯示沒有持久的儲存分頁(因為系統中沒有使用 JFS 檔案系統)。一共有 21284 個客戶端儲存分頁,它們中沒有一個是固定的。 

svmon 命令沒有顯示永久儲存分頁的數目,但這個數目可以由 svmon 的輸出計

算得到。如前所述,永久儲存分頁的數目是永續性儲存分頁數目和客戶端儲存分

頁數目的總和。因此,在上面的示例中,系統中一共有 21284 個永久儲存分頁: 

 

0 persistent storage pages + 21284 client storage pages = 21284 permanent storage pages


5.3  
具有 佳效能的可調引數

lru_file_repage = 0 maxperm = 90% maxclient = 90% minperm = 3%

strict_maxclient = 1 (default) strict_maxperm = 0 (default)

5.4vmo
clip_image012[1] 

檢視核心引數的含義:



-L [Tunable] For example: vmo –L minperm

clip_image016 


修改引數為了讓 os 重新啟動也成效,可以不自己用 shell 指令碼,直接加 -r 引數,這樣都記錄在 /etc/tunables/nextboot 中了 vmo -r -o minperm%=5 vmo -r -o maxclient%=20 vmo -r -o maxperm%=20

另外說明,為了讓記憶體限制成為 hard limit,可以設定

vmo -r -o strict_maxperm=1

5.5  ioo -a

clip_image017 

啟用記憶體相似性:

vmo -o memory_affinity=1





About Me

...............................................................................................................................

● 本文整理自網路

● 本文在itpub(http://blog.itpub.net/26736162)、部落格園(http://www.cnblogs.com/lhrbest)和個人微信公眾號(xiaomaimiaolhr)上有同步更新

● 本文itpub地址:http://blog.itpub.net/26736162/abstract/1/

● 本文部落格園地址:http://www.cnblogs.com/lhrbest

● 本文pdf版及小麥苗雲盤地址:http://blog.itpub.net/26736162/viewspace-1624453/

● 資料庫筆試面試題庫及解答:http://blog.itpub.net/26736162/viewspace-2134706/

● QQ群:230161599     微信群:私聊

● 聯絡我請加QQ好友(646634621),註明新增緣由

● 於 2017-07-01 09:00 ~ 2017-07-31 22:00 在魔都完成

● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解

● 版權所有,歡迎分享本文,轉載請保留出處

...............................................................................................................................

拿起手機使用微信客戶端掃描下邊的左邊圖片來關注小麥苗的微信公眾號:xiaomaimiaolhr,掃描右邊的二維碼加入小麥苗的QQ群,學習最實用的資料庫技術。

【AIX】AIX記憶體機制
DBA筆試面試講解
歡迎與我聯絡

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

相關文章