Có cách nào để biết kích thước của bộ đệm L1, L2, L3 và RAM trong ubfox không?


Câu trả lời:


12

Thông tin CPU

Sử dụng lệnh 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

Thông tin được liệt kê là trên mỗi lõi CPU.

Thông tin bộ nhớ

Có lệnh miễn phí (-h cho kết quả ở dạng người có thể đọc được, tức là GiB chứ không phải 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

Điều này sẽ cung cấp cho bạn thông tin bộ nhớ cache của bạn. Ổ cắm chỉ định sẽ cho bạn biết bộ đệm nào đang được đề cập trong phần này.

sudo dmidecode -t cache

Đối với RAM có một vài điều cần xem xét nhưng meminfo nên làm điều đó. Tôi đã sử dụng grep ở đây để chỉ hiển thị toàn bộ / miễn phí nhưng bạn có thể sử dụng ít hơn hoặc con mèo để xem toàn bộ. Nó cho thấy nhiều thông tin hơn về kích thước bộ nhớ và cách sử dụng thay vì chỉ kích thước.

grep Mem /proc/meminfo

1

Dựa trên câu trả lời của jkabram với lệnh sau và lọc "bộ đệm" từ nó, mỗi mục bộ đệm bạn đã được hiển thị.

lscpu | grep cache

và RAM:

free -h

Để biết thêm thông tin về RAM, các quy trình, v.v. bạn có thể sử dụng htop trên bản phân phối của mình. Cài đặt nó như thế này trên Ubuntu.

sudo apt-get install htop

0

hệ thống

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

Cung cấp:

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

cho:

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

Hoặc cho một cấp độ duy nhất:

getconf LEVEL2_CACHE_SIZE

Điều thú vị về giao diện này là nó chỉ là một trình bao bọc xung quanh sysconfchức năng POSIX C (đối số bộ đệm là các phần mở rộng không phải POSIX), và do đó nó cũng có thể được sử dụng từ mã C.

Đã thử nghiệm trong Ubuntu 16.04.

Hướng dẫn CPUID x86

Hướng dẫn CPUID x86 cũng cung cấp thông tin về bộ đệm và có thể được truy cập trực tiếp bởi userland: https://en.wikipedia.org/wiki/CPUID

glibc dường như sử dụng phương pháp đó cho x86. Tôi chưa xác nhận bằng cách gỡ lỗi / theo dõi hướng dẫn, nhưng nguồn cho 2.28 sysdeps/x86/cacheinfo.cthực hiện điều đó:

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

TODO tạo một ví dụ C tối thiểu, lười biếng ngay bây giờ, được hỏi tại: /programming/14283171/how-to-receive-l1-l2-l3-cache-size-USE-cpuid-in cản-in-x86

ARM cũng có một cơ chế được xác định theo kiến ​​trúc để tìm kích thước bộ đệm thông qua các thanh ghi, chẳng hạn như Thanh ghi ID kích thước bộ đệm (CCSIDR), xem Hướng dẫn 11.6 "Khám phá bộ đệm " của lập trình viên ARMv8 để biết tổng quan.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.