Posted on 2011-12-02 15:39
Prayer 閱讀(842)
評論(0) 編輯 收藏 引用 所屬分類:
LINUX/UNIX/AIX 、
系統、備份等
我們知道在AIX操作系統中,Paging Space是一項很重要的設備,AIX kernel(內 核)需要利用 Paging Space 來管理虛擬內存。和內存頁面一樣,AIX的 Paging Space也是以4KB為單位,當實際內存數的空閑值低于一定數量以后,系統需要把 實際內存中的某些計算頁面(Computation Page)寫回到Paging Space中(page out),以便釋放出實際內存頁面用于其他程序。在AIX 4.3.2及以后版本中,操作系統提供了3種 Paging Space的管理機制。分別為:
Early Page Space Allocation (EPSA)
Late Page Space Allocation (LPSA)
Deferred Page Space Allocation (DPSA)
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的大小比實際內存值要大很多。
Late Page Space Allocation
在AIX 4.2.1之后, 4.3.2之前,操作系統默認使用 LPSA 機制。這種機制是指當進程 啟動后,系統并不在Paging Space中為該進程保留相應的頁面。只有當該進程的實 際內存頁面被修改過后,才會在Paging Space中為這些被修改過的頁面申請空間。
這種機制在一定程度上減少了Paging Space的空間浪費,但是對系統也存在一定的 風險。比如,當一些后起的進程用了幾乎全部的Paging Space后,由于先起的進程 并沒有保留足夠的Paging Space空間用于進程的page out操作,會導致該進程被殺掉。
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。
Paging Space的頁面釋放
在AIX操作系統中,當內存中的頁面被page到了Paging Space中以后,那么這一塊 Paging Space的頁面空間將被保留給該內存頁面,即使該頁面已經被寫回到內存 中。因此,用lsps命令看到的Paging Space的使用率可能并不能真實反映真正位于
Paging Space 中的頁面數,因為有些頁面可能已經寫回到了內存中。
如果寫回到內存中的頁面是線程的工作存儲頁面(Working Storage),那么隨著該線 程的退出或者是相關的內存被釋放 -- free(),Paging Space中的相應頁面塊也才會 釋放。