首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Linux 系统 Cache 机制及相关工具介绍

Linux 系统 Cache 机制及相关工具介绍

原创
作者头像
隔壁没老王
发布2025-10-13 19:05:26
发布2025-10-13 19:05:26
20
举报

-

很多人疑惑为什么新部署的 Linux 机器用 free 命令查看时,free(空闲)字段数值很低。这其实与 Linux 的内核机制有关:系统会动态调整内存用于缓存(cache),当应用程序需要内存时,内核会自动回收缓存供应用使用;而当机器空闲时,又会自动将更多内存用作缓存来提升系统整体性能。

一、Linux 系统 Cache 概述

在 Linux 系统中,Cache(缓存)是提升系统性能的关键机制之一。它主要用于临时存储频繁访问的数据,减少对慢速存储设备(如硬盘)的直接访问,从而加快数据读写速度。

二、相关工具介绍

1、pcstat 工具

工具来自:https://github.com/tobert/pcstat

此工具可以查看指定文件缓存的命中率情况。

代码语言:shell
复制
[root@test ~]# pcstat /var/log/messages
|-------------------+----------------+------------+-----------+---------|
| Name              | Size           | Pages      | Cached    | Percent |
|-------------------+----------------+------------+-----------+---------|
| /var/log/messages | 188784         | 47         | 47        | 100.000 |
|-------------------+----------------+------------+-----------+---------|
[root@test ~]# 

输出的结果:

Size: 文件的总大小。这是文件在硬盘上的完整大小。

Pages: 文件大小对应的内存页数。在大多数 Linux 系统中,一个内存页的大小是 4KB,所以这个数值是文件大小除以4KB的结果。

Cached: 文件在内存中的缓存页数。这是当前被操作系统缓存的该文件的部分大小(以内存页为单位)。

Percent: 文件被缓存的百分比。这个百分比是 Cached 除以 Pages 的结果

2、cachetop 工具

工具来自 https://github.com/iovisor/bcc

此工具可以查看页面缓存的命中/非命中情况,具体到每个进程。

代码语言:shell
复制
[root@test ~]# cachetop 1
18:39:26 Buffers MB: 86 / Cached MB: 246 / Sort: HITS / Order: ascending
PID      UID      CMD              HITS     MISSES   DIRTIES  READ_HIT%  WRITE_HIT%
     526 root     auditd                  4        0        0     100.0%       0.0%
     291 root     jbd2/vda1-8             7        2        5      22.2%      22.2%
   27571 root     sleep                   9        0        0     100.0%       0.0%
   27632 root     sleep                   9        0        0     100.0%       0.0%
   27667 root     sleep                   9        0        0     100.0%       0.0%
   27561 root     bash                   26        0        0     100.0%       0.0%
   27622 root     bash                   26        0        0     100.0%       0.0%
   27649 root     bash                   26        0        0     100.0%       0.0%
   27562 root     bash                   49        0        0     100.0%       0.0%
   ................

输出的结果:

PID:进程pid

UID:进程用户

CMD:进程运行的命令

HITS :缓存命中的次数

MISSES :表示缓存未命中的次数

DIRTIES, 表示新增到缓存中的脏页数

READ_HIT%:读操作缓存命中率

WRITE_HIT%:写操作缓存命中率

3、cachestat工具

工具来自 https://github.com/iovisor/bcc

此工具是显示整个文件系统的命中率情况。

代码语言:shell
复制
[root@test ~]# cachestat 1
    HITS   MISSES  DIRTIES HITRATIO   BUFFERS_MB  CACHED_MB
   41170        0      184  100.00%           75        197
   32249        1       78  100.00%           75        197
   31991        0       87  100.00%           75        197
   43034        2      116  100.00%           75        197
   27862        0       76  100.00%           75        197
   38632        0      108  100.00%           75        197
   34518       74      214   99.79%           75        197
   32084        0       68  100.00%           75        197
   46494        0      138  100.00%           75        197
   35349        0       74  100.00%           75        197

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Linux 系统 Cache 概述
  • 二、相关工具介绍
    • 1、pcstat 工具
    • 2、cachetop 工具
    • 3、cachestat工具
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档