解析Linux中的記憶體使用

db_wjw發表於2011-12-15
Linux系統中,記憶體主要可以分為三部分:核心使用的記憶體、程式使用的記憶體、緩衝區和快取記憶體(主要為了提高讀寫速度)。

由於有緩衝區和快取這部分記憶體的存在,所以Linux中的實體記憶體看上去在很短的時間內就被消耗完了,其實當新的程式呼叫記憶體或已有程式呼叫更多記憶體時,可以使用緩衝區和快取這部分記憶體。

使用free –m檢視系統記憶體使用情況:

[oracle@sms ~]$ free -m
                      total       used        free     shared    buffers    cached
Mem:         12043      11349        693          0          234         9850
-/+ buffers/cache:       1264      10779
Swap:        14223          0          14223

其中

Mem行:

total表示實體記憶體減去核心保留的記憶體

used表示total中已經使用的記憶體(包含程式使用的記憶體、bufferscached

free表示total中未使用的實體記憶體

buffers與某個塊裝置關聯,包含了檔案系統後設資料,其中放得是物件的資料結構,並且跟蹤了塊的變化。

cached包含了檔案本身,其中存放的是無結構的塊資料。

 

-/+ buffers/cache行:

used表示程式執行佔用的記憶體。

free表示系統可以使用的記憶體(包含了bufferscached)。

 

Swap行:

total表示系統的總的虛擬記憶體

used表示系統已經使用的虛擬記憶體。

free表示系統未使用的空閒虛擬記憶體。

 

其中存在以下的等式關係:

Memtotal= Menused+ Menfree

Memused= 核心使用記憶體 + 程式使用記憶體 + Membuffers+ Memcached

程式使用記憶體 =  Memtotal- Membuffers-  Memcached

             =  -/+ buffers/cacheused

程式還可以申請的記憶體 <=  Menfree+ Membuffers+ Memcached

                     <=  -/+ buffers/cachefree

 

由上可以看出,衡量記憶體是否夠用可以檢視-/+ buffers/cachefree)和虛擬記憶體的使用率。

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

相關文章