Bagaimana menemukan ukuran cache L2 di Linux?

33

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?

Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
sumber

Jawaban:

29

cat /sys/devices/system/cpu/cpu0/cache/index2/size

atau periksa dmidecode

atau gunakan lshw

Dakshina Dasari
sumber
27

EDIT 3 : Heh, maaf, lakukan saja sudo dmidecode -t cachedan 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.

Jorge Israel Peña
sumber
17

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:masukkan deskripsi gambar di sini

zloster
sumber
9

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
pengguna1846476
sumber
lscputidak 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.
zloster
5

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 sysconffungsi 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.cmelakukan 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.

Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
sumber
4

dmesg | grep cache akan menampilkan informasi terkait L1 dan L2 Anda.

quack quixote
sumber
Atau dmesg (atau dmesg.boot) dan cari model CPU. Lalu google pada itu.
Hennes