Apakah ada cara untuk mengetahui ukuran L1, L2, L3 cache dan RAM di ubuntu?


Jawaban:


12

Informasi CPU

Gunakan perintah 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

Informasi yang tercantum adalah per core-CPU.

Informasi memori

Ada perintah gratis (-h memberikan hasil dalam bentuk yang dapat dibaca manusia, yaitu GiB daripada byte):

$ 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

3

Ini akan memberi Anda informasi cache Anda. Socket Designation akan memberi tahu Anda cache mana yang dirujuk di bagian ini.

sudo dmidecode -t cache

Untuk RAM ada beberapa hal yang perlu dilihat tetapi meminfo harus melakukannya. Saya menggunakan grep di sini untuk hanya menampilkan total / gratis tetapi Anda dapat menggunakan lebih sedikit atau kucing untuk melihat semuanya. Ini menunjukkan lebih banyak informasi tentang ukuran dan penggunaan memori daripada hanya ukuran.

grep Mem /proc/meminfo

1

Berdasarkan jawaban jkabrams dengan perintah berikut dan menyaring "cache" dari itu, setiap item cache Anda telah ditampilkan.

lscpu | grep cache

dan RAM:

free -h

Untuk informasi lebih lanjut tentang RAM, proses, dan sebagainya, Anda dapat menggunakan htop di distro Anda. Instal seperti ini di ubuntu.

sudo apt-get install htop

0

sysfs

for d in /sys/devices/system/cpu/cpu0/cache/index*;
  do tail -c+1 $d/{level,type,size}
  echo
done

Memberi:

==> /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

memberi:

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

Atau untuk satu level:

getconf LEVEL2_CACHE_SIZE

Yang keren tentang antarmuka ini adalah ia hanya membungkus sysconffungsi POSIX C (argumen cache adalah ekstensi non-POSIX), dan juga dapat digunakan dari kode C.

Diuji di Ubuntu 16.04.

Instruksi x86 CPUID

Instruksi CPUID x86 juga menawarkan informasi cache, dan dapat langsung diakses oleh userland: https://en.wikipedia.org/wiki/CPUID

glibc tampaknya menggunakan metode itu untuk x86. Saya belum mengonfirmasi langkah debugging / instruksi, tetapi sumber untuk 2.28 sysdeps/x86/cacheinfo.cmelakukan itu:

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

TODO membuat contoh C minimal, malas sekarang, bertanya di: /programming/14283171/how-to-receive-l1-l2-l3-cache-size-using-cpuid-instruction-instruction-in-x86

ARM juga memiliki mekanisme yang ditentukan arsitektur untuk menemukan ukuran cache melalui register seperti Cache Size ID Register (CCSIDR), lihat Manual Programmer ARMv8 11.6 "Penemuan Cache" untuk tinjauan umum.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.