什么是 CPU 缓存,如何查看缓存命中率
Issue 欢迎在 Gtihub Issue 中回答此问题: Issue 414
Author 回答者: edisonwd
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。