free 指令輸出解讀
$ free
total used free shared buffers cached
Mem: 255268 238332 16936 0 85540 126384
-/+ buffers/cache: 26408 228860
Swap: 265000 0 265000
第一行(Mem)
- total:物理記憶體總量。
- used:已分配給緩衝區與快取(含未實際使用部分)。
- free:完全未被分配的記憶體。
- buffers:區塊裝置讀寫緩衝區(尚未寫入磁碟)。
- cached:檔案系統頁面快取(已從磁碟讀入)。
第二行(-/+ buffers/cache)
- used:實際被應用程式使用的記憶體(= used1 - buffers - cached)。
- free:系統當前真正可用記憶體(= free1 + buffers + cached)。
關鍵等式
total = used1 + free1
total = used2 + free2
used1 = buffers + cached + used2
free2 = buffers + cached + free1
Buffer vs Cache 根本差異
Buffer:資料**待寫入磁碟**的暫存區(區塊裝置寫入緩衝)。
Cache:資料**已從磁碟讀取**並暫存以供後續快速存取(檔案系統頁面快取)。
硬體層面 Cache 補充
- L1/L2 Cache:CPU 內建高速快取(SRAM),解決 CPU 與主記憶體速度落差。
- Buffer:協調不同速度裝置(如磁碟 vs 記憶體)的資料傳輸緩衝區。
實務判讀建議
- cached 值大:大量檔案被快取,若熱點資料命中率高 → 磁碟讀 IO 極低。
- buffers 值大:大量待寫入資料,需關注
pdflush/flush 執行緒狀態。
- 真正記憶體壓力看 第二行 free,而非第一行 free。
Shared Memory 補充
主要用於進程間通訊(IPC),一般應用較少用到,不影響上述等式。