-
很多人疑惑为什么新部署的 Linux 机器用 free 命令查看时,free(空闲)字段数值很低。这其实与 Linux 的内核机制有关:系统会动态调整内存用于缓存(cache),当应用程序需要内存时,内核会自动回收缓存供应用使用;而当机器空闲时,又会自动将更多内存用作缓存来提升系统整体性能。
在 Linux 系统中,Cache(缓存)是提升系统性能的关键机制之一。它主要用于临时存储频繁访问的数据,减少对慢速存储设备(如硬盘)的直接访问,从而加快数据读写速度。
工具来自:https://github.com/tobert/pcstat
此工具可以查看指定文件缓存的命中率情况。
[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 的结果
工具来自 https://github.com/iovisor/bcc
此工具可以查看页面缓存的命中/非命中情况,具体到每个进程。
[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%:写操作缓存命中率
工具来自 https://github.com/iovisor/bcc
此工具是显示整个文件系统的命中率情况。
[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 删除。