zt:Linux效能監控之Memory篇

lfree發表於2008-05-27

首先說說虛擬記憶體和實體記憶體:
虛擬記憶體就是採用硬碟來對實體記憶體進行擴充套件,將暫時不用的記憶體頁寫到硬碟上而騰出更多的實體記憶體讓有需要的程式來用。當這些記憶體頁需要用的時候在從硬碟讀回記憶體。這一切對於使用者來說是透明的。通常在Linux系統說,虛擬記憶體就是swap分割槽。在X86系統上虛擬記憶體被分為大小為4K的頁。
每一個程式啟動時都會向系統申請虛擬記憶體(VSZ),核心同意或者拒就請求。當程式真正用到記憶體時,系統就它對映到實體記憶體。RSS表示程式所佔的實體記憶體的大小。用ps命令我們可以看到程式佔用的VSZ和RSS。
# ps –aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
daemon 2177 0.0 0.2 3352 648 ? Ss 23:03 0:00 /usr/sbin/atd
dbus 2196 0.0 0.5 13180 1320 ? Ssl 23:03 0:00 dbus-daemon-1 --sys
root 2210 0.0 0.4 2740 1044 ? Ss 23:03 0:00 cups-config-daemon
root 2221 0.3 1.5 6108 4036 ? Ss 23:03 0:02 hald
root 2231 0.0 0.1 2464 408 tty1 Ss+ 23:03 0:00 /sbin/mingetty tty1
核心會定期將記憶體中的資料同步到硬碟,這個過程叫做Memory Paging。同時核心也要負責回收不用的記憶體,將他們分給其他需要的程式。PFRA演算法(Page Frame reclaim algorithm)負責回收空閒的記憶體。演算法根據記憶體頁的型別來決定要釋放的記憶體頁。有下列4種型別:
1. Unreclaimable – 鎖定的,核心保留的頁面;
2. Swappable – 匿名的記憶體頁;
3. Syncable – 透過硬碟檔案備份的記憶體頁;
4. Discardable – 靜態頁和被丟棄的頁。
除了第一種(Unreclaimable)之外其餘的都可以被PFRA進行回收。與之相關的程式是kswapd。在kswapd中,有2個閥值,pages_hige和pages_low。當空閒記憶體頁的數量低於pages_low的時候,kswapd程式就會掃描記憶體並且每次釋放出32個free pages,直到free page的數量到達pages_high。具體kswapd是如何回收記憶體的呢?有如下原則:
1. 如果頁未經更改就將該頁放入空閒佇列;
2. 如果頁已經更改並且是可備份迴檔案系統的,就理解將記憶體頁的內容寫回磁碟;
3. 如果頁已經更改但是沒有任何磁碟上的備份,就將其寫入swap分割槽。
# ps -ef | grep kswapd
root 30 1 0 23:01 ? 00:00:00 [kswapd0]
在回收記憶體過程中還有兩個重要的方法,一是LMR(Low on memory reclaiming),另一個是OMK(Out of Memory Killer)。當分配記憶體失敗的時候LMR將會其作用,失敗的原因是kswapd不能提供足夠的空閒記憶體,這個時候LMR會每次釋放1024個垃圾頁知道記憶體分配成功。當LMR不能快速釋放記憶體的時候,OMK就開始其作用,OMK會採用一個選擇演算法來決定殺死某些程式。當選定程式時,就會傳送訊號SIGKILL,這就會使記憶體立即被釋放。OMK選擇程式的方法如下:
1. 程式佔用大量的記憶體;
2. 程式只會損失少量工作;
3. 程式具有低的靜態優先順序;
4. 程式不屬於root使用者。
程式管理中另一個程式pdflush用於將記憶體中的內容和檔案系統進行同步,比如說,當一個檔案在記憶體中進行修改,pdflush負責將它寫回硬碟。
# ps -ef | grep pdflush
root 28 3 0 23:01 ? 00:00:00 [pdflush]
root 29 3 0 23:01 ? 00:00:00 [pdflush]
每當記憶體中的垃圾頁(dirty page)超過10%的時候,pdflush就會將這些頁面備份回硬碟。這個比率是可以調節的,透過引數vm.dirty_background_ratio。
# sysctl -n vm.dirty_background_ratio
10
Pdflush同PFRA是獨立執行的,當核心呼叫LMR時,LMR就觸發pdflush將垃圾頁寫回硬碟

[@more@]

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

相關文章