Linux如何查看系统缓存大小及各类缓存使用状态?

Linux系统中的缓存是提升性能的关键机制,通过将频繁访问的数据存储在内存中,减少磁盘I/O操作,从而加快程序响应速度和系统整体效率,要查看Linux中的缓存使用情况,需从不同角度入手,包括内存整体缓存状态、文件系统缓存、目录项与inode缓存、内核对象缓存(slab)等,本文将详细介绍各类缓存的查看方法及常用命令,帮助用户全面掌握Linux缓存监控技巧。

linux如何看缓存

使用free命令查看内存及缓存概况

free命令是最基础的内存查看工具,可直接展示系统内存使用情况及缓存占用,其常用参数包括-h(人类可读格式,如KB/MB/GB)和-m(以MB为单位输出)。

执行free -h后,输出字段包括:

  • total:总内存大小;
  • used:已用内存(包含应用占用和缓存);
  • free:完全空闲内存;
  • shared:共享内存(如tmpfs);
  • buff/cache:缓存总量,其中Buffers是块设备缓存(如磁盘元数据),Cached是文件系统缓存(如文件数据);
  • available:可用内存(估算值,包含可回收的缓存)。

输出可能为:

              total        used        free      shared  buff/cache   available
Mem:          7.7Gi       2.1Gi       3.2Gi       123Mi       2.4Gi       5.1Gi
Swap:         2.0Gi          0B       2.0Gi

此处buff/cache为2.4GB,说明系统有2.4GB内存用于缓存,若应用需要内存,内核可自动回收这部分空间。

使用vmstat监控内存及缓存动态

vmstat(Virtual Memory Statistics)可实时监控系统进程、内存、I/O等状态,通过指定间隔参数,可观察缓存使用趋势。

常用格式:vmstat [间隔] [次数],例如vmstat 2 5表示每2秒输出一次,共5次,重点关注以下字段:

  • cache:Page Cache大小(文件系统缓存);
  • buff:Buffers大小(块设备缓存);
  • free:空闲内存;
  • si/so:swap换入/换出量(若频繁非零,说明内存不足)。

示例输出:

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 3289120 123456 2457600    0    0    50    80   300  500  5  2 90  3  0

cache列的2457600即Page Cache大小,单位为KB(约2.4GB),与free命令结果一致。

查看/proc/meminfo获取详细缓存信息

/proc/meminfo是内核导出的内存详细信息文件,包含更精细的缓存统计,可通过grep过滤关键条目:

cat /proc/meminfo | grep -E "Cached|Buffers|Dirty|Writeback|PageTables"

主要条目说明:

linux如何看缓存

  • Cached:文件系统缓存(不包括Reclaimable Slab);
  • Buffers:块设备缓存;
  • Dirty:已修改但未写回磁盘的脏页;
  • Writeback:正在写回磁盘的页;
  • PageTables:页表内存占用。

例如输出:

Cached:         2457600 kB
Buffers:         123456 kB
Dirty:            10240 kB
Writeback:           0 kB
PageTables:         2048 kB

通过DirtyWriteback可判断磁盘写入压力,若值持续较高,可能需关注磁盘性能。

查看目录项与inode缓存

文件系统依赖目录项(dentry,缓存文件名到inode的映射)和inode缓存(文件元数据)加速查找,相关信息位于/proc/sys/fs/

  1. dentry缓存状态

    cat /proc/sys/fs/dentry-state

    输出格式为used unused age_limit,其中used为当前使用的dentry数量,unused为未使用的数量。

  2. inode缓存状态

    cat /proc/sys/fs/inode-state

    输出格式为inodes unused age_limitinodes为已分配的inode数量,unused为空闲数量。

used值接近系统限制(可通过fs.file-max查看),可能导致文件查找变慢,需考虑调整缓存参数。

分析slab缓存(内核对象缓存)

slab是内核管理的小块内存分配器,用于缓存频繁使用的内核对象(如inode、dentry、task_struct等),查看/proc/slabinfo

cat /proc/slabinfo | head -n 20

输出字段包括name(对象类型)、numactive(活跃对象数)、numslabs(slab块数)、objperslab(每块对象数)等。

linux如何看缓存

name            active   numobj  objsize  objperslab pagesperslab : tunables              : slabdata
dentry          15234    15234    192    21          1    0    0    0 : tunables    0    0    0 : slabs 726   726   726
inode_cache     8765     8765     960    8          2    0    0    0 : tunables    0    0    0 : slabs 1096  1096  1096

inode_cachedentry占用过高,可通过echo 1 > /proc/sys/vm/drop_caches手动清理(需先同步磁盘:sync)。

使用第三方工具实时监控缓存

