linux buffer cache 过高_Linux命令之free

fc277fd5a51dd4420a9908b37d62e9a7.png

free命令

[root@node8 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:            31G        9.7G         12G        3.5M        9.4G         20G
Swap:            0B          0B          0B

total:表示 总计物理内存的大小。used+free+buff/cache

used:表示 已使用多少。

free:表示 可用内存多少。

Shared:表示多个进程共享的内存总额。

Buffers/cached:表示 磁盘缓存的大小。

buffer比较小:buffer cache,即缓存经常访问块设备的元数据

cache比较大: page cache,即缓存文件内容+slab。slab也分可回收和不可回收部分,可手动回收,但是会在回收缓存这段时间影响主机性能,并且不是有所的可回收slab和page cache都能被回收,正在使用的这些缓存不能被回收,否则系统的性能会很低,所以最后可能的内存是多少,就得评估能够回收的有多少,就有了下面这个参数

available: 是一个估计值,比较准确

  • 注意

top和free看的结果一致;

free命令中used的结果,不包含buffer/cache

旧版本的free命令才有:-/+ buffers/cache,新版的加入了available参数

  • 参考链接

free(1) - Linux manual page


vfs中各种cache的解释

  • page cache

结合了虚拟内存和文件数据,将读取的文件数据缓存在虚拟内存,以便下次读取相同的内容时,直接从内存读取,加快数据访问速度

  • inode cache

保存最近访问的文件i-odes

  • buffer cache

buffer和块设备交互,缓存最近使用的磁盘块元数据,所以一般很小

Linux内核通过buffer cache读取文件数据,但是缓存到page cache中,以便再次使用

  • directory cache

在内存中是一个树状结构,代表文件系统目录结构的一部分,其将会文件路径映射为inode并加速文件路径名的查找,就像dns的作用,根据域名找ip,directory cache的基本元素是d-entry

  • 参考链接

The Linux Kernel's VFS Layer


slab

Linux内存管理模式,页式管理适合于大块内存的情形,而对于内核对象级别的较小内存情形下,不足以占用1个页。就用slab,lab一般对应1个或者多个页,slab里面存储一个个对象。

  • 参考链接

https://www.mawenbao.com/research/linux-ate-my-memory.html

https://fivezh.github.io/2017/06/25/Linux-slab-info/

清除缓存

echo 3 > /proc/sys/vm/drop_caches
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值