Linux-Memory小記--free -m

Linux-Memory小記--free -m

以前我對這塊認識很模糊,而且還有錯誤的認識;所以我決定來好好的縷縷這塊的關系。

圖:

Paste_Image.png
Paste_Image.png

1.參數含義

  • 1.Mem:表示物理內存統(tǒng)計

    • total: 表示系統(tǒng)總物理內存5993156kb(約5852M)

    • used: 表示總計分配給緩存(包含buffers 與cached),但其中可能部分緩存未實際使用

    • free:表示未分配的內存

    • shared: 表示共享內存

    • buffers:表示系統(tǒng)分配但未被使用的buffers數量

    • cached:表示系統(tǒng)分配但未被使用的cache的數量

在Free命令中顯示的buffer和cache,它們都是占用內存:
buffer : 作為buffer cache的內存,是塊設備的讀寫緩沖區(qū),更靠近存儲設備,或者直接就是disk的緩沖區(qū)。
cached: 作為page cache的內存, 文件系統(tǒng)的cache,是memory的緩沖區(qū) 。
如果cached 的值很大,說明cache住的文件數很多。如果頻繁訪問到的文件都能被cache住,那么磁盤的讀IO 必會非常小 。

    1. -/+ buffers/cached: 表示物理內存的緩存統(tǒng)計
    • used: 表示實際使用的buffers與cache的總量,這就是實際使用的內存總量

    • free: 表示未被使用的buffers與cache和未被分配的內存之和,這就是系統(tǒng)當前實際可能內存(所以一般linux機器看可用內存就看此值)

  • 3.Swap: 表示硬盤上交換分區(qū)的使用情況。只有mem被當前進程實際占用完,即沒有了buffers和cache時,才會使用到swap。

2.常用概念

  • 物理內存總大小 :
    mem.total=mem.used+mem.free
    mem.total=(-/+ buffers/cached).used+(-/+ buffers/cached).free

  • 已經分配的內存大?。?br> mem.used=mem.buffers+mem.cached+(-/+ buffers/cached).used

  • 實際可用內存大小:
    (-/+ 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一下,防止丟數據。

4.常見疑惑

  • 1.用戶常見的疑問是,為什么free這么小,是否關閉應用后內存沒有釋放?
    但實際上,我們都知道這是因為Linux對內存的管理與Windows不同,free小并不是說內存不夠用了,應該看的是free的第二行最后一個值:-/+ buffers/cache: 2592892Kb,這才是系統(tǒng)可用的內存大小。

  • 2.free內存還有200M,cache里有58G,然后程序就跪了,拋了個tcmalloc allocation failed 65536, out of memory(needed 65312 bytes). 需要內存時為什么cache里面的沒能釋放?
    cache 中有程序在占用就無法釋放了。

  • 3.有時候free太小,cached特別大時啟動mysql會報錯,這個是什么原因?
    這說明內存確實不夠,cached并不是全部可以釋放的,有程序占用就不能釋放了

  • 4.我的Linux上cache占滿RAM時系統(tǒng)非常慢,系統(tǒng)也不自動釋放cache。所以號稱“cache對性能只有好處而沒壞處”是假的!
    這個要看你實際是使用的應用是什么。cache能帶來的好處是,減輕頻繁讀寫硬盤的需要,也就是降低IO,這特別是對于服務器上的應用來說是很常見的。相反,如果cache需要頻繁更新,那會出現您提到的問題了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容