天天看點

Linux指令之free

free指令

[root@node8 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:            31G        9.7G         12G        3.5M        9.4G         20G
Swap:            0B          0B          0B
      

  

total:表示 總計實體記憶體的大小。used+free+buff/cache

used:表示 已使用多少。

free:表示 可用記憶體多少。

Shared:表示多個程序共享的記憶體總額。

Buffers/cached:表示 磁盤緩存的大小。

buffer比較小:buffer cache,即緩存經常通路塊裝置的中繼資料

cache比較大: page cache,即緩存檔案内容+slab。slab也分可回收和不可回收部分,可手動回收,但是會在回收緩存這段時間影響主機性能,并且不是有所的可回收slab和page cache都能被回收,正在使用的這些緩存不能被回收,否則系統的性能會很低,是以最後可能的記憶體是多少,就得評估能夠回收的有多少,就有了下面這個參數

available: 是一個估計值,比較準确

  • 注意

top和free看的結果一緻;

free指令中used的結果,不包含buffer/cache

舊版本的free指令才有:-/+ buffers/cache,新版的加入了available參數

  • 參考連結

free(1) - Linux manual page

vfs中各種cache的解釋

  • page cache

結合了虛拟記憶體和檔案資料,将讀取的檔案資料緩存在虛拟記憶體,以便下次讀取相同的内容時,直接從記憶體讀取,加快資料通路速度

  • inode cache

儲存最近通路的檔案i-odes

  • buffer cache

buffer和塊裝置互動,緩存最近使用的磁盤塊中繼資料,是以一般很小

Linux核心通過buffer cache讀取檔案資料,但是緩存到page cache中,以便再次使用

  • directory cache

在記憶體中是一個樹狀結構,代表檔案系統目錄結構的一部分,其将會檔案路徑映射為inode并加速檔案路徑名的查找,就像dns的作用,根據域名找ip,directory cache的基本元素是d-entry

https://zhuanlan.zhihu.com/p/250300261

slab

Linux記憶體管理模式,頁式管理适合于大塊記憶體的情形,而對于核心對象級别的較小記憶體情形下,不足以占用1個頁。就用slab,lab一般對應1個或者多個頁,slab裡面存儲一個個對象。

https://www.mawenbao.com/research/linux-ate-my-memory.html

https://fivezh.github.io/2017/06/25/Linux-slab-info/

清除緩存

echo 3 > /proc/sys/vm/drop_caches           
上一篇: 杭電 hdu 1005
下一篇: 杭電 hdu 2501