Linux性能优化从入门到实战:09 内存篇:Buffer和Cache

本文深入探讨Linux内存管理中的Buffer和Cache,解释它们在内存中的作用,如何区分二者,并通过实例分析其在读写操作中的角色。Buffer用于磁盘数据的缓存,Cache用于文件内容的缓存,它们在读写请求中都有应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  Buffer 是缓冲区,而 Cache 是缓存,两者都是数据在内存中的临时存储。
  避免跟文中的“缓存”一词混淆,而文中的“缓存”,则通指内存中的临时存储。

free

$ man free
       buffers
              Memory used by kernel buffers (Buffers in /proc/meminfo)

       cache
              Memory used by the page cache and slabs (Cached and SReclaimable in /proc/meminfo)

       buff/cache
              Sum of buffers and cache

  Buffers 是内核缓冲区用到的内存,对应的是 /proc/meminfo 中的 Buffers 值。
  Cache 是内核页缓存和 Slab 用到的内存,对应的是 /proc/meminfo 中的 Cached 与 SReclaimable 之和。

proc 文件系统

  /proc 是 Linux 内核提供的一种特殊文件系统,是用户跟内核交互的接口。比方说,用户可以从 /proc 中查询内核的运行状态和配置选项,查询进程的运行状态、统计数据等,当然,你也可以通过 /proc 来修改内核的配置。

$ man proc
/meminfo
	Buffers %lu
	    Relatively temporary storage for raw disk blocks that shouldn't get tremendously large 
	    (20MB or so).
	
	Cached %lu
	   In-memory cache for files read from the disk (the page cache).  Doesn't include SwapCached.
	...
	SReclaimable %lu (since Linux 2.6.19)
	    Part of Slab, that might be reclaimed, such as caches.
	    
	SUnreclaim %lu (since Linux 2.6.19)
	    Part of Slab, that cannot be reclaimed on memory pressure.

  Buffers 是对原始磁盘块的临时存储,也就是用来缓存磁盘的数据,通常不会特别大(20MB 左右)。这样,内核就可以把分散的写集中起来,统一优化磁盘的写入,比如可以把多次小的写合并成单次大的写等等。
  Cached 是从磁盘读取文件的页缓存,也就是用来缓存从文件读取的数据。这样,下次访问这些文件数据时,就可以直接从内存中快速获取,而不需要再次访问缓慢的磁盘。
  SReclaimable 是 Slab 的一部分。Slab 包括两部分,其中

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值