Linux'ta L2 önbellek boyutunu nasıl bulabilirim?


Yanıtlar:


29

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

veya kontrol edin dmidecode

veya kullan lshw


27

EDIT 3 : Heh, üzgünüm, sadece yapın sudo dmidecode -t cacheve 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.


17

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:görüntü tanımını buraya girin


9

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

lscpuegzotik 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ı.
zloster

5

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 sysconfC 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 .


4

dmesg | grep cache L1 ve L2 ile ilgili bilgileri gösterecektir.


Veya dmesg (veya dmesg.boot) ve CPU modelini arayın. O zaman buna google.
Hennes
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.