1.缓存命中率

  • 缓存命中率是直接通过缓存获取数据的请求次数,占所有数据请求次数的百分比。
  • 命中率越高,表示使用缓存带来的收益越高,应用程序的性能也就越好。
  • 缓存是现在所有高并发系统必需的核心模块,主要作用就是把经常访问的数据(热点数据),提前读入到内存中,这样下次访问时就可以直接从内存读取数据,让不用经过硬盘

工具

  • cachestat 提供了整个操作系统缓存的读写命中情况
  • cachestop 提供了每个进程的缓存命中情况

安装:

1
2
3
4
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4052245BD4284CDD
echo "deb https://repo.iovisor.org/apt/xenial xenial main" | sudo tee /etc/apt/sources.list.d/iovisor.list
sudo apt-get update
sudo apt-get install -y bcc-tools libbcc-examples linux-headers-$(uname -r)

1.cachestat

1
2
3
4
5
6
7
#  1 秒的时间间隔,输出了 3 组缓存统计数据
$ cachestat 1 3
# 打印
TOTAL MISSES HITS DIRTIES BUFFERS_MB CACHED_MB 
   2    0    2     1        17     279 
   2    0    2     1        17     279
   2    0    2     1        17     279
  1. TOTAL ,表示总的 I/O 次数;
  2. MISSES ,表示缓存未命中的次数;
  3. HITS ,表示缓存命中的次数;
  4. DIRTIES,表示新增到缓存中的脏页数; BUFFERS_MB表示Buffers的大小,以MB为单位;
  5. CACHED_MB 表示 Cache 的大小,以 MB 为单位。

2.cachetop

1
2
3
4
5
$ cachetop
# 打印
11:58:50 Buffers MB: 258 / Cached MB: 347 / Sort: HITS / Order: ascending
PID    UID CMD  HITS MISSES DIRTIES READ_HIT% WRITE_HIT%
13029 root python 1    0      0      100.0%    0.0%
  1. READ_HIT 和 WRITE_HIT ,分别表示读和写的缓存命中率。

3.指定文件的缓存大小

1
$ pcstat <文件>