原文鏈接:https://blog.csdn.net/u011616400/article/details/80198398
1、free命令顯示結果
-
$free
-
total used free shared buffers cached
-
Mem: 16464652 16371084 93568 0 305928 14781392
-
-/+ buffers/cache: 1283764 15180888
-
Swap: 0 0 0
- 1
- 2
- 3
- 4
- 5
2、參數詳解
參數 | 釋義 |
---|---|
total | 內存總數,物理內存總數 |
used | 已經使用的內存數 |
free | 空閑的內存數 |
shared | 多個進程共享的內存總額 |
buffers Buffer | 緩存內存數 |
cached Page | 緩存內存數 |
-buffers/cache | 應用使用內存數 |
+buffers/cache | 應用可用內存數 |
Swap | 交換分區,虛擬內存 |
3、結果說明
第一部分Mem行:
- total 內存總數: 15.7G
- used 已經使用的內存數: 15.6G
- free 空閑的內存數: 93M
- shared 當前已經廢棄不用,總是0
- buffers Buffer 緩存內存數: 298M
- cached Page 緩存內存數:14G
對操作系統來講是Mem的參數,buffers/cached 都是屬於被使用,所以它認為free只有93M。
我們通過free命令查看機器空閑內存時,會發現free的值很小。這主要是因為,在Linux系統中有這么一種思想,內存不用白不用,因此它盡可能的cache和buffer一些數據,以方便下次使用。但實際上這些內存也是可以立刻拿來使用的。
第二部分(-/+ buffers/cache):
- (-buffers/cache) used內存數:1.2G (指的第一部分Mem行中的used – buffers – cached)
- (+buffers/cache) free內存數: 14.4G (指的第一部分Mem行中的free + buffers + cached)
可見-buffers/cache反映的是被程序實實在在吃掉的內存,而+buffers/cache反映的是可以挪用的內存總數.
對應用程序來講是(-/+ buffers/cach).buffers/cached 是等同可用的,因為buffer/cached是為了提高程序執行的性能,當程序使用內存時,buffer/cached會很快地被使用。
第三部分Swap交換分區:
大家自行Google了解。
4、結果說明
所以,弄清楚參數意義,就不會產生誤解,以為Mem行free內存很少,是不是需要升級服務器內存等等。看內存夠不夠用重點是要看(-/+ buffers/cache)的free和used為主。
另外告訴大家一些常識。Linux為了提高磁盤和內存存取效率,Linux做了很多精心的設計,除了對dentry進行緩存(用於VFS,加速文件路徑名到inode的轉換),還采取了兩種主要Cache方式:Buffer Cache和Page Cache。前者針對磁盤塊的讀寫,后者針對文件inode的讀寫。這些Cache能有效縮短了 I/O系統調用(比如read,write,getdents)的時間。
5、參考資料
1、Linux系統內存監控全面講解:free命令
2、Linux的free命令詳解
3、Swa