free命令
- 展示系統中空閒和已經使用的內存數量
- 格式
free [options]
- 使用總結:free命令選項不多,核心在於搞清楚其展示的各列的含義
描述
- free分別展示系統中總的空閒和已經使用的物理內存以及swap內存,還有內核使用的buffers和caches。
- 信息是通過
/proc/meminfo
收集的 - 展示的列爲:
名稱 | 詳解 |
---|---|
total | 總體安裝的內存,在/proc/meminfo 中的MemTotal和SwapTotal |
used | 使用了的內存,計算公式爲total-free-buffers-cache |
free | 沒有使用的內存(/proc/meminfo 中的MemFree以及SwapFree) |
shared | 主要由tmpfs使用的內存(/proc/meminfo 中的Shmem) |
buffers | 內核buffers使用的內存(/proc/meminfo 中的Buffers) |
cache | page cache和slabs使用的內存(/proc/meminfo 中的Cached及SReclaimable) |
buff/cache | buffers和cache之和 |
available | 估算對於新啓動應用程序還有多少可用內存,不含swap。不同於cache或者free字段提供的數據,這個字段考慮了page cache,並且由於部分可回收內存slabs仍然在使用中,因此並不是所有可回收內存slab都會被回收。(/proc/meminfo 中的MemAvailable,3.14內核可用) |
- buffers和cache的區別
/proc/meminfo
中的Buffers定義- 給原始磁盤塊使用的相對臨時存儲,這個不應該特別大(20MB這樣)
- 就是用來緩存磁盤的數據
- 這樣,內核就可以把分散的寫集中起來,統一優化磁盤的寫入,比如可以將多次小的寫合併成單次大的寫等等
/proc/meminfo
中的Cached定義- 給從磁盤中讀取的文件的內存cache(page cache)。不包含
SwapCached
- 就是緩存從文件讀取的數據
- 這樣,下次訪問這些文件數據時,可以直接從內存cache中快速讀取,而不需要再次訪問緩慢的磁盤
- 給從磁盤中讀取的文件的內存cache(page cache)。不包含
/proc/meminfo
中的SwapCached定義- 曾經被交換出去的內存,現在要換入。但是仍然還在swap文件中。
- 如果內存壓力高,這些頁面沒有必要再次交換出去,因爲他們已經在swap文件中。這樣可以節省IO。
- 曾經被交換出去的內存,現在要換入。但是仍然還在swap文件中。
/proc/meminfo
中的SReclaimable定義- 可能被回收Slab的部分,例如caches。
/proc/meminfo
中的SUnreclaim定義- 在內存壓力下不能被回收的Slab的部分
- slab包括兩部分,可回收部分就是
SReclaimable
記錄的,不可回收部分用SUnreclaim
記錄。 - buffers和cache區別總結:
- Buffer 是對磁盤數據的緩存
- 而 Cache 是文件數據的緩存,
- 它們兩者都既會用在讀請求中,也會用在寫請求中。
選項
名稱 | 詳解 |
---|---|
-b, --bytes | 以B爲單位顯示內存數量 |
-k, --kibi | 以KiB爲單位顯示內存數量,這個是默認的 |
-m, --mebi | 以MiB爲單位顯示內存數量 |
-g, --gibi | 以GiB爲單位顯示內存數量 |
–tebi | 以TiB爲單位顯示內存數量 |
–pebi | 以PiB爲單位顯示內存數量 |
–kilo | 以KB爲單位顯示內存數量,暗含在–si中 |
–mega | 以MB爲單位顯示內存數量,暗含在–si中 |
–giga | 以GB爲單位顯示內存數量,暗含在–si中 |
–tera | 以TB爲單位顯示內存數量,暗含在–si中 |
–peta | 以TB爲單位顯示內存數量,暗含在–si中 |
-h, --human | 將所有的輸出字段自動最短的三位數字的單元並顯示單位。使用的是2的1024次方的單位 |
-w, --wide | 切換到寬模式。寬模式產生超過80字符的行。這個模式下,buffers和cache在兩個單獨的列中顯示 |
-c, --count count | 顯示結果count次數,需要-s選項 |
-l, --lohi | 展示詳細的低和高內存統計數據 |
-s, --seconds delay | 延遲delay秒之後持續顯示。delay可以用任意浮點數,因爲裏面用的是usleep(3) 所以支持小於1秒的 |
–si | 使用10的冪的單位而不是2的1024次的單位 |
-t, --total | 增加一行展示各列的總數 |
–help | 幫助 |
-V, --version | 版本 |