Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Linux free 指令 buffer 與 cache 差異深度解析

編輯:Linux 系統常見問題解答

free -m 輸出中 buffers 與 cached 兩欄常被混淆,本文從核心角度深度解析兩者本質差異、統計口徑與實務判讀。

free 輸出欄位含義


             total  used  free shared buffers cached
Mem:          503  368  134    0     56    249
-/+ buffers/cache:  62   440
Swap:        1023    0  1023
  • Mem 行 (OS 視角):
     used = 應用程式 + 核心 + buffers + cached
     free = 完全未分配記憶體
  • -/+ buffers/cache 行 (應用程式視角):
     used = 真正被應用程式佔用 (used - buffers - cached)
     free = buffers + cached + free (應用程式可用記憶體)

Buffer vs Cache 核心定義

Buffer:待寫入磁碟的資料 (write-back cache),接近儲存裝置,如磁碟塊設備緩衝區。
Cache:已從磁碟讀取並暫存供後續讀取的資料 (page cache),接近記憶體,如檔案系統快取。

  • Buffer:由核心管理,聚合分散寫入、減少磁碟尋道、定期或 sync 刷入磁碟。卸載裝置時會強制刷新。
  • Cache:依讀取頻率組織 (LRU),熱門資料留在易取位置,冷資料逐漸淘汰。命中率高則磁碟讀 IO 極低。

free 指令中對應關係

  • buffers = Block device buffer cache (塊設備緩衝區)
  • cached = Page cache (頁面快取,檔案系統快取)

實務判讀指南

  • cached 巨大:系統頻繁讀取同組檔案 (資料庫、Web 靜態資源),屬正常優化現象。
  • buffers 持續高:大量寫入操作未及時刷盤,或磁碟效能瓶頸導致回寫緩衝堆積。
  • 可用記憶體不足:關注第二行 free (含 buffers/cache),而非第一行 free。
  • vm.swappiness (0-100) 控制 swap 傾向,預設 60,資料庫伺服器建議降至 10-20。

簡單記憶口訣

Buffer 是「要寫出去的」,Cache 是「讀進來留著的」。Buffer 是通道,Cache 是容器 (快取)。

Copyright © Windows教程網 All Rights Reserved