温馨提示×

linux缓存有什么类型

小樊
40
2026-10-03 14:47:49
栏目: 智能运维

在 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. 内核缓存

  • 页缓存
  • slab 缓存
  • 网络设备接收/发送缓存

3. 用户空间缓存

  • 应用程序自身缓存(如 Redis、MySQL 缓冲池)
  • glibc malloc 缓存

三、按功能/场景分类

1. 文件系统缓存

  • ext4 / xfs 等文件系统缓存
  • 包括读写缓存

2. 网络缓存

  • socket 缓冲区(send/recv buffer)
  • ARP 缓存
  • 路由缓存(老内核)

3. 交换缓存(Swap Cache)

  • 用于 swap 分区的数据缓存
  • 避免重复 swap 读写

4. 设备缓存

  • 磁盘控制器缓存
  • RAID 卡缓存

四、常见查看命令汇总

free -h              # 查看内存与缓存
cat /proc/meminfo    # 详细内存信息
slabtop              # slab 缓存
vmstat 1             # 系统 I/O 与缓存状态

五、一句话总结

Linux 缓存主要包括:页缓存、缓冲区缓存、dentry/inode 缓存、slab 缓存、swap 缓存和网络缓存,核心目的是用内存换速度。

如果你是想了解如何清理缓存、缓存对性能的影响,或某种具体缓存(如 Redis / 文件缓存),可以继续问。

0 踩