Saya ingin tahu cara menemukan ukuran cache L2 di Linux ...
untuk ukuran cache L1, saya melakukan hal berikut
pico /proc/cpuinfo
bagaimana dengan ukuran cache L2?
Saya ingin tahu cara menemukan ukuran cache L2 di Linux ...
untuk ukuran cache L1, saya melakukan hal berikut
pico /proc/cpuinfo
bagaimana dengan ukuran cache L2?
Jawaban:
cat /sys/devices/system/cpu/cpu0/cache/index2/size
atau periksa dmidecode
atau gunakan lshw
EDIT 3 : Heh, maaf, lakukan saja sudo dmidecode -t cache
dan itu akan menampilkan informasi cache CPU Anda. Untuk memberi tahu bagian apa yang Anda lihat (L1 atau L2), lihat Configuration:
barisnya. Kamu ingin Configuration: Enabled, Not Socketed, Level 2
.
Anda harus memeriksa alat berikut . Ini memberikan informasi paling akurat dari semua alat yang saya coba. Ini adalah keluaran versi baris perintah:
~$ lstopo-no-graphics
Machine (7984MB)
Socket L#0
L2 L#0 (4096KB)
L1d L#0 (32KB) + L1i L#0 (32KB) + Core L#0 + PU L#0 (P#0)
L1d L#1 (32KB) + L1i L#1 (32KB) + Core L#1 + PU L#1 (P#1)
L2 L#1 (4096KB)
L1d L#2 (32KB) + L1i L#2 (32KB) + Core L#2 + PU L#2 (P#2)
L1d L#3 (32KB) + L1i L#3 (32KB) + Core L#3 + PU L#3 (P#3)
Dan ini adalah antarmuka grafis:
Cukup gunakan: lscpu
Output sampel:
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 1
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 42
Stepping: 7
CPU MHz: 3401.000
BogoMIPS: 6784.57
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 8192K
NUMA node0 CPU(s): 0-3
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 paling keren dari antarmuka ini adalah ia hanya membungkus sysconf
fungsi POSIX C (argumen cache adalah ekstensi non-POSIX), sehingga bisa digunakan dari kode C juga.
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.c
melakukan itu:
__cpuid (2, eax, ebx, ecx, edx);
TODO membuat contoh C minimal, malas sekarang, bertanya di: https://stackoverflow.com/questions/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.
dmesg | grep cache
akan menampilkan informasi terkait L1 dan L2 Anda.
lscpu
tidak akurat pada beberapa CPU dengan konfigurasi yang eksotis. Misalnya CPU dari jawaban saya memberikan yang berikut (dihilangkan beberapa info): Keluarga CPU: 6 Model: 15 Melangkah: 11 CPU MHz: 1866.742 BogoMIPS: 3733.48 Virtualisasi: Cache VT-x L1d: 32K L1i cache: 32K L1i cache: 32K L2 cache: 4096K NUMA node0 CPU: 0-3 CPU adalah Xeon L5320 dengan total 8MB L2.