在 Linux 系统中,缓存(Cache)通常指用于提升系统性能、减少磁盘 I/O 或网络延迟的临时数据存储机制。从系统架构来看,Linux 的缓存可以分为多个层次和类型,下面按常见分类方式系统说明:
一、按用途/位置分类(最常见)
1. 页缓存(Page Cache)
- 作用:缓存文件数据(磁盘文件)
- 位置:内存(RAM)
- 说明:
- 读取文件时,数据先进入页缓存
- 再次读取相同文件可直接从内存获取
free、top 中看到的 buff/cache 主要包含它
- 示例:
cat bigfile.txt
2. 缓冲区缓存(Buffer Cache / Buffers)
- 作用:缓存块设备(如磁盘)的元数据或原始块
- 位置:内存
- 说明:
- 主要用于文件系统元数据(inode、目录项等)
- 在较新内核中,buffer 实际也使用 page cache
- 查看:
free -h
3. dentry 缓存(目录项缓存)
- 作用:缓存目录结构(路径 → inode 映射)
- 说明:
- 加速文件路径查找
- 属于内核 slab 缓存的一部分
4. inode 缓存
- 作用:缓存文件 inode 信息
- 说明:
- 加速文件属性访问(权限、大小等)
- 同样属于 slab 缓存
5. slab 缓存(Slab Allocator)
- 作用:内核对象缓存
- 包含:
- dentry
- inode
- 进程描述符
- 网络套接字对象
- 查看:
slabtop
二、按缓存层次分类
1. CPU 缓存(硬件)
- L1 / L2 / L3 Cache
- 由 CPU 硬件管理,对 OS 透明
2. 内核缓存
3. 用户空间缓存
- 应用程序自身缓存(如 Redis、MySQL 缓冲池)
- glibc malloc 缓存
三、按功能/场景分类
1. 文件系统缓存
- ext4 / xfs 等文件系统缓存
- 包括读写缓存
2. 网络缓存
- socket 缓冲区(send/recv buffer)
- ARP 缓存
- 路由缓存(老内核)
3. 交换缓存(Swap Cache)
- 用于 swap 分区的数据缓存
- 避免重复 swap 读写
4. 设备缓存
四、常见查看命令汇总
free -h
cat /proc/meminfo
slabtop
vmstat 1
五、一句话总结
Linux 缓存主要包括:页缓存、缓冲区缓存、dentry/inode 缓存、slab 缓存、swap 缓存和网络缓存,核心目的是用内存换速度。
如果你是想了解如何清理缓存、缓存对性能的影响,或某种具体缓存(如 Redis / 文件缓存),可以继续问。