Estimate buffer cache size used for block device I/O buffering on Linux systems.
Buffer cache (the Buffers field in /proc/meminfo) holds metadata-level block I/O buffers, distinct from the file-content page cache (Cached). Dirty pages are modified data waiting to be flushed to disk; the kernel starts background writeback once dirty memory crosses vm.dirty_background_ratio, and — if writeback can't keep pace — throttles writing processes once dirty memory reaches the harder vm.dirty_ratio threshold, which can cause visible application stalls on write-heavy workloads.
Dirty page flush threshold
dirty_threshold = MemTotal × vm.dirty_ratio%
dirty_background_ratio (default 10%) is a soft threshold that starts asynchronous background flushing without blocking applications. dirty_ratio (default 20%) is a hard threshold — if dirty memory reaches it, the process actually writing data is forced to block synchronously until enough is flushed, directly impacting application latency.
On systems with large RAM and slower storage, a high dirty_ratio can let gigabytes of unwritten data accumulate before flushing starts in earnest, risking a large burst of I/O (and potential data loss on power failure) all at once. Lowering it trades some write throughput for smoother, more predictable writeback behavior.
No — Buffers tracks block-device metadata buffering in general, while Dirty specifically tracks pages (from any cache) that have been modified in memory but not yet written to disk. A page can be part of Cached and also counted in Dirty if it's been modified since being read.