Linux常用工具介紹——free
在Linux系統中,我們查看、監控系統內存使用情況,一般最常用的命令就是free,
關於free的實現,其實是調用linux下的/proc/meminfo文件。
[[email protected] /]# free -V
free from procps-ng 3.3.9
[[email protected] /]# free
total used free shared buffers cached
Mem: 1010884 935560 75324 1560 0 22996
Swap: 2129916 565404 1564512
指 標 | 指 標 意 義 |
total | 總的物理內存大小。total=used + free |
used | 已經使用的物理內存。一般情況這個值比較大。used=buffers + cached (maybe add shared also)+ -buffers/cache(used) |
free | 完全未使用的物理內存 |
shared | 應用程序共享的物理內存 |
buffers | 緩存,主要用於塊設備緩存,例如用戶目錄、inode值等(ls大目錄可以看到這個值增加) |
cached | 緩存,主要用於緩存文件。 |
指 標 | 指 標 意 義 |
前個值表示-buffers/cache | 應用程序使用的內存大小,used減去緩存值:-buffers/cache=used-buffers-cached |
後個值表示+buffers/cache | 所有可供應用程序使用的內存大小,free加上緩存值:+buffers/cache=free+buffers+cached |
下面是對buffers和cached具體價紹下。
buffers:是指用來給塊設備做的緩沖大小,它只記錄文件系統的metadata以及 tracking in-flight pages.
cached:是用來給文件做緩沖。
那就是說:buffers是用來存儲目錄裏面有什麽內容,權限等等。而cached直接用來緩存我們打開的文件
也就是說buffers是用於存放要輸出到disk的塊設備數據的,而cache是存放從disk上讀出的數據。這二者是為了提高IO性能的,並由OS管理。
total = used + free
1010884 = 936044 + 74840
-/+buffers/cache(used) 表示第三行的used列的值。-/+buffers/cache(free) 表示第三行free列的值
-/+buffers/cache(used) = used - buffers - cached
911656 = 936044 - 0 - 24388
-/+buffers/cache(free) = free + buffers + cached
99228 = 74840 + 0 + 24388
二、現在我們來看新版,
[[email protected] /]# free -V
free from procps-ng 3.3.10
[[email protected] /]# free
total used free shared buff/cache available
Mem: 1009304 598164 252724 6796 158416 257044
Swap: 2097148 0 2097148
2016年之後發布的內核, "-/+ buffers/cache" 例被取代了。
內存分配改為total = used + free + cache
可用內存直接看available了。
參考:http://www.linuxatemyram.com/
本文出自 “59090939” 博客,請務必保留此出處http://59090939.blog.51cto.com/6338052/1947093
Linux常用工具介紹——free