Xem kích thước của bộ đệm CPU thông qua dòng lệnh?


8

Làm cách nào để xem kích thước bộ đệm CPU của tôi bằng dòng lệnh?

Tôi muốn xem thông tin về bộ đệm L1, L2 và L3.

Ngoài ra, có thể chỉ cung cấp thông tin trên bộ đệm, để tất cả các thông tin khác được lọc ra không?

Câu trả lời:


11

lscpu sẽ cung cấp thông tin bạn đang tìm kiếm.

lscpu | grep "cache"để chỉ lọc ra thông tin bộ đệm. Điều này sẽ dẫn đến một cái gì đó như:

L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              3072K

3

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 đã không khẳng định bước gỡ lỗi / hướng dẫn truy tìm, nhưng nguồn cho 2.28 sysdeps/x86/cacheinfo.cnào đó:

__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.


-1

Loại tìm bên dưới lệnh để liệt kê kích thước của tất cả các thư mục liên quan đến bộ đệm hiện có.

 for i in $(find /  -iname '*cache*'); do du -sh $i ; done 2> /dev/null | grep 'G\|M\|K\|B'| nl
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.