¿Cómo encontrar el tamaño de caché L2 en Linux?


Respuestas:



27

EDITAR 3 : Je, lo siento, solo hazlo sudo dmidecode -t cachey te mostrará la información de caché de tu CPU. Para saber qué sección está mirando (L1 o L2), mire la Configuration:línea. Que desea Configuration: Enabled, Not Socketed, Level 2.


17

Debe verificar la siguiente herramienta . Da la información más precisa de todas las herramientas que he probado. Este es el resultado de la versión de línea de comando:

~$ 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)

Y esta es la interfaz gráfica:ingrese la descripción de la imagen aquí


9

Solo usa: lscpu

Salida de muestra:

$ 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

lscpuno es preciso en algunas CPU con configuración exótica. Por ejemplo, la CPU de mi respuesta proporciona lo siguiente (omitió alguna información): Familia de CPU: 6 Modelo: 15 Paso a paso: 11 CPU MHz: 1866.742 BogoMIPS: 3733.48 Virtualización: caché VT-x L1d: caché L1i 32K: caché L2 32K: 4096K NUMA node0 CPU (s): 0-3 La CPU es Xeon L5320 con 8MB L2 en total.
zloster

5

getconf

getconf -a | grep CACHE

da:

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

O para un solo nivel:

getconf LEVEL2_CACHE_SIZE

Lo bueno de esta interfaz es que es solo una envoltura alrededor de la sysconffunción POSIX C (los argumentos de caché son extensiones que no son POSIX), por lo que también se puede usar desde el código C.

Probado en Ubuntu 16.04.

instrucción x86 CPUID

La instrucción CPUID x86 también ofrece información de caché, y se puede acceder directamente por userland: https://en.wikipedia.org/wiki/CPUID

glibc parece usar ese método para x86. No he confirmado por depuración por pasos / seguimiento de instrucciones, pero la fuente de 2.28 sysdeps/x86/cacheinfo.chace eso:

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

TODO crea un ejemplo C mínimo, perezoso ahora, preguntado en: https://stackoverflow.com/questions/14283171/how-to-receive-l1-l2-l3-cache-size-using-cpuid-instruction-in-x86

ARM también tiene un mecanismo definido por la arquitectura para encontrar tamaños de caché a través de registros como el Registro de ID de tamaño de caché (CCSIDR), consulte el Manual del programador de ARMv8 11.6 "Descubrimiento de caché" para obtener una descripción general.


4

dmesg | grep cache mostrará su información relacionada con L1 y L2.


O dmesg (o dmesg.boot) y busque el modelo de CPU. Entonces google en eso.
Hennes
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.