【AIX】AIX內存機制

【AIX】AIX內存機制面試

1  虛擬內存

虛擬內存是物理內存和交換空間(Paging Space)組合造成的虛擬內存空間, 經過虛擬的地址空間映射到物理內存或者 Paging Space算法

AIX 中,虛擬內存段被分紅 4096 字節大小的頁,物理內存則被劃分爲 4096 字節大小的頁幀(page frameshell

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

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羣,學習最實用的數據庫技術。


DBA筆試面試講解
歡迎與我聯繫
相關文章
相關標籤/搜索