Harap sertakan substansi untuk jawaban. Jangan hanya menyebutkan nama perintah, tetapi tunjukkan hasilnya.
slm
lshw(berlari dengan izin root tentu saja) tidak memberi saya informasi cache. tapi lscpudan dmidecodealat memberi saya hasilnya.
Shnd
19
lscpu
Jika Anda hanya peduli tentang ukuran, coba lscpudari util-linux.
Contoh
$ 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: 2
Core(s) per socket: 2
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 37
Model name: Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz
Stepping: 5
CPU MHz: 1199.000
BogoMIPS: 5319.88
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 3072K
NUMA node0 CPU(s): 0-3
x86info
Seharusnya ada juga paket / perintah yang disebut x86info. Dengan asumsi Anda memiliki i386 / x86_64, x86info -charus memberikan informasi lebih rinci tentang cache.
Contoh
$ x86info -c
x86info v1.30. Dave Jones 2001-2011
Feedback to <[email protected]>.
Found 4 identical CPUs
Extended Family: 0 Extended Model: 2 Family: 6 Model: 37 Stepping: 5
Type: 0 (Original OEM)
CPU Model (x86info's best guess): Core i7 (Nehalem) [Clarkdale/Arrandale]
Processor name string (BIOS programmed): Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz
Cache info
L1 Instruction cache: 32KB, 4-way associative. 64 byte line size.
L1 Data cache: 32KB, 8-way associative. 64 byte line size.
L2 (MLC): 256KB, 8-way associative. 64 byte line size.
TLB info
Instruction TLB: 2MB or 4MB pages, fully associative, 7 entries
Instruction TLB: 4K pages, 4-way associative, 64 entries.
Data TLB: 4KB or 4MB pages, fully associative, 32 entries.
Data TLB: 4KB pages, 4-way associative, 64 entries
Data TLB: 4K pages, 4-way associative, 512 entries.
Data TLB: 4KB or 4MB pages, fully associative, 32 entries.
Data TLB: 4KB pages, 4-way associative, 64 entries
64 byte prefetching.
Data TLB: 4K pages, 4-way associative, 512 entries.
Found unknown cache descriptors: dd
Total processor threads: 4
This system has 1 dual-core processor with hyper-threading (2 threads per core) running at an estimated 2.65GHz
Yang paling keren dari antarmuka ini adalah ia hanya membungkus sysconffungsi POSIX C (argumen cache adalah ekstensi non-POSIX), sehingga bisa digunakan dari kode C juga.
glibc tampaknya menggunakan metode itu untuk x86. Saya belum mengonfirmasi langkah debugging / instruksi, tetapi sumber untuk 2.28 sysdeps/x86/cacheinfo.cmelakukan itu:
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.
What: /sys/devices/system/cpu/cpu*/cache/index*/<set_of_attributes_mentioned_below>
Date: July 2014(documented, existed before August 2008)
Description: Parameters for the CPU cache attributes
allocation_policy:
- WriteAllocate: allocate a memory location to a cache line
on a cache miss because of a write
- ReadAllocate: allocate a memory location to a cache line
on a cache miss because of a read
- ReadWriteAllocate: both writeallocate and readallocate
coherency_line_size: the minimum amount of data in bytes that gets
transferred from memory to cache
level: the cache hierarchy in the multi-level cache configuration
number_of_sets: total number of sets in the cache, a set is a
collection of cache lines with the same cache index
physical_line_partition: number of physical cache line per cache tag
shared_cpu_list: the list of logical cpus sharing the cache
shared_cpu_map: logical cpu mask containing the list of cpus sharing
the cache
size: the total cache size in kB
type:
- Instruction: cache that only holds instructions
- Data: cache that only caches data
- Unified: cache that holds both data and instructions
ways_of_associativity: degree of freedom in placing a particular block
of memory in the cache
write_policy:
- WriteThrough: data is written to both the cache line
and to the block in the lower-level memory
- WriteBack: data is written only to the cache line and
the modified cache line is written to main
memory only when it is replaced
File ID:
What: /sys/devices/system/cpu/cpu*/cache/index*/id
Date: September 2016
Contact: Linux kernel mailing list <[email protected]>
Description: Cache id
The id provides a unique number for a specific instance of
a cache of a particular type. E.g. there may be a level
3 unified cache on each socket in a server and we may
assign them ids 0, 1, 2, ...
Note that id value can be non-contiguous. E.g. level 1
caches typically exist per core, but there may not be a
power of two cores on a socket, so these caches may be
numbered 0, 1, 2, 3, 4, 5, 8, 9, 10, ...
Saya heran mengapa pada komputer saya index0dan index1keduanya level1pada kernel v4.15, ini membingungkan. Pengkodean pencegahan 0-indeks? :-)
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
1
@CiroSantilli 华 涌 低端 人口 六四 事件 法轮功, (dengan nama untuk tidak diucapkan), mungkin index0 adalah tentang L1 dengan typeData (L1 cache data) dan index1 adalah tentang L1 dengan typeInstruksi (cache instruksi L1). Kemudian index2 adalah typeUnified dan level2 (L2 cache, dapat menyimpan data dan instruksi)
osgx
ah iya! Saya harus lebih sabar untuk membaca dokumen :-)
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
1
cpuid
Pilihan lain adalah program cpuid . Ini menggunakan CPUIDinstruksi dan tidak memerlukan root. Ini juga dapat bekerja melalui cpuidmodul kernel Linux.
Jawaban:
Jika Anda telah
lshw
menginstal:Contoh
sumber
lshw
(berlari dengan izin root tentu saja) tidak memberi saya informasi cache. tapilscpu
dandmidecode
alat memberi saya hasilnya.lscpu
Jika Anda hanya peduli tentang ukuran, coba
lscpu
dariutil-linux
.Contoh
x86info
Seharusnya ada juga paket / perintah yang disebut x86info. Dengan asumsi Anda memiliki i386 / x86_64,
x86info -c
harus memberikan informasi lebih rinci tentang cache.Contoh
sumber
Anda dapat mencoba perintah ini.
Contoh
Untuk melihat RAM cukup tambahkan sakelar tambahan
-t memory
.Referensi
sumber
getconf
memberi:
Atau untuk satu level:
Yang paling keren dari antarmuka ini adalah ia hanya membungkus
sysconf
fungsi POSIX C (argumen cache adalah ekstensi non-POSIX), sehingga bisa digunakan dari kode C juga.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.c
melakukan itu: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.
sumber
Ada file khusus yang diekspor ke / sys
sysfs
sistem file Linux sejak 2008:https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-devices-system-cpu
File ID:
sumber
index0
danindex1
keduanyalevel
1
pada kernel v4.15, ini membingungkan. Pengkodean pencegahan 0-indeks? :-)type
Data (L1 cache data) dan index1 adalah tentang L1 dengantype
Instruksi (cache instruksi L1). Kemudian index2 adalahtype
Unified danlevel
2 (L2 cache, dapat menyimpan data dan instruksi)cpuid
Pilihan lain adalah program cpuid . Ini menggunakan
CPUID
instruksi dan tidak memerlukan root. Ini juga dapat bekerja melaluicpuid
modul kernel Linux.Perhatikan bahwa pada CPU konsumen umum L1 dan L2 cache adalah per core, sedangkan L3 cache dibagi oleh semua core.
sumber
jika Anda hanya menginginkan L3 maka
grep "cache size" < /proc/cpuinfo
itu sudah cukup.Namun karena cara L3 cache dibagi di antara cpu archs berbeda, nilainya mungkin perlu normalisasi
sumber