Linux基礎篇之記憶體管理機制

來源:互聯網
上載者:User

1 Linux記憶體管理的主要特點

--------------------------------------------------------------------------------
無論實體記憶體多大,Linux都將其充分利用,將一些程式調用過的硬碟資料讀入記憶體,利用記憶體讀寫的高速特性來提高Linux系統的資料訪問效能。而Windows是只在需要記憶體時,才為應用程式分配記憶體,並不能充分利用大容量的記憶體空間。Linux的這一特性,主要是利用閒置實體記憶體,劃分出一部份空間,做為cache、buffers,以此提高資料訪問效能。頁面快取(page cache)是Linux核心實現的一種主要磁碟緩衝。它主要用來減少對磁碟的I/O操作。具體地講,是通過把磁碟中的資料緩衝到實體記憶體中,把對磁碟的訪問變為對實體記憶體的訪問。

2 實體記憶體、虛擬記憶體

--------------------------------------------------------------------------------
實體記憶體就是系統硬體提供的記憶體大小,是真正的記憶體,相對於實體記憶體,在Linux下還有一個虛擬記憶體的概念,虛擬記憶體就是為了滿足實體記憶體的不足而提出的策略,它是利用磁碟空間虛擬出的一塊邏輯記憶體,用作虛擬記憶體的磁碟空間被稱為交換空間(Swap Space)。
Linux的記憶體管理採取的是分頁存取機制,為了保證實體記憶體能得到充分的利用,核心會在適當的時候將實體記憶體中不經常使用的資料區塊自動交換到虛擬記憶體中,而將經常使用的資訊保留到實體記憶體。


Linux記憶體運行機制:
2.1 Linux系統會不時的進行頁面交換操作,以保持儘可能多的空閑實體記憶體
2.2 Linux進行頁面交換是有條件的,不是所有頁面在不用時都交換到虛擬記憶體,Linux核心根據”最近最經常使用“演算法,僅僅將一些不經常使用的分頁檔交換到虛擬記憶體
2.3 交換空間的頁面在使用時會首先被交換到實體記憶體,如果此時沒有足夠的實體記憶體來容納這些頁面,它們又會被馬上交換出去


3 Linux記憶體監控

--------------------------------------------------------------------------------
free -m:
[root@rango backup_CentOS]# free -m
            total      used      free    shared    buffers    cached
Mem:          3805      3683      121          0        120        690
-/+ buffers/cache:      2872      932
Swap:        2041        134      1907
註解:
total:    實體記憶體的總大小used:已經使用的實體記憶體大小free:閒置實體記憶體大小
shared:    多個進程共用的記憶體大小buffers/cached:磁碟緩衝的大小
Mem:    代表實體記憶體使用方式(-/+buffers/cached):代表磁碟緩衝使用狀態
Swap:    表示交換空間記憶體使用量狀態
(-buffers/cache) used記憶體數:2872M(指的第一部分Mem行中的used- buffers - cached)
(+buffers/cache) free記憶體數:  932M (指的第一部分Mem行中的free+ buffers + cached)
從核心的角度可使用的記憶體:121M
從應用程式可使用的記憶體:free+buffers/cache=121+120+690=931M,為第二行的free值。對於應用程式來說,buffers/cached佔有的記憶體是可用的,因為buffers/cached是為了提高檔案讀取的效能,當應用程式需要用到記憶體的時候,buffers/cached會很快地被回收,以供應用程式使用。


Linux緩衝機制:buffers與cached都是記憶體操作,用來儲存系統曾經開啟過的檔案以及檔案屬性資訊,這樣當作業系統需要讀取某些檔案時,會首先在buffers與cached記憶體區尋找,如果找到,直接讀出傳送給應用程式,如果沒有找到需要資料,才從磁碟讀取。
buffers是用來緩衝塊裝置做的,它只記錄檔案系統的中繼資料(metadata)以及tracking in-flightpages,而cached是用來給檔案做緩衝。更通俗一點說:buffers主要用來存放目錄裡面有什麼內容,檔案的屬性以及許可權等等。而cached直接用來記憶我們開啟過的檔案和程式。


4  Linux記憶體釋放過程

--------------------------------------------------------------------------------
4.1 free -m查看記憶體使用量情況


4.2 sync:使用sync命令以確保檔案系統的完整性,sync命令運行sync 子常式,將所有未寫的系統緩衝區寫到磁碟中,包含已修改的i-node、已延遲的塊I/O和讀寫對應檔。為確保可靠起見,應執行兩遍sync命令,這是因為sync命令完成時,並不保證資訊實際寫到了磁碟上。


4.3 修改/proc/sys/vm/drop_caches:
echo 3 > /proc/sys/vm/drop_caches
說明:
1)/proc是一個虛擬檔案系統,我們可以通過對它的讀寫操作作為與kernel實體間進行通訊的一種手段。也就是說可以通過修改/proc中的檔案,來對當前kernel的行為做出調整。也就是說我們可以通過調整/proc/sys/vm/drop_caches來釋放記憶體。
2)drop_caches:
Writing to this file causes the kernel to drop cleancaches,dentries and inodes from memory, causing that memory tobecomefree.
To free pagecache, use echo 1 > /proc/sys/vm/drop_caches;
to free dentries and inodes, use echo 2 >/proc/sys/vm/drop_caches;
to free pagecache, dentries and inodes, use echo 3>/proc/sys/vm/drop_caches.
Because this is a non-destructive operation and dirty objects arenot freeable, the user should run syncfirst.

  • 1
  • 2
  • 下一頁

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.