linux的cache memory解析

來源:互聯網
上載者:User

PS:前天有童鞋問我,為啥我的Linux系統沒運行多少程式,顯示的可用記憶體這麼少?其實Linux與Win的記憶體管理不同,會盡量緩衝記憶體以提高讀寫效能,通常叫做Cache Memory。

有時候你會發現沒有什麼程式在運行,但是使用top或free命令看到可用記憶體free項會很少,此時查看系統的 /proc/meminfo 檔案,會發現有一項 Cached Memory:

輸入cat /proc/meminfo查看:

MemTotal: 16425996 kB
MemFree: 5698808 kB
Buffers: 380904 kB
Cached: 9389356 kB
SwapCached: 212 kB
Active: 6569200 kB
Inactive: 3725364 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 16425996 kB
LowFree: 5698808 kB
SwapTotal: 8273464 kB
SwapFree: 8273252 kB
Dirty: 980 kB
Writeback: 0 kB
AnonPages: 524108 kB
Mapped: 24568 kB
Slab: 381776 kB
PageTables: 7496 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
CommitLimit: 16486460 kB
Committed_AS: 2143856 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 267656 kB
VmallocChunk: 34359469303 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
Hugepagesize: 2048 kB

free命令裡各項記憶體指標說明:

total used free shared buffers cached
Mem: 16425996 10727220 5698776 0 380904 9389832
-/+ buffers/cache: 956484 15469512
Swap: 8273464 212 8273252

其中第一行用全域角度描述系統使用的記憶體狀況:
total——總實體記憶體
used——已使用記憶體,一般情況這個值會比較大,因為這個值包括了cache+應用程式使用的記憶體
free——完全未被使用的記憶體
shared——應用程式共用記憶體
buffers——緩衝,主要用於目錄方面,inode值等(ls大目錄可看到這個值增加)
cached——緩衝,用於已開啟的檔案
總結:
total=used+free
used=buffers+cached (maybe add shared also)

第二行描述應用程式的記憶體使用量:
前個值表示-buffers/cache——應用程式使用的記憶體大小,used減去緩衝值
後個值表示+buffers/cache——所有可供應用程式使用的記憶體大小,free加上緩衝值
總結: 
-buffers/cache=used-buffers-cached
+buffers/cache=free+buffers+cached

第三行表示swap的使用:
used——已使用
free——未使用

什麼是Cache Memory(緩衝記憶體):

當你讀寫檔案的時候,Linux核心為了提高讀寫效能與速度,會將檔案在記憶體中進行緩衝,這部分記憶體就是Cache Memory(緩衝記憶體)。即使你的程式運行結束後,Cache Memory也不會自動釋放。這就會導致你在Linux系統中程式頻繁讀寫檔案後,你會發現可用實體記憶體會很少。

其實這緩衝記憶體(Cache Memory)在你需要使用記憶體的時候會自動釋放,所以你不必擔心沒有記憶體可用。如果你希望手動去釋放Cache Memory也是有辦法的。

如何釋放Cache Memory(緩衝記憶體):

用下面的命令可以釋放Cache Memory:

To free pagecache:
echo 1 > /proc/sys/vm/drop_caches
To free dentries and inodes:
echo 2 > /proc/sys/vm/drop_caches
To free pagecache, dentries and inodes:
echo 3 > /proc/sys/vm/drop_caches

注意,釋放前最好sync一下,防止遺失資料。

總結:個人經驗認為沒必要手動釋放,這種記憶體管理方式也是比win優勝的地方之一!因為Linux的核心記憶體管理機制,一般情況下不需要特意去釋放已經使用的cache。這些cache起來的內容可以提高檔案以及磁碟的讀寫速度。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.