天天看點

【AIX】AIX記憶體機制

【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可以看到這兩種記憶體類型

【AIX】AIX記憶體機制

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

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

# topas 

【AIX】AIX記憶體機制

C.      Client 類型

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

files(例如通過 NFS 通路的檔案).。Enhanced JFS file system(JFS2)使用 clients page 來緩存 cache。 

Paging space 是系統的一個實體存儲空間, 占用一定的磁盤空間, 可以是 logical volume 或者檔案的形式。Paging space 是系統的一個實體存儲空間, 占用一定的磁盤空間, 可以是 logical volume 或者檔案的形式。檢視目前 paging space 的指令:

【AIX】AIX記憶體機制

檢視 5 秒内調頁錯誤

【AIX】AIX記憶體機制

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

vmstat 檢視:

【AIX】AIX記憶體機制

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

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

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

分别統計計算型和非計算型記憶體發生 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)

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

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

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

在 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。 

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

【AIX】AIX記憶體機制

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

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

# vmo -o defps=0

?  檢視 defps 屬性

【AIX】AIX記憶體機制

目前值是 1,預設值是 1,啟動時的值是 1, 取值範圍是 0-1,類型是動态可以修改的

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

# vmo -a |grep npswarn               npswarn = 4096

預設值:max(512,4×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.

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

AIX中Paging 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

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。

?  小化使用虛拟記憶體的總處理器時間和磁盤帶寬代價 

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

VMM 使用了一個頁面替換算法來确定目前處于記憶體中的哪些虛拟記憶體頁要将它們的 page frames 重新指定到空閑清單中。頁面替換算法使用了幾個機制:

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

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

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

?       page fault 分成 new page fault 或 repage faults。 

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

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

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

(1)    管理頁幀的配置設定 

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

為了完成上述功能,VMM 維護一個可用幀清單,并且使用一個頁面替換算法決定哪些目前在 RAM 中的虛拟記憶體頁使用的頁幀将被配置設定到可以可用幀列

表。頁面替換算法将考慮永久段(Persistent segment)和工作段(Working segment)的配置設定、頁交換和 VMM 門檻值等因素。在絕大多數環境中,偶爾時候 VMM 必須通過 reasign 由運作程序占有的一些頁面幀來添加到空閑清單中。需要 reasign 頁面幀的虛拟記憶體頁由 VMM 的頁面替換算法進行選擇。VMM 門檻值決定了重新指定的幀的數量。

檢視空閑清單:

【AIX】AIX記憶體機制

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

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

如圖所示:

【AIX】AIX記憶體機制

上圖中: 第一個表是具有四列的頁面幀表,它包含實際位址、段類型、引用标志和修改标志。第二個表叫做空閑清單,它包含所有空閑頁的位址。後一個表代表除去所有空閑位址後 終得到的頁面幀表。

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

當程序退出時,它的工作存儲器立刻釋放并且它的關聯記憶體幀也放回到空閑清單中。然而由該程序打開的任何檔案可保留在記憶體中。

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

【AIX】AIX記憶體機制

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  參數調整,隻為記憶體調優

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  minperm、maxperm

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

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

記憶體的時候,可以在記憶體中緩存更多的非計算性檔案。通過将 strict_maxperm 可調參數設定為 1,就可以使 maxperm 限制成為“嚴格”的限制。當 maxperm 是

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

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

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

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

【AIX】AIX記憶體機制

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

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

當非計算性分頁的數目(numperm)在 minperm 和 maxperm 之間的時候, lru_file_repage 可調參數将控制 AIX 分頁替換守護程序替換的分頁類型

【AIX】AIX記憶體機制

當 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 限制。非計算性用戶端分頁的數目稱為 numclient。vmstat –v 指令可以顯示系統

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

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

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

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

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

# 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

【AIX】AIX記憶體機制

檢視核心參數的含義:

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

【AIX】AIX記憶體機制

修改參數為了讓 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

【AIX】AIX記憶體機制

啟用記憶體相似性:

vmo -o memory_affinity=1