Linux'ta L2 önbellek boyutunu nasıl bulacağımı bilmek istedim ...
L1 önbellek boyutu için aşağıdakileri yapıyorum
pico /proc/cpuinfo
Peki ya L2 önbellek boyutu?
Linux'ta L2 önbellek boyutunu nasıl bulacağımı bilmek istedim ...
L1 önbellek boyutu için aşağıdakileri yapıyorum
pico /proc/cpuinfo
Peki ya L2 önbellek boyutu?
Yanıtlar:
cat /sys/devices/system/cpu/cpu0/cache/index2/size
veya kontrol edin dmidecode
veya kullan lshw
EDIT 3 : Heh, üzgünüm, sadece yapın sudo dmidecode -t cache
ve bu işlem CPU'nuzun önbellek bilgisini gösterir. Hangi bölüme baktığınızı söylemek için (L1 veya L2), Configuration:
çizgiye bakın. Sen istiyorsun Configuration: Enabled, Not Socketed, Level 2
.
Aşağıdaki aracı kontrol etmelisiniz . Çalıştığım tüm araçlardan en doğru bilgileri veriyor. Bu komut satırı sürüm çıkışıdır:
~$ 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)
Ve bu grafik arayüz:
Sadece kullan: lscpu
Örnek çıktı:
$ 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
verir:
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
Veya tek bir seviye için:
getconf LEVEL2_CACHE_SIZE
Bu arayüzle ilgili en güzel şey, sadece POSIX sysconf
C işlevinin etrafındaki bir sarıcı olması (önbellek argümanları POSIX olmayan uzantılardır) ve böylece C kodundan da kullanılabiliyor olmasıdır.
Ubuntu 16.04'te test edilmiştir.
x86 CPUID komutu
CPUID x86 talimatı ayrıca önbellek bilgileri sunar ve doğrudan kullanıcı tarafından erişilebilir: https://en.wikipedia.org/wiki/CPUID
glibc bu yöntemi x86 için kullanıyor gibi görünüyor. Adım adım hata ayıklama / talimat takibi ile onaylamadım, ancak 2.28 kaynağı sysdeps/x86/cacheinfo.c
:
__cpuid (2, eax, ebx, ecx, edx);
Minimal C örnek oluşturmak YAPILACAK, tembel şimdi de sordu: https://stackoverflow.com/questions/14283171/how-to-receive-l1-l2-l3-cache-size-using-cpuid-instruction-in-x86
ARM ayrıca, Önbellek Boyutu Kimlik Kaydı (CCSIDR) gibi kayıtlar yoluyla önbellek boyutlarını bulmak için mimari tanımlı bir mekanizmaya sahiptir, genel bir bakış için ARMv8 Programcı El Kitabı 11.6 "Önbellek keşfi" konusuna bakın .
dmesg | grep cache
L1 ve L2 ile ilgili bilgileri gösterecektir.
lscpu
egzotik konfigürasyona sahip bazı işlemcilerde doğru değildir. Örneğin CPU Cevabıma CPU ailesi: 6 Model: 15 Stepping: 11 CPU MHz: 1866,742 bogomips: 3.733,48 Sanallaştırma: VT-x L1d cache: 32K L1i cache: 32K L2 cache: Aşağıdaki (atlanmış bazı bilgi) verir 4096K numa node0 işlemci (ler): 0-3 CPU Xeon L5320 ile 8 MB L2 toplamı.