명령 줄을 통해 CPU 캐시의 크기를 보시겠습니까?


8

명령 줄을 사용하여 CPU 캐시의 크기를 보려면 어떻게합니까?

L1, L2 및 L3 캐시에 대한 정보를보고 싶습니다.

또한 캐시에 대한 정보 출력하여 다른 모든 정보를 필터링 할 수 있습니까?

답변:


11

lscpu 찾고있는 정보를 제공합니다.

lscpu | grep "cache"캐시 정보 만 필터링합니다. 결과는 다음과 같습니다.

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

3

sysfs

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

제공합니다 :

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

제공합니다 :

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 코드에서도 사용할 수 있습니다.

우분투 16.04에서 테스트되었습니다.

x86 CPUID 명령어

CPUID x86 명령어는 캐시 정보도 제공하며 사용자 사이트 ( https://en.wikipedia.org/wiki/CPUID)에서 직접 액세스 할 수 있습니다.

glibc는 x86에이 방법을 사용하는 것 같습니다. 나는 단계 디버깅 / 명령 추적으로 확인하지 않았지만 2.28의 소스 sysdeps/x86/cacheinfo.c는 다음을 수행합니다.

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

최소한의 C 예제를 생성 할 일, 게으른 지금에 질문 : /programming/14283171/how-to-receive-l1-l2-l3-cache-size-using-cpuid-instruction-in-x86

ARM에는 캐시 크기 ID 레지스터 (CCSIDR)와 같은 레지스터를 통해 캐시 크기를 찾는 아키텍처 정의 메커니즘도 있습니다 . 개요 는 ARMv8 프로그래머 설명서 11.6 "캐시 발견"을 참조하십시오 .


-1

명령 아래에서 모든 기존 캐시 관련 폴더의 크기를 나열하십시오.

 for i in $(find /  -iname '*cache*'); do du -sh $i ; done 2> /dev/null | grep 'G\|M\|K\|B'| nl
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.