Linux上的free命令簡介


每次使用free時都比較迷惑,對於上面的內容一直都不是很清楚,今天仔細查了以下,和大家一起分享以下:
先看一下free的運行結果:

這里寫圖片描述

free打印出的內存信息主要分為兩種,一種是安裝的內存,一種是用磁盤虛擬的內存,就是這里的Swap,相信裝過Linux系統的同學肯定不陌生交換分區,這里Swap大小就是我們分區的時候分配的大小。
下面來分別解釋以下每個列的意思:

total:去掉為硬件和操作系統保留的內存后剩余的內存總量。許多人奇怪自己的電腦安裝了一共8G的內存,但是顯示總共只有七點幾G的,現在應該沒什么疑惑了把,不管Linux還是Windows都會有部分內存是保留給硬件和操作系統的!
userd:當前已使用的內存總量。
free:空閑的或可以使用的內存總量
shared:共享內存大小,主要用於進程間通信
buff(buffers):主要用於塊設備數據緩沖,例如記錄文件系統的metadata(目錄、權限等等信息)。
cache:主要用於文件內容緩沖
available:可以使用的內存總量

buffers與cached的區別:

對於應用程序來說,buffers/cached 是等於可用的,因為buffer/cached是為了提高文件讀取的性能,當應用程序需在用到內存的時候,buffer/cached會很快地被回收。
所以從應用程序的角度來說 可用內存=系統free memory+buffers+cached.
buffers是指用來給塊設備做的緩沖大小,他只記錄文件系統的metadata以及 tracking in-flight pages,cached是用來給文件做緩沖。
那就是說:buffers是用來存儲,目錄里面有什么內容,權限等等,而cached直接用來記憶我們打開的文件的。
關於為什么需要緩沖,這里簡單解釋以下:我們知道,在CPU,內存,外存的運行速度之間,存在這樣的關系:
CPU比內存快100倍,內存比磁盤快十萬倍,且他們之間的差距還在增大!
因此為了協調他們速度之間的不匹配,緩存就由此而生,在CPU內部的緩存,為了協調CPU和內存之間速度的不匹配,而內存的產生也是為了協調磁盤和CPU速度的不匹配。有個這樣的一個形象的描述:把CPU的一個時鍾周期看作一秒。那么,從L1 cache(CPU的一級緩存)讀取信息就好像是拿起桌上的一張草稿紙(3秒);從L2 cache(CPU的二級緩存)讀取信息則是從身邊的書架上取出一本書(14秒);而從主存中讀取信息則相當於走到辦公樓下去買個零食(4分鍾),而等待硬盤尋道的時間相當於離開辦公大樓並開始長達一年零三個月的環球旅行,而這僅僅是尋道時間!

free的詳細使用方法

語  法: free [-hbkmotV][-s <間隔秒數>]

補充說明:free指令會顯示內存的使用情況,包括實體內存,虛擬的交換文件內存,共享內存區段,以及系統核心使用的緩沖區等。

參  數:
-b  以Byte為單位顯示內存使用情況。 -k  以KB為單位顯示內存使用情況。 -m  以MB為單位顯示內存使用情況。 -h 以比較人性化的方式顯示內存使用情況。 -o  不顯示緩沖區調節列。 -s <間隔秒數>  持續觀察內存使用狀況。 -t  顯示內存總和列。 -V  顯示版本信息。 

free的實現方式

關於free的實現,其實是調用linux下的/proc/meminfo文件
可以對比一下:
zhoupan@Lenovo-G485:~$ free
              total        used        free      shared  buff/cache   available
Mem:        3636688     2286620      240768       79560     1109300     1210716
Swap:       1998844           0     1998844
zhoupan@Lenovo-G485:~$ cat /proc/meminfo 
MemTotal:        3636688 kB
MemFree:          239996 kB
MemAvailable:    1209972 kB
Buffers:           96424 kB
Cached:           912480 kB
SwapCached:            0 kB
Active:          2535176 kB
Inactive:         646160 kB
Active(anon):    2174012 kB
Inactive(anon):    77972 kB
Active(file):     361164 kB
Inactive(file):   568188 kB
Unevictable:         448 kB
Mlocked:             448 kB
SwapTotal:       1998844 kB
SwapFree:        1998844 kB
Dirty:                60 kB
Writeback:             0 kB
AnonPages:       2172872 kB
Mapped:           397968 kB
Shmem:             79560 kB
Slab:             100424 kB
SReclaimable:      68764 kB
SUnreclaim:        31660 kB
KernelStack:        8896 kB
PageTables:        42788 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     3817188 kB
Committed_AS:    6151536 kB
VmallocTotal:   34359738367 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
HardwareCorrupted:     0 kB
AnonHugePages:   1112064 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      175872 kB
DirectMap2M:     3602432 kB
DirectMap1G:           0 kB
>>由於系統在高速的運轉,可能存在部分數據不相同


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM