關於Linux cached內存簡析


Linux與Windows不同,會存在緩存內存,通常叫做Cache Memory。有些時候你會發現沒有什麼程序在運行,但是使用top或free命令看到可用內存會很少。

 

什麼是Cache Memory(緩存內存):

 

當你讀寫文件的時候,Linux內核爲了提高讀寫效率與速度,會將文件在內存中進行緩存,這部分內存就是Cache Memory(緩存內存)。即使你的程序運行結束後,Cache Memory也不會自動釋放。這就會導致你在Linux系統中程序頻繁讀寫文件後,你會發現可用物理內存會很少。

 

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

 

釋放Cache Memory(緩存內存):

 

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

 

[rootmin@localhost~]#echo 3 > /proc/sys/vm/drop_caches

 

Linux中如何釋放cache內存

 

因爲LINUX的內核機制,一般情況下不需要特意去釋放已經使用的cache。這些cache起來的內容可以增加文件以及的讀寫速度。

 

先說下free命令怎麼看內存

 

[rootmin@localhost~]# free

 

total used free shared buffers cached

 

Mem: 515588 295452 220136 0 2060 64040

 

-/+ buffers/cache: 229352 286236

 

Swap: 682720 112 682608

 

其中第一行用全局角度描述系統使用的內存狀況:

 

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釋放:

 

1.   To free pagecache:

 

[rootmin@localhost~]#echo 1 > /proc/sys/vm/drop_caches

 

2.   To free dentries and inodes:

 

[rootmin@localhost~]#echo 2 > /proc/sys/vm/drop_caches

 

3.   To free pagecache, dentries and inodes:

 

[rootmin@localhost~]#echo 3 > /proc/sys/vm/drop_caches

 

說明,釋放前最好sync一下,防止丟數據


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章