Linux free 命令中的 cache 和 buffer 指

2023-04-23  本文已影响0人  wayyyy

free 输出:


free.png
total

内存总量,等同于 /proc/meminfo 中的 MemTotalSwapTotal之和。

used

已使用的内存。计算公式为:used = total - free - buffers - cache

free

未被使用的物理内存,等同于 /proc/meminfo 中的 MemFreeSwapFree

shared

通常是临时文件系统使用的内存,等同于 /proc/meminfo 中的 Shmem(自内核 2.6.32 版本可用,不可用则显示为 0)

available

是从应用程序的角度看到的可用内存数量。

Linux 内核为了提升磁盘操作的性能,会消耗一部分内存去缓存磁盘数据,就是我们介绍的 buffer 和 cache。所以对于内核来说,buffer 和 cache 都属于已经被使用的内存。

当应用程序需要内存时,如果没有足够的 free 内存可以用,内核就会从 buffer 和 cache 中回收内存来满足应用程序的请求。

buffer/cache

查阅 man free 和 /proc 得知:

  • 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 可以用作"将要写入磁盘数据的缓存",也可以用作"从磁盘读取数据的缓存"。
Cache 可以用作"从文件读取数据的页缓存",也可以用作"写文件的页缓存"。
Buffer 是对磁盘数据的缓存,而 Cache 是文件数据的缓存,它们都可以用在读请求中,也会用在写请求中。

具体查看buffer/cache的大小

# cat /proc/meminfo 
  ...
  Buffers:          174448 kB
  Cached:          1914600 kB
  ...
利用 vmstat 命令 探究Buffer 和 Cache

所以综上2个例子:
Buffer 是对磁盘数据的缓存,而 Cache 是文件数据的缓存,它们既会用在读请求中,也会用在写请求中。

free -s 3  # 每隔3s执行一次、
上一篇下一篇

猜你喜欢

热点阅读