Linux-Memory小記--free -m
以前我對這塊認識很模糊,而且還有錯誤的認識;所以我決定來好好的縷縷這塊的關(guān)系。
圖:
1.參數(shù)含義
-
1.Mem:表示物理內(nèi)存統(tǒng)計
total: 表示系統(tǒng)總物理內(nèi)存5993156kb(約5852M)
used: 表示總計分配給緩存(包含buffers 與cached),但其中可能部分緩存未實際使用
free:表示未分配的內(nèi)存
shared: 表示共享內(nèi)存
buffers:表示系統(tǒng)分配但未被使用的buffers數(shù)量
cached:表示系統(tǒng)分配但未被使用的cache的數(shù)量
在Free命令中顯示的buffer和cache,它們都是占用內(nèi)存:
buffer : 作為buffer cache的內(nèi)存范舀,是塊設(shè)備的讀寫緩沖區(qū)合是,更靠近存儲設(shè)備,或者直接就是disk的緩沖區(qū)尿背。
cached: 作為page cache的內(nèi)存, 文件系統(tǒng)的cache端仰,是memory的緩沖區(qū) 捶惜。
如果cached 的值很大田藐,說明cache住的文件數(shù)很多。如果頻繁訪問到的文件都能被cache住吱七,那么磁盤的讀IO 必會非常小 汽久。
-
- -/+ buffers/cached: 表示物理內(nèi)存的緩存統(tǒng)計
used: 表示實際使用的buffers與cache的總量,這就是實際使用的內(nèi)存總量
free: 表示未被使用的buffers與cache和未被分配的內(nèi)存之和踊餐,這就是系統(tǒng)當前實際可能內(nèi)存(所以一般linux機器看可用內(nèi)存就看此值)
3.Swap: 表示硬盤上交換分區(qū)的使用情況景醇。只有mem被當前進程實際占用完,即沒有了buffers和cache時,才會使用到swap吝岭。
2.常用概念
物理內(nèi)存總大小 :
mem.total=mem.used+mem.free
mem.total=(-/+ buffers/cached).used+(-/+ buffers/cached).free已經(jīng)分配的內(nèi)存大腥怠:
mem.used=mem.buffers+mem.cached+(-/+ buffers/cached).used實際可用內(nèi)存大小:
(-/+ buffers/cached).free=mem.free+mem.buffers+mem.cached
3.手工清除緩存
# sync
# echo 1 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches
cache釋放:
a.To free pagecache:
echo 1 > /proc/sys/vm/drop_caches
b.To free dentries and inodes:
echo 2 > /proc/sys/vm/drop_caches
c.To free pagecache, dentries and inodes:
echo 3 > /proc/sys/vm/drop_caches
說明窜管,釋放前最好sync一下散劫,防止丟數(shù)據(jù)。
4.常見疑惑
1.用戶常見的疑問是幕帆,為什么free這么小获搏,是否關(guān)閉應(yīng)用后內(nèi)存沒有釋放?
但實際上失乾,我們都知道這是因為Linux對內(nèi)存的管理與Windows不同常熙,free小并不是說內(nèi)存不夠用了,應(yīng)該看的是free的第二行最后一個值:-/+ buffers/cache: 2592892Kb碱茁,這才是系統(tǒng)可用的內(nèi)存大小裸卫。2.free內(nèi)存還有200M,cache里有58G纽竣,然后程序就跪了彼城,拋了個tcmalloc allocation failed 65536, out of memory(needed 65312 bytes). 需要內(nèi)存時為什么cache里面的沒能釋放?
cache 中有程序在占用就無法釋放了。3.有時候free太小退个,cached特別大時啟動mysql會報錯募壕,這個是什么原因?
這說明內(nèi)存確實不夠语盈,cached并不是全部可以釋放的舱馅,有程序占用就不能釋放了4.我的Linux上cache占滿RAM時系統(tǒng)非常慢,系統(tǒng)也不自動釋放cache刀荒。所以號稱“cache對性能只有好處而沒壞處”是假的代嗤!
這個要看你實際是使用的應(yīng)用是什么棘钞。cache能帶來的好處是,減輕頻繁讀寫硬盤的需要干毅,也就是降低IO宜猜,這特別是對于服務(wù)器上的應(yīng)用來說是很常見的。相反硝逢,如果cache需要頻繁更新姨拥,那會出現(xiàn)您提到的問題了。