系统优化-内存-内存的Buffer和Cache

我们用free去查看内存

1
2
3
              total        used        free      shared  buff/cache   available
Mem: 251 70 152 2 27 171
Swap: 135 17 118

我们可以看到Mem和Swap的场景。今天我们主要聊下buff和cache这俩个指标,它俩分别代表什么呢?他们来源于哪里呢

来源:/proc/meminfo,我们可以通过man free来看到下面的说明

1
2
3
4
5
6
7
buffers
Memory used by kernel buffers (Buffers in /proc/meminfo)

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

buff/cache
Sum of buffers and cache
  • buffers对应的/proc/meminfo的buffers值
  • cache对应的是/proc/meminfo的Cached值,和SReclaimable值

    它们分别是

  • Buffers 是对原始磁盘块的临时存储,也就是用来缓存磁盘的数据,通常不会特别大(20MB 左右)。这样,内核就可以把分散的写集中起来,统一优化磁盘的写入,比如可以把多次小的写合并成单次大的写等等。

  • Cached 是从磁盘读取文件的页缓存,也就是用来缓存从文件读取的数据。这样,下次访问这些文件数据时,就可以直接从内存中快速获取,而不需要再次访问缓慢的磁盘。
  • SReclaimable 是 Slab 的一部分。Slab 包括两部分,其中的可回收部分,用 SReclaimable 记录;而不可回收部分,用 SUnreclaim 记录。

    buffer:主要针对磁盘操作,对磁盘的读、写都会影响buffer。
    cache:主要针对文件操作,对磁盘的读、写都会影响cache。

    注意:

  • 关于磁盘和文件的区别,磁盘是一个块设备,可以划分为不同的分区;

  • 在分区之上再创建文件系统,挂载到某个目录,之后才可以在这个目录中读写文件。