在 Linux 系统中,缓存(Cache)主要用于提高文件系统和磁盘 I/O 性能。以下是查看和管理缓存状态的常用方法:
free -h
命令free -h
buff/cache
:合并显示缓冲区(buffers)和页面缓存(page cache)的总用量。available
:系统可用内存(包含可回收的缓存)。vmstat
命令vmstat -w 1
cache
:页面缓存(Page Cache)大小(单位为 KB)。cat /proc/meminfo
cat /proc/meminfo | grep -E "Cached|Buffers|SReclaimable|Shmem"
Cached
:页面缓存(Page Cache)。Buffers
:块设备缓冲区(Buffers)。SReclaimable
:可回收的 Slab 缓存(如 dentry、inode 缓存)。Shmem
:共享内存(包括 tmpfs)。slabtop
命令sudo slabtop -o
dentry
:目录项缓存。inode_cache
:inode 缓存。ext4_inode_cache
:Ext4 文件系统的 inode 缓存。cat /proc/slabinfo
cat /proc/slabinfo | awk '{if($3>0) print $0}' | sort -k3 -nr
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
表示文件在缓存中的比例。sudo sync && echo 1 | sudo tee /proc/sys/vm/drop_caches
echo 2 | sudo tee /proc/sys/vm/drop_caches
echo 3 | sudo tee /proc/sys/vm/drop_caches
注意:生产环境慎用,清理缓存可能导致性能短暂下降。
sar
工具(需安装 sysstat
)sar -r 1 # 查看内存和缓存变化
sar -B 1 # 查看缓冲区 I/O 统计
htop
或 glances
用途 | 命令或文件 |
---|---|
内存/缓存概况 | free -h 、vmstat -w 1 |
详细缓存分类 | cat /proc/meminfo |
Slab 缓存详情 | slabtop 、cat /proc/slabinfo |
文件缓存状态 | pcstat 、vmtouch |
清理缓存 | 写入 drop_caches |
根据需求选择工具,通常 free
和 /proc/meminfo
已能满足大部分场景。