Как найти размер кэша L2 в Linux?

33

Я хотел знать, как найти размер кэша L2 в Linux ...

для размера кэша L1 я делаю следующее

pico /proc/cpuinfo

как насчет размера кеша L2?

Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
источник

Ответы:

29

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

или проверить dmidecode

или использовать lshw

Дакшина Дасари
источник
27

РЕДАКТИРОВАТЬ 3 : Хех, извините, просто сделайте, sudo dmidecode -t cacheи он покажет вам информацию о кеше вашего процессора. Чтобы сказать, на какой раздел вы смотрите (L1 или L2), посмотрите на Configuration:линию. Вы хотите Configuration: Enabled, Not Socketed, Level 2.

Хорхе Исраэль Пенья
источник
17

Вы должны проверить следующий инструмент . Это дает наиболее точную информацию из всех инструментов, которые я пробовал. Это вывод версии командной строки:

~$ 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)

И это графический интерфейс:введите описание изображения здесь

zloster
источник
9

Просто используйте: lscpu

Пример вывода:

$ 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
user1846476
источник
lscpuне является точным на некоторых процессорах с экзотической конфигурацией. Например, процессор из моего ответа дает следующее (некоторые данные опущены): Семейство процессоров: 6 Модель: 15 Шаг: 11 МГц процессора: 1866,742 BogoMIPS: 3733,48 Виртуализация: Кэш-память VT-x L1d: Кэш-память L1i 32 КБ: Кэш-память L2 32 КБ: 4096 КБ NUMA node0 ЦП: 0-3 ЦП - Xeon L5320 с общим объемом 8 МБ L2.
zloster
5

getconf

getconf -a | grep CACHE

дает:

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

Или для одного уровня:

getconf LEVEL2_CACHE_SIZE

Крутая вещь в этом интерфейсе состоит в том, что он является просто оболочкой для функции POSIX sysconfC (аргументы кэша не являются расширениями POSIX), поэтому его можно использовать и из кода C.

Проверено в Ubuntu 16.04.

инструкция CPUID x86

Инструкция CPUID x86 также предлагает информацию о кеше, и доступ к ней может быть получен непосредственно пользователем: https://en.wikipedia.org/wiki/CPUID

glibc, похоже, использует этот метод для x86. Я не подтвердил пошаговую отладку / трассировку инструкций, но источник для 2.28 sysdeps/x86/cacheinfo.cделает это:

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

TODO создать минимальный пример C, ленивый сейчас, по адресу: https://stackoverflow.com/questions/14283171/how-to-receive-l1-l2-l3-cache-size-using-cpuid-instruction-in-x86

ARM также имеет механизм, определяемый архитектурой для определения размеров кэша через регистры, такие как регистр идентификатора размера кэша (CCSIDR), см. Руководство для программистов ARMv8 11.6 «Обнаружение кэша».

Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
источник
4

dmesg | grep cache покажет вашу информацию L1 и L2.

шарлатан
источник
Или dmesg (или dmesg.boot) и ищите модель процессора. Тогда гуглите по этому поводу.
Хеннес