it-swarm.asia

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

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?

32
jkg

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

veya dmidecode öğesini kontrol edin

veya lshw kullanın

28
Dakshina Dasari

EDIT: Heh, üzgünüm, sadece Sudo dmidecode -t cache yapın ve CPU'nuzun önbellek bilgisini gösterir. Hangi bölümü aradığınızı söylemek için (L1 veya L2), Configuration: satırına bakın. Configuration: Enabled, Not Socketed, Level 2 istiyorum.

27

Aşağıdakileri kontrol etmelisiniz tool . Ç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:enter image description here

17
zloster

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
9
user1846476

getconfNAME _

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 sarmalayıcı olmasıdır (önbellek argümanları POSIX olmayan uzantılardır) ve bu nedenle C kodundan da kullanılabilir.

Ubuntu 16.04'te test edilmiştir.

x86 CPUID komutu

CPUID x86 komutu aynı zamanda önbellek bilgileri de sunar ve kullanıcılara doğrudan erişilebilmektedir: https://en.wikipedia.org/wiki/CPUID

glibc bu yöntemi x86 için kullanıyor gibi görünüyor. Adım hata ayıklama/talimat izleme ile onaylanmadı, ancak 2.28 sysdeps/x86/cacheinfo.c için kaynak şunları yapıyor:

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

TODO şu an tembel, şu şekilde sorulan minimal bir C örneği oluşturuyor: https://stackoverflow.com/questions/14283171/how-to-receive-l1-l2-l3-cache-size-using- cpuid-öğretim-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, bkz. ARMv8 Programcı El Kitabı 11.6 "Önbellek keşfi" genel bakış.

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

4
Dhaval Soni