为何proc/meminfo中Active(file)+Inactive(file)不等于Cached?
Linux页缓存指标差异解析

相关指标定义
- Cached:页缓存(pagecache)中的内存,涵盖文件数据缓存、目录项、索引节点等多种文件系统相关缓存。
- Active(file):最近频繁使用的页缓存内存,系统会优先保留以提升性能,仅内存紧张时才会被回收。
- Inactive(file):近期较少使用的页缓存内存,属于可回收范畴,回收后对性能影响较小。
差异产生的原因
你观察到的Active(file) + Inactive(file) ≠ Cached的数值差异,主要来自以下几点:
- Cached包含更多元数据缓存
Cached的统计范围不仅包含普通文件的页缓存(即Active(file)与Inactive(file)的总和),还包含目录项缓存(dentry cache)、索引节点缓存(inode cache)等文件系统元数据缓存,这些元数据缓存不会被计入Active(file)或Inactive(file)分类,因此会让Cached的数值更大。 - 统计层面的临时延迟
系统内存指标的统计存在短暂延迟,比如刚创建或释放的缓存,可能已被计入Cached,但还未完成Active/Inactive的归类,这会造成临时的数值不匹配。 - 特殊文件缓存的归类例外
像tmpfs中的文件、部分设备文件这类特殊文件的缓存,会被计入Cached,但不会划分到Active(file)或Inactive(file)中,这也会导致两者总和与Cached不等。
内容的提问来源于stack exchange,提问作者Betflop
相关产品推荐
相关产品推荐

