我们用free去查看内存
1 | total used free shared buff/cache available |
我们可以看到Mem和Swap的场景。今天我们主要聊下buff和cache这俩个指标,它俩分别代表什么呢?他们来源于哪里呢
来源:/proc/meminfo,我们可以通过man free来看到下面的说明
1 | buffers |
- buffers对应的/proc/meminfo的buffers值
cache对应的是/proc/meminfo的Cached值,和SReclaimable值
它们分别是
Buffers 是对原始磁盘块的临时存储,也就是用来缓存磁盘的数据,通常不会特别大(20MB 左右)。这样,内核就可以把分散的写集中起来,统一优化磁盘的写入,比如可以把多次小的写合并成单次大的写等等。
- Cached 是从磁盘读取文件的页缓存,也就是用来缓存从文件读取的数据。这样,下次访问这些文件数据时,就可以直接从内存中快速获取,而不需要再次访问缓慢的磁盘。
SReclaimable 是 Slab 的一部分。Slab 包括两部分,其中的可回收部分,用 SReclaimable 记录;而不可回收部分,用 SUnreclaim 记录。
buffer:主要针对磁盘操作,对磁盘的读、写都会影响buffer。
cache:主要针对文件操作,对磁盘的读、写都会影响cache。注意:
关于磁盘和文件的区别,磁盘是一个块设备,可以划分为不同的分区;
- 在分区之上再创建文件系统,挂载到某个目录,之后才可以在这个目录中读写文件。