free詳解

free命令

>free
total used free shared buff/cache available
Mem: 8010968 935180 5968260 16668 1107528 6835728
Swap: 4194300 0 4194300

free 輸出的是一個表格,其中的數(shù)值都默認(rèn)以字節(jié)為單位,free 顯示的是整個系統(tǒng)的內(nèi)存使用情況。每列數(shù)據(jù)的含義分別為:

total 是總內(nèi)存大小;
used: 是已使用內(nèi)存的大小,包含了共享內(nèi)存;
free: 是未使用內(nèi)存的大??;
shared: 是共享內(nèi)存的大??;
buff/cache: 是緩存和緩沖區(qū)的大小;
available: 是新進(jìn)程可用內(nèi)存的大小。

available 不僅包含未使用內(nèi)存,還包括了可回收的緩存,所以一般會比未使用內(nèi)存更大

Buffers/Cache

數(shù)據(jù)來源
  • Buffers 是內(nèi)核緩沖區(qū)用到的內(nèi)存,對應(yīng)的是/proc/meminfo 中的 Buffers 值。
  • Cache 是內(nèi)核頁緩存和 Slab 用到的內(nèi)存,對應(yīng)的是/proc/meminfo 中的 Cached 與 與 SReclaimable 之和
proc 文件系統(tǒng)
  • proc文件系統(tǒng)介紹

/proc 是 Linux 內(nèi)核提供的一種特殊文件系統(tǒng),是用戶跟內(nèi)核交互的接口,用戶可以從 /proc 中查詢內(nèi)核的運行狀態(tài)和配置選項,查詢進(jìn)程的運行狀態(tài)、統(tǒng)計數(shù)據(jù)等;
可以通過/proc 來修改內(nèi)核的配置;
proc文件系統(tǒng)同時也是很多性能工具的最終數(shù)據(jù)來源,比如我們剛看到的free,就是通過讀取/proc/meminfo ,得到內(nèi)存的使用情況

  • /proc/meminfo
> man proc 
Buffers %lu
Relatively temporary storage for raw disk blocks that shouldn't get tremendously large (20MB or so).
 
Cached %lu
In-memory cache for files read from the disk (the page cache). Doesn't include SwapCached.
...
SReclaimable %lu (since Linux 2.6.19)
Part of Slab, that might be reclaimed, such as caches.
 
SUnreclaim %lu (since Linux 2.6.19)
Part of Slab, that cannot be reclaimed on memory pressure.

Buffers 是對原始磁盤塊的臨時存儲,也就是用來緩存磁盤的數(shù)據(jù),通常不會特別大(20MB 左右)。這樣,內(nèi)核就可以把分散的寫集中起來,統(tǒng)一優(yōu)化磁盤的寫入,比如可以把多次小的寫合并成單次大的寫等
Cached 是從磁盤讀取文件的頁緩存,也就是用來緩存文件讀取的數(shù)據(jù)。這樣,下次訪問這些文件數(shù)據(jù)時,就可以直接從內(nèi)存中快速獲取,而不需要再次訪問緩慢的磁盤
SReclaimable 是 Slab 的一部分。Slab 包括兩部分,其中的可回收部分,用 SReclaimable 記錄;而不可回收部分,用 SUnreclaim 記錄

Buffer 是對磁盤數(shù)據(jù)的緩存,而 Cache 是文件數(shù)據(jù)的緩存,它們既會用在讀請求中,也會用在寫請求中

關(guān)于磁盤和文件的區(qū)別
  • 磁盤是一個塊設(shè)備,可以劃分為不同的分區(qū);在分區(qū)之上再創(chuàng)建文件系統(tǒng),掛載到某個目錄,之后才可以在這個目錄中讀寫文件。
  • 其實 Linux 中“一切皆文件”,而文章中提到的“文件”是普通文件,磁盤是塊設(shè)備文件
  • 在讀寫普通文件時,會經(jīng)過文件系統(tǒng),由文件系統(tǒng)負(fù)責(zé)與磁盤交互;而讀寫磁盤或者分區(qū)時,就會跳過文件系統(tǒng),也就是所謂的“裸I/O“。這兩種讀寫方式所使用的緩存是不同的,也就是文中所講的 Cache 和 Buffer 區(qū)別。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.磁盤與文件的區(qū)別 介紹buffer和cache之前,先介紹磁盤和文件的區(qū)別。磁盤是一個塊設(shè)備,可劃分為不同的分...
    coderljx閱讀 1,233評論 0 1
  • meminfo內(nèi)存結(jié)構(gòu) MemTotal 當(dāng)我們在linux上查看內(nèi)存狀況的時候發(fā)現(xiàn)上面的打印一般的是 ** Me...
    zjfclimin閱讀 9,525評論 0 4
  • linux下free命令詳解 free 命令顯示系統(tǒng)內(nèi)存的使用情況,包括物理內(nèi)存、交換內(nèi)存(swap)和內(nèi)核緩沖區(qū)...
    GoFighting_c2f1閱讀 349評論 0 1
  • 1 free 1.1 free命令原理 free是通過查看 /proc/meminfo 來獲取內(nèi)存的使用情況。但是...
    AydanLinux閱讀 432評論 0 0
  • free命令可以顯示Linux系統(tǒng)中空閑的、已用的物理內(nèi)存及swap內(nèi)存,及被內(nèi)核使用的buffer。在Linux...
    石樂志的LK閱讀 821評論 0 0

友情鏈接更多精彩內(nèi)容