对于更精细的缓存分析,可安装第三方工具(如bcc-tools):

  1. cachestat:统计文件缓存命中率

    cachestat 1 5  # 每秒输出,共5次

    输出包括HIT(命中次数)、MISS(未命中次数)、HIT%(命中率)等,命中率低说明文件缓存未命中,需优化磁盘访问。

  2. cachetop:按进程查看缓存访问

    cachetop

    按缓存命中排序,可定位高缓存消耗进程,帮助优化应用内存使用。

常用Linux缓存查看命令汇总

命令/文件 适用场景 示例
free -h 内存及缓存总量 快速查看内存概况 free -h
vmstat 2 5 缓存动态变化 监控缓存趋势及内存回收 vmstat 2 5
/proc/meminfo 详细缓存条目(Dirty等) 分析磁盘写入压力 grep -E "Cached|Dirty" /proc/meminfo
/proc/sys/fs/dentry-state dentry缓存状态 定位目录项缓存瓶颈 cat /proc/sys/fs/dentry-state
/proc/slabinfo 内核对象缓存 分析slab内存占用 head -n 20 /proc/slabinfo
cachestat 文件缓存命中率 优化文件访问性能 cachestat 1 5

相关问答FAQs

问题1:清理Linux缓存(如echo 1 > /proc/sys/vm/drop_caches)会影响系统性能吗?
解答:清理缓存会释放内存给应用使用,但若缓存被清理,后续访问相同数据时需重新从磁盘读取,可能导致短暂I/O延迟和性能下降,该操作仅适用于内存紧张时的临时缓解,不建议频繁执行,清理前需先执行sync确保数据写入磁盘,避免数据丢失。

问题2:如何区分Page Cache和Buffers?
解答:Page Cache(通过free/proc/meminfo中的Cached字段查看)是文件系统缓存,用于缓存文件数据(如普通文件内容);Buffers(通过Buffers字段查看)是块设备缓存,用于缓存块设备的元数据(如文件系统超级块、inode表、目录结构等),Page Cache服务于文件数据访问,Buffers服务于磁盘块操作,两者共同构成buff/cache总量。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/37076.html

(0)
酷番叔酷番叔
上一篇 2025年10月6日 16:20
下一篇 2025年10月6日 16:34

相关推荐

  • 在电脑上安装Linux虚拟机的具体步骤是什么?

    在电脑上安装Linux虚拟机,可以实现在不改变现有操作系统的情况下,体验和使用Linux系统,适合开发学习、软件测试等场景,以下是详细步骤,涵盖准备工作、软件选择、安装流程及后续配置,准备工作安装前需确保硬件和软件环境满足要求:硬件要求:CPU:需支持虚拟化技术(Intel VT-x或AMD-V),2010年后……

    2025年8月21日
    8300
  • Linux僵尸进程为何无法用kill杀死?如何彻底清除?

    在Linux/Unix系统中,进程是程序执行的基本单位,具有多种运行状态,其中僵尸进程(Zombie Process)是一种特殊且需要关注的异常状态,僵尸进程指的是子进程已经终止(完成执行或被强制终止),但其父进程尚未通过系统调用(如wait()或waitpid())获取子进程的终止状态,导致子进程的进程描述符……

    2025年8月31日
    7600
  • Linux系统如何实现双屏显示的配置与操作?

    Linux实现双屏显示是提升工作效率或扩展视觉体验的常见需求,通过合理的硬件连接和系统配置,可以轻松实现复制、扩展或仅副屏等显示模式,以下是详细的实现步骤和注意事项,涵盖硬件准备、系统识别、图形界面与命令行配置、问题排查等内容,硬件连接与基础准备双屏显示的首要前提是正确连接硬件设备,目前主流的显示接口包括HDM……

    2025年10月1日
    4900
  • Linux中如何查看显卡型号?常用命令与操作方法有哪些?

    在Linux系统中,查看显卡型号是系统管理、驱动安装或性能优化时的常见需求,由于Linux显卡驱动分为开源驱动(如Mesa、nouveau)和闭源驱动(如NVIDIA-Linux-x86、amdgpu-pro),不同场景下查看方法可能略有差异,本文将详细介绍通过命令行工具、系统文件及图形界面查看显卡型号的多种方……

    2025年10月3日
    6100
  • 手机充电到100%真的伤电池吗

    在Linux系统中,hosts文件是一个用于本地域名解析的关键配置文件,它允许用户手动指定域名与IP地址的映射关系,绕过DNS服务器直接生效,以下是如何安全、高效配置hosts文件的完整指南:hosts文件的作用与重要性核心功能:当访问域名(如www.example.com)时,系统首先查询hosts文件,若存……

    2025年6月20日
    10700

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信