在Linux下能够使用例如以下工具查询CPU缓存:
方式1:
$ lscpu
L1d cache: 32K <span style="white-space:pre"> </span>(一级数据缓存) L1i cache: 32K <span style="white-space:pre"> </span><span style="font-family: Arial, Helvetica, sans-serif;">(一级指令缓存)</span> L2 cache: 256K <span style="white-space:pre"> </span>(二级缓存) L3 cache: 8192K<span style="white-space:pre"> </span>(三级缓存)
方式2:
$ cat /sys/devices/system/cpu/cpu0/cache/index0/size
32K
$ cat /sys/devices/system/cpu/cpu0/cache/index0/level 1
$ cat /sys/devices/system/cpu/cpu0/cache/index1/size 32K
$ cat /sys/devices/system/cpu/cpu0/cache/index1/level 1
$ cat /sys/devices/system/cpu/cpu0/cache/index2/size 256K
$ cat /sys/devices/system/cpu/cpu0/cache/index3/size8192K$ cat /sys/devices/system/cpu/cpu0/cache/index2/level 2
$ cat /sys/devices/system/cpu/cpu0/cache/index3/level
3
方式3:
$ sudo dmidecode -t cache
可是结果与上述的有出路, 显示的L1缓存是256kB, L2缓存是1024 kB, 算上8核, 也与实现不符.
可能程序自身有点问题, 不建议用dmidecode.
# dmidecode 2.12 SMBIOS 2.7 present. Handle 0x003B, DMI type 7, 19 bytes Cache Information Socket Designation: CPU Internal L1 Configuration: Enabled, Not Socketed, Level 1 Operational Mode: Write Back Location: Internal Installed Size: 256 kB Maximum Size: 256 kB Handle 0x003C, DMI type 7, 19 bytes Cache Information Socket Designation: CPU Internal L2 Configuration: Enabled, Not Socketed, Level 2 Operational Mode: Write Back Location: Internal Installed Size: 1024 kB Maximum Size: 1024 kB Handle 0x003D, DMI type 7, 19 bytes Cache Information Socket Designation: CPU Internal L3 Configuration: Enabled, Not Socketed, Level 3 Operational Mode: Write Back Location: Internal Installed Size: 8192 kB Maximum Size: 8192 kB
$ cat /proc/cpuinfo
cache size : 8192 KB
这个仅仅是显示出 L3 cache的大小, 也并不准确.