Linux内存篇2
理解内存中的Buffer和Cache
1.proc文件系统
/proc
是Linux内核提供的一种特殊文件系统,是用户跟内核交互的接口。用户可以从/proc
中查询内核
的运行状态和配置选项,查询进程
的运行状态、统计数据等。还可以通过/proc
来修改内核配置。
2. Buffer、Cached、SReclaimable
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.
-
Buffer
是对原始磁盘块的临时存储,也就是用来缓存磁盘的数据,通常不会特别大(20MB左右)。优点:内核可以把分散的写入集中起来,统一优化磁盘的写入,比如可以把多次小的写合并成单次大的写等等。
-
Cached
是从磁盘读取文件的页缓存
,也就是用来缓存从文件读取的数据。优点:访问文件数据时,直接从内存读取,而不需要再次访问磁盘。
-
SReclaimable
是Slab
的一部分。Slab
包括两部分,其中的可回收部分,用SReclaimable
记录;而不可回收部分,用SUnreclaim
记录。
Tips:
Buffer
是对磁盘数据的缓存,而 Cache
是文件数据的缓存,它们既会用在读请求中,也会用在写请求中。
关于Slab: