Lihat ukuran cache CPU melalui baris perintah?

8

Bagaimana cara melihat ukuran cache CPU saya menggunakan command-line?

Saya ingin melihat informasi tentang L1, L2 dan L3 cache.

Selain itu, mungkinkah hanya untuk menghapus informasi tentang cache, sehingga semua informasi lainnya disaring?

TellMeWhy
sumber

Jawaban:

11

lscpu akan memberikan info yang Anda cari.

lscpu | grep "cache"untuk memfilter hanya info cache. Ini akan menghasilkan sesuatu seperti:

L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              3072K
EF Nijboer
sumber
3

sysfs

for d in /sys/devices/system/cpu/cpu0/cache/index*;
  do tail -c+1 $d/{level,type,size}
  echo
done

Memberi:

==> /sys/devices/system/cpu/cpu0/cache/index0/level <==
1

==> /sys/devices/system/cpu/cpu0/cache/index0/type <==
Data

==> /sys/devices/system/cpu/cpu0/cache/index0/size <==
32K

==> /sys/devices/system/cpu/cpu0/cache/index1/level <==
1

==> /sys/devices/system/cpu/cpu0/cache/index1/type <==
Instruction

==> /sys/devices/system/cpu/cpu0/cache/index1/size <==
32K

==> /sys/devices/system/cpu/cpu0/cache/index2/level <==
2

==> /sys/devices/system/cpu/cpu0/cache/index2/type <==
Unified

==> /sys/devices/system/cpu/cpu0/cache/index2/size <==
256K

==> /sys/devices/system/cpu/cpu0/cache/index3/level <==
3

==> /sys/devices/system/cpu/cpu0/cache/index3/type <==
Unified

==> /sys/devices/system/cpu/cpu0/cache/index3/size <==
8192K

getconf

getconf -a | grep CACHE

memberi:

LEVEL1_ICACHE_SIZE                 32768
LEVEL1_ICACHE_ASSOC                8
LEVEL1_ICACHE_LINESIZE             64
LEVEL1_DCACHE_SIZE                 32768
LEVEL1_DCACHE_ASSOC                8
LEVEL1_DCACHE_LINESIZE             64
LEVEL2_CACHE_SIZE                  262144
LEVEL2_CACHE_ASSOC                 8
LEVEL2_CACHE_LINESIZE              64
LEVEL3_CACHE_SIZE                  20971520
LEVEL3_CACHE_ASSOC                 20
LEVEL3_CACHE_LINESIZE              64
LEVEL4_CACHE_SIZE                  0
LEVEL4_CACHE_ASSOC                 0
LEVEL4_CACHE_LINESIZE              0

Atau untuk satu level:

getconf LEVEL2_CACHE_SIZE

Yang keren tentang antarmuka ini adalah ia hanya membungkus sysconffungsi POSIX C (argumen cache adalah ekstensi non-POSIX), dan juga dapat digunakan dari kode C.

Diuji di Ubuntu 16.04.

Instruksi x86 CPUID

Instruksi CPUID x86 juga menawarkan informasi cache, dan dapat langsung diakses oleh userland: https://en.wikipedia.org/wiki/CPUID

glibc tampaknya menggunakan metode itu untuk x86. Saya belum mengonfirmasi langkah debugging / instruksi, tetapi sumber untuk 2.28 sysdeps/x86/cacheinfo.cmelakukan itu:

__cpuid (2, eax, ebx, ecx, edx);

TODO membuat contoh C minimal, malas sekarang, bertanya di: /programming/14283171/how-to-receive-l1-l2-l3-cache-size-using-cpuid-instruction-instruction-in-x86

ARM juga memiliki mekanisme yang ditentukan arsitektur untuk menemukan ukuran cache melalui register seperti Cache Size ID Register (CCSIDR), lihat Manual Programmer ARMv8 11.6 "Penemuan Cache" untuk tinjauan umum.

Ciro Santilli 冠状 病毒 审查 六四 事件 法轮功
sumber
-1

Ketik temukan di bawah perintah untuk mencantumkan ukuran semua folder terkait cache yang ada.

 for i in $(find /  -iname '*cache*'); do du -sh $i ; done 2> /dev/null | grep 'G\|M\|K\|B'| nl
Tuan Linux
sumber