Linux:free指令
學習自:
Linux free命令使用教程(free指令)(查看內存、系統內存、內存占用、內存使用情況)_free命令看到的內存-CSDN博客
1、概述
free指令用于顯示系統中未使用和已使用的物理和swap區總量。
2、語法
free [-bkmght] [ -s 秒數 ]
3、參數
| 參數 | 用途 |
| b | 以B為單位 |
| k | KB |
| m | MB |
| g | GB |
| h | 以人類易讀的方式輸出 |
| t | 加入total行,用于計算某類內存總數 |
| s | 后跟數字,每隔幾秒顯示一次 |
4、輸出
free total used free shared buff/cache available Mem: 828592 148124 422124 5740 258344 546268 Swap: 1952764 0 1952764 free -h total used free shared buff/cache available Mem: 809Mi 144Mi 412Mi 5.0Mi 252Mi 533Mi Swap: 1.9Gi 0B 1.9Gi
1)指標
| 指標 | 說明 |
| total | 總量 |
| used | 已使用 |
| free | 剩余可用 |
| shared | 多進程共享內存 |
| buff/cache | buff+cache大小 |
| available | 可被新應用程序使用的內存大小 |
2)解釋
①buff、cache
buffer和cache是兩種不同的存儲:
buffer:緩沖區。介于內存、硬盤之間,目的是提高內存與硬盤之間的數據交換速度。當數據從內存寫入硬盤時,并不是直接寫入,而是先存到buffer中,待buffer積累到一定大小后統一寫入硬盤。
cache:高速緩存。介于CPU、內存之間,為了解決CPU運算速度與內存的讀寫速度不匹配的問題。Cache中存放頻繁訪問的數據,以便CPU可以快速訪問這些數據。
當OS要讀取某個文件(如/etc/hosts),它會先檢查這個文件的數據是否已經在Cache中,如果在,就放棄訪問磁盤而是直接從內存中讀取。該過程稱為命中。如果未命中,此時OS要去調度I/O去磁盤中讀取數據,再將讀來的數據頁放到Cache中。
在Linux2.4版本之前,cache和buffer是完全分離的,此時對于文件數據會被緩存兩次,這種方式雖然簡單,但是低效,浪費內存空間(【性能】Linux系統上free命令看到的buff/cache到底是什么 - 簡書)。
Linux2.4版本將cache和buffer統一了,如果一個頁加載到了cache,那么在buffer中只需要維護一個指向該頁的指針就可以了。只有那些沒有文件表示的塊才會放到buffer里。
②free、available
free:可用內存空間
available:應用程序可用的內存空間
free是真正尚未被使用的物理內存數量。available是從應用程序視角看到的可用內存數量。Linux為了提高磁盤操作性能,會消耗部分內存去緩存磁盤數據,即buff/cache。因此對于內核來說,buff和cache都屬于已被使用的內存。
當應用程序需要內存時,如果沒有足夠的free使用,內核會從buff和cache中回收內存來滿足應用程序的需求。因此從應用程序角度來看,available=free+buffer+cache。當然,這只是理想的計算方式,實際中的數據往往有較大誤差。
③swap區
swap區是磁盤上的一片空間,也稱為虛擬內存。
當內存空間不足時,會將部分頁調入到swap區以騰出空間給新的程序頁使用。

浙公網安備 33010602011771號