
答案1
free
從提取其數據/proc/meminfo
slkwr133701:/usr/src/linux # free
total used free shared buffers cached
Mem: 2053456 434572 1618884 0 77888 201820
slkwr133701:/usr/src/linux # cat /proc/meminfo
MemTotal: 2053456 kB
MemFree: 1618736 kB
Buffers: 77928 kB
....
這是指用於臨時區塊 I/O 儲存的記憶體。核心必須不斷分配和釋放相同大小的單元,例如區塊 I/O 傳輸、網路封包和套接字緩衝區
您可以透過運行來更好地了解快取和緩衝區分配slabtop
回答您的使用問題:系統通常會分配比其需要更多的區塊,但隨著「記憶體壓力」的增加,這些額外的區塊將被釋放。
答案2
「緩衝區」在記憶體壓力下是可回收的。所以它類似於頁面緩存(“緩存”欄);沒什麼好擔心的。 「緩衝區」值可以小也可以大,這取決於您的系統正在做什麼:-)。我們可以發現這裡統計了幾種類型的快取。
緩衝區高速緩存其實是塊設備的頁高速緩存。 Linux 只是單獨報告這些dd status=progress if=/dev/sda of=/dev/null
。顯然人們在運行 DVD 播放器程式時也會注意到這一點。
證明請參見:30% 的 RAM 是「緩衝區」。它是什麼?
如果您尚未存取區塊設備節點,則您的「緩衝區」可能都是檔案系統元數據。檔案系統在內部使用緩衝區高速緩存是為了方便。他們確保它永遠不會重複文件數據- 檔案內容 - 儲存在主頁快取中。檔案系統使用緩衝區快取的確切用途(如果有的話)因檔案系統而異。
在實體 RAM 量較小的電腦上,當我使用 ext3/ext4 檔案系統時,我注意到「緩衝區」看起來可能很高。這是因為對日誌的寫入會通過緩衝區高速緩存。 (請參閱上面的連結)。 ext3/4 檔案系統也將目錄內容儲存在緩衝區快取中。
其次,指令顯示的「緩衝區」free
也包括SReclaimable,意思是可回收的slab。 (此處示範:再次監控 Linux 記憶體的正確方法)。
平板內存是不是頁面/緩衝區快取的一部分。然而,將它們一起計數很方便。它們都是可回收的,可回收平板的主要(唯一?)用途是用於檔案系統快取。例如,檔案元資料(索引節點)和路徑查找(目錄項目)會快取在可回收的板中。 」在具有大量文件且大部分空閒的系統上,可回收的平板內存[可能]會佔用大部分系統內存」。
您可以在 中看到原始值Buffers
和SReclaimable
值cat /proc/meminfo
。您也可以執行slabtop
查看板列表。 AFAICTslabtop
不提供有關平板是否可回收的統計資料。但你通常可以猜到,如果有一些可疑的板塊,我想你可以透過名字來找。
[*] 就本答案而言,「緩衝區快取」是 in 計數的Buffers
快取/proc/meminfo
。然而,其他來源可能將整個頁面快取稱為統一緩衝區快取。如果您想要歷史解釋,請參閱第一個連結。
此外,當 Linux 開發人員爭論檔案系統實作時,他們可能會使用「緩衝區快取」來表示不同的含義。
答案3
其次,free指令顯示的「緩衝區」還包括SReclaimable
根據 free 命令的手冊頁(版本 3.3.15):“cache 頁面緩存和平板使用的內存(/proc/meminfo 中的 Cached 和 SReclaimable)”
因此,包含 SReclaimable 的是緩存,而不是緩衝區。