# 什么是 CPU 缓存,如何查看缓存命中率

Issue

欢迎在 Issue 中交流与讨论: Issue 414

Author

回答者: wangedison

CPU 缓存介于 CPU 和内存之间,缓存的是热点的内存数据。这些缓存按照大小不同分为 L1、L2、L3 等三级缓存,其中 L1 和 L2 在同一个cpu核中, 而在同一个CPU插槽中的多个核共享一个 L3 缓存。

缓存命中率,即直接通过缓存获取数据的请求次数,占所有数据请求次数的百分比。当可以直接通过缓存获取到需要的数据,则命中缓存;否则需要从磁盘等地方读取获取数据。缓存命中率越高,表示直接从缓存获取数据的次数越多,程序执行效率越高。 使用cachestat 可以查看整个个操作系统缓存的读写命中情况: cachestat安装方式: sudo apt install perf-tools-unstable

下面以1秒间隔输出三组缓存信息:

$ sudo cachestat 1
Counting cache functions... Output every 1 seconds.
    HITS   MISSES  DIRTIES    RATIO   BUFFERS_MB   CACHE_MB
    1989        0       13   100.0%          501       2600
   12969        0     1412   100.0%          501       2600
   16798        0     2803   100.0%          501       2600

从结果可以看到,HITS 是缓存命中的次数;MISSES是缓存未命中的次数;DIRTIES是表示新增到缓存中的脏页数;BUFFERS_MB 表示 Buffers 的大小,单位为MB;CACHED_MB表示Cache 的大小,单位为MB。

扫码关注公众号全栈成长之路,并发送

即可在关注期间无限制浏览本站全部文章内容

你也可以在文章关于回复公众号扫码解锁全站的技术实现中获得解锁代码,永久解锁本站全部文章

Last Updated: 11/20/2020, 4:39:04 AM