目录
1、查看CPU Cache级数,每级大小
[root@localhost ~]# ls /sys/devices/system/cpu/cpu0/cache/
index0 index1 index2 index3
[root@localhost ~]# ls /sys/devices/system/cpu/cpu0/cache/index0
coherency_line_size level number_of_sets physical_line_partition shared_cpu_list shared_cpu_map size type ways_of_associativity
[root@localhost ~]# ls -l /sys/devices/system/cpu/cpu0/cache/index0
total 0
-r--r--r-- 1 root root 4096 Jan 3 14:22 coherency_line_size
-r--r--r-- 1 root root 4096 Jan 3 14:38 level
-r--r--r-- 1 root root 4096 Jan 3 14:38 number_of_sets
-r--r--r-- 1 root root 4096 Jan 3 14:38 physical_line_partition
-r--r--r-- 1 root root 4096 Jan 3 14:38 shared_cpu_list
-r--r--r-- 1 root root 4096 Jan 3 14:38 shared_cpu_map
-r--r--r-- 1 root root 4096 Jan 3 14:38 size
-r--r--r-- 1 root root 4096 Jan 3 14:38 type
-r--r--r-- 1 root root 4096 Jan 3 14:38 ways_of_associativity
[root@localhost ~]# cat /sys/devices/system/cpu/cpu0/cache/index0/level
1
[root@localhost ~]# cat /sys/devices/system/cpu/cpu0/cache/index1/level
1
[root@localhost ~]# cat /sys/devices/system/cpu/cpu0/cache/index2/level
2
[root@localhost ~]# cat /sys/devices/system/cpu/cpu0/cache/index3/level
3
[root@localhost ~]# cat /sys/devices/system/cpu/cpu0/cache/index3/type
Unified
[root@localhost ~]# cat /sys/devices/system/cpu/cpu0/cache/index0/type
Data
[root@localhost ~]# cat /sys/devices/system/cpu/cpu0/cache/index0/size
16K
[root@localhost ~]# cat /sys/devices/system/cpu/cpu0/cache/index1/size
32K
2、查看cpuX中Cache的关联方式
如查看cpu0 的一级缓存中的有多少组,
$ cat /sys/devices/system/cpu/cpu0/cache/index0/number_of_sets
$64
如查看cpu0的一级缓存中一组中的行数
$cat /sys/devices/system/cpu/cpu0/cache/index0/ways_of_associativity
$8
3、查看cache line的大小
上面以本人电脑的cpu一级缓存为例知道了cpu0的一级缓存的大小:32k,其包含64个(sets)组,每组有8(ways),则可以算出每一个way(cache_line)的大小 cache_line = 32*1024/(64*8)=64 bytes。当然我们也可以通过以下命令查出cache_line的大小(单位是字节)
1、通过coherency_line_size文件
[root@localhost ~]# cat /sys/devices/system/cpu/cpu0/cache/index0/coherency_line_size
64
2、通过cpuinfo文件
$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 60
model name : Intel(R) Core(TM) i7-4770K CPU @ 3.50GHz
stepping : 3
cpu MHz : 3497.664
cache size : 8192 KB //指的是三级cache大小
physical id : 0
siblings : 8
core id : 0
cpu cores : 4
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm sse4_1 sse4_2 movbe popcnt aes xsave avx lahf_lm abm ida arat tpr_shadow vnmi flexpriority ept vpid
bogomips : 6995.32
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
4、lscpu指令查看各级缓存和基本信息
通过/proc/cpuinfo可以查看到很多信息,但里面的缓存只有三级缓存,下面的命令可以看到一级和二级缓存大小
[root@localhost ~]# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 24
On-line CPU(s) list: 0-23
Thread(s) per core: 2
Core(s) per socket: 6
CPU socket(s): 2
NUMA node(s): 2
Vendor ID: GenuineIntel
CPU family: 6
Model: 45
Stepping: 7
CPU MHz: 1997.29
BogoMIPS: 4012.50
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 15360K
NUMA node0 CPU(s): 0,2,4,6,8,10,12,14,16,18,20,22
NUMA node1 CPU(s): 1,3,5,7,9,11,13,15,17,19,21,23
[root@localhost ~]#
基本上cpuinfo文件里的很多信息,这里也有了,简单信息说明如下:
l1d : 一级数据缓存 。
L1i :一级指令缓存 。
L2 cache : 二级缓存 。
L3 cache :三级缓存。