admin管理员组

文章数量:1530085

Buffer和Cache对系统性能有很大影响,在软件开发的过程中,也可以利用这一点,来优化I/O的性能,提生应用程序的运行效率。

缓存命中率

想利用缓存来提升程序的运行效率,应该怎么评估这个效果尼?换句话书,有没有那个指标可以衡量缓存使用的好坏?
缓存的命中率。所谓缓存命中率,是指直接通过缓存获取数据的请求次数,占所有数据请求次数的百分比。
命中率越高,表示使用缓存带来的收益越高,应用程序的性能也就越好。
实际上,缓存是现在所有高并发系统必需的核心模块,主要作用就是把经常访问的数据(也就是热点数据),提前读入到内存中。这样,下次访问时就可以直接从内存读取数据,而不需要经过硬盘,从而加快应用程序的响应速度。

这些独立的缓存模块通常会提供查询接口,方便我们随时查看缓存的命中情况。不过Linux系统中并没有直接提供这些接口,有两个工具,cachestat和cachetop,他们正是查看系统缓存命中情况的工具。

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

这两个工具都是bcc软件包的一部分,他们基于Linux内核的eBPF机制,来跟踪内核中管理的缓存,并输出缓存的使用和命中情况。
查看工具的使用配置
cachestat 以1秒的而时间间隔,输出了3组缓存统计数据:

root@VM-4-9-ubuntu:~# 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 

指标从左到右依次表示:

  • TOTAL 表示总的I/O次数;
  • MISSES 表示未命中的次数;
  • HITS 表示命中的次数;
  • DIRTIES 表示新增到缓存中的脏页数;
  • BUFFERS_MB 表示Buff

本文标签: 缓存效率程序系统