You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

关于echo 2 > /proc/sys/vm/drop_caches命令的清理目标问询

关于echo 2 > /proc/sys/vm/drop_caches命令的清理目标问询

嗨,我来给你掰扯清楚这个命令的清理目标,以及为啥你执行后Slab内存还是居高不下:

首先,/proc/sys/vm/drop_caches是Linux内核提供的内存调优接口,不同数值对应不同的清理范围,其中echo 2 > /proc/sys/vm/drop_caches专门清理的是文件系统的元数据缓存——也就是目录项(dentry)和inode缓存,这些属于Slab分配器管理的可回收对象,但只是Slab内存里的一部分而已。

那为啥你执行完命令后可用内存涨了,但Slab的数值还是很高?因为Slab分配器里还包含大量内核运行必需的不可回收对象:比如进程描述符、内核线程的数据结构、各类网络相关的核心缓存结构等等,这些是内核正常运转离不开的,自然不会被这个命令清理。

顺便给你补充下drop_caches其他常用取值对应的清理范围:

  • echo 1 > /proc/sys/vm/drop_caches:只清理页缓存(pagecache),也就是普通文件的内容缓存
  • echo 3 > /proc/sys/vm/drop_caches:同时清理页缓存、目录项和inode缓存

简单总结:这个命令只会清理Slab里标记为可回收的元数据缓存,不会碰内核依赖的核心Slab对象,所以你的Slab内存数值没怎么变是完全正常的~

备注:内容来源于stack exchange,提问作者M.Ozawa

火山引擎 最新活动