Afficher la taille du cache du processeur via la ligne de commande?

8

Comment afficher la taille de mon cache CPU à l'aide de la ligne de commande?

Je souhaite afficher des informations sur le cache L1, L2 et L3.

De plus, serait-il possible de ne sortir que les informations du cache, afin que toutes les autres informations soient filtrées?

Dis moi pourquoi
la source

Réponses:

11

lscpu fournira les informations que vous recherchez.

lscpu | grep "cache"pour filtrer uniquement les informations de cache. Cela se traduira par quelque chose comme:

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

sysfs

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

Donne:

==> /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

donne:

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

Ou pour un seul niveau:

getconf LEVEL2_CACHE_SIZE

La chose intéressante à propos de cette interface est qu'elle n'est qu'un wrapper autour de la sysconffonction POSIX C (les arguments de cache sont des extensions non-POSIX), et qu'elle peut donc également être utilisée à partir du code C.

Testé dans Ubuntu 16.04.

Instruction CPUID x86

L'instruction CPUID x86 offre également des informations sur le cache et est directement accessible par l'utilisateur: https://en.wikipedia.org/wiki/CPUID

la glibc semble utiliser cette méthode pour x86. Je n'ai pas confirmé par étape le débogage / suivi des instructions, mais la source de 2.28 le sysdeps/x86/cacheinfo.cfait:

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

TODO créer un exemple C minimal, paresseux maintenant, demandé à: /programming/14283171/how-to-receive-l1-l2-l3-cache-size-using-cpuid-instruction-in-x86

ARM possède également un mécanisme défini par l'architecture pour trouver les tailles de cache via des registres tels que le registre d'ID de taille de cache (CCSIDR), voir le manuel ARMv8 Programmers 'Manual 11.6 «Cache discovery» pour une vue d'ensemble.

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

Veuillez trouver ci-dessous la commande pour répertorier la taille de tous les dossiers liés au cache existants.

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