插件窝 干货文章 如何查看Linux当前缓存实用工具

如何查看Linux当前缓存实用工具

缓存 bash Cache 查看 955    来源:    2025-05-11

在 Linux 系统中,缓存(Cache)主要用于提高文件系统和磁盘 I/O 性能。以下是查看和管理缓存状态的常用方法:


1. 查看系统内存和缓存概况

free -h 命令

free -h
  • 输出关键项
    • buff/cache:合并显示缓冲区(buffers)和页面缓存(page cache)的总用量。
    • available:系统可用内存(包含可回收的缓存)。

vmstat 命令

vmstat -w 1
  • 缓存相关列
    • cache:页面缓存(Page Cache)大小(单位为 KB)。

2. 查看详细的缓存分类

cat /proc/meminfo

cat /proc/meminfo | grep -E "Cached|Buffers|SReclaimable|Shmem"
  • 关键字段
    • Cached:页面缓存(Page Cache)。
    • Buffers:块设备缓冲区(Buffers)。
    • SReclaimable:可回收的 Slab 缓存(如 dentry、inode 缓存)。
    • Shmem:共享内存(包括 tmpfs)。

3. 查看 Slab 缓存(内核对象缓存)

slabtop 命令

sudo slabtop -o
  • 动态显示 Slab 缓存使用情况,按内存占用排序。
  • 常见缓存类型
    • dentry:目录项缓存。
    • inode_cache:inode 缓存。
    • ext4_inode_cache:Ext4 文件系统的 inode 缓存。

cat /proc/slabinfo

cat /proc/slabinfo | awk '{if($3>0) print $0}' | sort -k3 -nr
  • 显示详细的 Slab 缓存统计,过滤并排序活跃对象。

4. 查看文件系统缓存(Page Cache)

pcstat 工具

需要先安装(Go 语言编写):

go install github.com/tobert/pcstat@latest

使用示例(查看某文件是否在缓存中):

pcstat /path/to/file

vmtouch 工具

检查文件或目录的缓存状态:

vmtouch -v /path/to/file
  • 输出示例Files: 1 Directories: 0 Resident Pages: 3/3 12K/12K 100%
    • Resident Pages 表示文件在缓存中的比例。

5. 手动清理缓存

释放 Page Cache

sudo sync && echo 1 | sudo tee /proc/sys/vm/drop_caches

释放 Slab 缓存

echo 2 | sudo tee /proc/sys/vm/drop_caches

释放所有缓存(Page + Slab + Buffers)

echo 3 | sudo tee /proc/sys/vm/drop_caches

注意:生产环境慎用,清理缓存可能导致性能短暂下降。


6. 监控缓存使用趋势

sar 工具(需安装 sysstat

sar -r 1  # 查看内存和缓存变化
sar -B 1  # 查看缓冲区 I/O 统计

htopglances

  • 图形化工具中可直观查看缓存占用比例。

总结命令速查表

用途 命令或文件
内存/缓存概况 free -hvmstat -w 1
详细缓存分类 cat /proc/meminfo
Slab 缓存详情 slabtopcat /proc/slabinfo
文件缓存状态 pcstatvmtouch
清理缓存 写入 drop_caches

根据需求选择工具,通常 free/proc/meminfo 已能满足大部分场景。