一般我们说内存缓存,主要包含buffer和cache,在free命中查看。
# 注意不同版本的free输出可能会有所不同
$ free
total used free shared buff/cache available
Mem: 8169348 263524 6875352 668 1030472 7611064
Swap: 0 0 0
缓存为什么又分为buffer和cache呢?其实这两者缓存的数据是不一样的。
- buffer是程序直接使用裸磁盘,磁盘是块设备,读写磁盘数据时进行缓存数据。
- cache是需要经过文件系统filesystem,文件系统负责与磁盘进行交互,裸磁盘上层需要经过格式化(nfs、ext、xfs等),然后挂载到文件目录,数据再读写到缓存区。
2、缓存的指标
缓存能否有效利用,主要看缓存的命中率指标。命中率越高,说明缓存利用的越好,应用运行效率越高。
Buffer 和 Cache
对系统性能有很大影响,它能够极大地提升对磁盘的I/O性能,起到了一个桥梁的作用。磁盘的读写一般都比较慢,但内存的速度又极快。在程序运行时,一般都是要先将数据读取到缓存,然后交换完再写回磁盘。
如果要释放缓存,可以使用命令
# 清理缓存
$ echo 3 > /proc/sys/vm/drop_caches
3、分析缓存的工具
1)cachestat
root@test:~# cachestat 1 3
HITS MISSES DIRTIES HITRATIO BUFFERS_MB CACHED_MB
14076 0 0 100.00% 1084 484807
0 0 0 0.00% 1084 484807
0 0 0 0.00% 1084 484807
cachestat 是用于监控 Linux 系统页缓存命中率的工具,参数 1 3 表示每隔 1 秒采样一次,共采样 3 次。
- HITS ,表示缓存命中的次数;
- MISSES ,表示缓存未命中的次数;
- DIRTIES, 表示新增到缓存中的脏页数;
- HITRATIO,表示命中率
- BUFFERS_MB 表示 Buffers 的大小,以 MB 为单位;
- CACHED_MB 表示 Cache 的大小,以 MB 为单位。
2)cachetop
17:56:37 Buffers MB: 1084 / Cached MB: 484808 / Sort: HITS / Order: ascending
PID UID CMD HITS MISSES DIRTIES READ_HIT% WRITE_HIT%
12210 root pg_watcher_serv 15 0 0 100.0% 0.0%
14835 root cachetop 31 0 0 100.0% 0.0%
14880 root ping 359 0 0 100.0% 0.0%
14879 root ping 376 0 0 100.0% 0.0%
14878 root ping 418 0 0 100.0% 0.0%
14881 root nc 481 0 0 100.0% 0.0%
cachetop 展示了每个进程的缓存命中情况。
PID,进程ID。
HITS、MISSES 和 DIRTIES ,跟 cachestat 里的含义一样。
READ_HIT 和 WRITE_HIT ,分别表示读和写的缓存命中率。
这两个命令都需要安装
sudo apt install -y bcc-tools

被折叠的 条评论
为什么被折叠?



