要通过 CentOS 的 cpustat
工具监控 CPU 缓存,你需要首先确保已经安装了 sysstat
包,因为 cpustat
是这个包的一部分。如果尚未安装,可以使用以下命令进行安装:
sudo yum install sysstat
安装完成后,你可以使用 cpustat
命令来监控 CPU 的各种性能指标,包括缓存命中率。以下是一些常用的 cpustat
参数:
-c
:显示 CPU 使用情况。-m
:显示内存和交换区的使用情况。-d
:显示磁盘使用情况。-e
:显示系统事件。-h
:以人类可读的格式显示数据。-r
:显示运行队列信息。-t
:显示任务和进程相关的统计信息。-u
:显示用户、系统和空闲时间的 CPU 使用情况。
要监控 CPU 缓存,你可以关注以下几个指标:
- L1d_cache 和 L1i_cache:分别表示 L1 数据缓存和 L1 指令缓存的命中率。
- L2_cache:表示 L2 缓存的命中率。
- L3_cache:表示 L3 缓存的命中率。
要查看这些指标,你可以运行以下命令:
sudo cpustat -c -m 1
这个命令会每秒更新一次 CPU 使用情况和内存使用情况。在输出中,你可以找到类似于以下的行:
avg-cpu: \user %system %iowait %steal %idle 12.34 23.45 0.01 0.00 64.20 System: total used free buff/cache Memory: 16384M 4096M 8192M 4096M Swap: 2048M 0B 2048M Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm \util sda 0.00 0.00 1.00 0.50 8.00 4.00 16.00 0.00 0.00 0.00 0.00 0.00 0.00
在这个例子中,buff/cache
列显示了缓存的使用情况。然而,cpustat
默认并不显示 L1、L2 和 L3 缓存的命中率。要获取这些详细信息,你可以查看 /proc/stat
文件:
cat /proc/stat | grep 'cache'
输出可能类似于:
l1d_cache 123456789 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 l1i_cache 987654321 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 l2_cache 1122334455 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 l3_cache 2233445566 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
这些数字表示缓存的访问次数和其他统计信息。要计算命中率,你需要记录一段时间内的访问次数和未命中次数,然后使用以下公式:
命中率 = (访问次数 - 未命中次数) / 访问次数 * 100%
请注意,这些指标可能需要更复杂的脚本来自动收集和计算。如果你需要更详细的缓存性能监控,可以考虑使用其他工具,如 perf
或第三方监控解决方案。