Linux的free命令對於很多的Linux運維來說,應該是非常熟悉的了。但作爲一個經常使用linux系統的小白來說,我們也需要了解一下free命令。
free 命令顯示系統內存的使用情況,包括物理內存、交換內存(swap)和內核緩衝區內存。
free命令的返回結果有4行:標題行、Mem、-/+buffers/cache、Swap,下面逐一瞭解。
1、Mem行
顯示物理內存情況。各列含義如下:
total -->內存總量
used -->使用內存
free -->可用內存
shared -->共享內存
buffers -->buffer緩存,可回收
cached -->cached緩存,可回收
總內存=使用的+可用的:Mem.total = used+free
2、-/+buffers/cache行
這裏的buffers指Buffer cache(緩衝區緩存),cache指Page cache(頁面緩存)。在當前的Linux內核中,Page cache是針對內存頁的緩存。
也就是說,如果有內存是以page進行分配管理的,都可以使用Page cache作爲其緩存來管理使用。
當然,不是所有的內存都是以頁(page)進行管理的,也有很多是針對塊(block),這部分內存使用如果要用到cache功能,則都集中到buffer cache中來使用。
真實可用的內存:-/+buffers/cache.free
(計算已使用內存時減去buffers/cache,計算可使用內存時加上buffers/cache。)
Mem行和buffers/cache行的各列計算關係如下:(M代表Mem行,B代表buffers/cache行)
3、Swap行
顯示交換空間使用情況。
交換空間(swap space)是磁盤上的一塊區域,可以是一個分區,也可以是一個文件。
當系統物理內存喫緊時,Linux會將內存中不常訪問的數據保存到swap上,這樣系統就有更多的物理內存爲各個進程服務。
而當系統需要訪問swap上存儲的內容時,再將swap上的數據加載到內存中,這就是常說的換出和換入。
交換空間可以在一定程度上緩解內存不足的情況,但是它需要讀寫磁盤數據,所以性能不是很高。
4. free [-bkmgotV][-s <間隔秒數>]
usage: free [-b|-k|-m|-g|-h] [-l] [-o] [-t] [-s delay] [-c count] [-V]
-b,-k,-m,-g show output in bytes, KB, MB, or GB
-h human readable output (automatic unit scaling)
-l show detailed low and high memory statistics
-o use old format (no -/+buffers/cache line)
-t display total for RAM + swap
-s update every [delay] seconds
-c update [count] times
-a show available memory if exported by kernel (>80 characters per line)
-V display version information and exit
參數說明:
-b 以Byte爲單位顯示內存使用情況。
-k 以KB爲單位顯示內存使用情況。(默認free)
-m 以MB爲單位顯示內存使用情況。
-g 以G爲單位顯示內存使用情況。
-h 自動取整數顯示內存使用情況。
-o 不顯示緩衝區調節列。
-t 顯示內存總和列。
-a 顯示available內存
-V 顯示版本信息。
-s<間隔秒數> 持續觀察內存使用狀況。
5秒查詢一次,退出用ctrl+c
5. /proc/meminfo 文件
其實free命令中的信息都來自於/proc/meminfo文件。/proc/meminfo文件包含了更多更原始的信息,只是看起來不太直觀:
cat /proc/meminfo