Existe-t-il un moyen de connaître la taille du cache L1, L2, L3 et de la RAM dans Ubuntu?
Une commande de terminal ou des fichiers que je pourrais examiner?
Existe-t-il un moyen de connaître la taille du cache L1, L2, L3 et de la RAM dans Ubuntu?
Une commande de terminal ou des fichiers que je pourrais examiner?
Réponses:
Utilisez la commande lscpu :
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Thread(s) per core: 1
Core(s) per socket: 2
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 15
Model: 6
Stepping: 5
CPU MHz: 2400.000
BogoMIPS: 6000.33
L1d cache: 16K
L2 cache: 2048K
NUMA node0 CPU(s): 0,1
Les informations répertoriées sont par cœur de processeur.
Il y a la commande libre (-h donne des résultats sous forme lisible par l'homme, c'est-à-dire GiB plutôt que des octets):
$ free -h
total used free shared buffers cached
Mem: 2.0G 390M 1.6G 10M 15M 160M
-/+ buffers/cache: 215M 1.7G
Swap: 2.0G 0B 2.0G
Cela vous donnera vos informations de cache. La désignation de socket vous indiquera à quel cache il est fait référence dans la section.
sudo dmidecode -t cache
Pour la RAM, il y a quelques choses à regarder, mais meminfo devrait le faire. J'ai utilisé grep ici pour afficher uniquement total / free mais vous pouvez utiliser moins ou cat pour voir le tout. Il affiche beaucoup plus d'informations sur la taille et l'utilisation de la mémoire que sur la taille.
grep Mem /proc/meminfo
Sur la base de la réponse de jkabrams avec la commande suivante et en filtrant le "cache", chaque élément de cache qui vous est présenté.
lscpu | grep cache
et RAM:
free -h
Pour plus d'informations sur la RAM, les processus, etc., vous pouvez utiliser htop sur votre distribution. Installez-le comme ceci sur ubuntu.
sudo apt-get install htop
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 sysconf
fonction 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.c
fait:
__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 dispose également d'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 un aperçu.