對於磁碟和文件系統來講 Buffer對應磁碟數據的緩存,用於讀或寫。 Cache對應文件數據的頁緩存,用於讀或寫。 **Buffer**可以用來聚合多個寫操作,**Cache**則可以理解為預讀操作,文件系統通過這兩種方式提升磁碟IO性能。 對於網路協議來講 只有**Buffer**的概念,該**B ...
對於磁碟和文件系統來講
Buffer對應磁碟數據的緩存,用於讀或寫。
Cache對應文件數據的頁緩存,用於讀或寫。
Buffer可以用來聚合多個寫操作,Cache則可以理解為預讀操作,文件系統通過這兩種方式提升磁碟IO性能。
對於網路協議來講
只有Buffer的概念,該Buffer對應數據的收發緩衝區。
對於cpu來講
Cache的概念更多,主要用於CPU與記憶體的讀寫。其存在於CPU硬體中。
Buffer,Cache回收方式(網路協議部分不會參與該過程)
- 自動回收,記憶體將要耗盡時觸發
比如到達高水位/proc/sys/vm/min_free_kbytes
最小剩餘大小 - 手動回收
/proc/sys/vm/drop_caches
echo 1 清楚page cache
echo 2 回收slab分配器中的對象
echo 3 包含1和2
Buffer, Cache回收的代價
Buffer寫緩存不能直接刪除,必須落盤數據一致,方可刪除,因此清緩存時可能會存在大量IO,降低系統性能。
tmpfs、map、shmget中的緩存以及dirty pages 和 slab 中不可回收緩存,無法被自動回收。
交換分區
vm.swappiness
控制頁面交換的傾向程度
Buffer,Cache 較高通常屬於正常現象,可能存在大量的文件讀寫,導致占用大量記憶體,但此時還未觸發高水位回收機制,當應用程式申請大量記憶體時,可能會直接觸發了OOM,於是產生殺進程的現象。
本文來自博客園,作者:StepForwards,轉載請註明原文鏈接:https://www.cnblogs.com/forwards/p/17577930.html