완전한 그림을 얻으려면 코어 당 스레드 수, 소켓 당 코어 수 및 소켓을 확인해야 합니다. 이 숫자를 곱하면 시스템 의 CPU 수를 얻게 됩니다.
CPU = 소켓 X 소켓 당 코어 X 코어 당 스레드 수
CPU는 실행할 때 표시되는 것입니다 htop
(실제 CPU와 같지 않음).
다음은 데스크톱 컴퓨터의 예입니다.
$ lscpu | grep -E '^Thread|^Core|^Socket|^CPU\('
CPU(s): 8
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
그리고 서버 :
$ lscpu | grep -E '^Thread|^Core|^Socket|^CPU\('
CPU(s): 32
Thread(s) per core: 2
Core(s) per socket: 8
Socket(s): 2
의 출력은 nproc
의 CPU 수 에 해당합니다 lscpu
. 위의 데스크탑 시스템의 경우 다음에 의해보고 된 8 개의 CPU와 일치해야합니다 lscpu
.
$ nproc --all
8
의 결과는 /proc/cpuinfo
이 정보와 일치해야합니다. 예를 들어 위의 데스크탑 시스템에서 8 개의 프로세서 (CPU)와 4 개의 코어 (코어 ID 0-3)가 있습니다.
$ grep -E 'processor|core id' /proc/cpuinfo
processor : 0
core id : 0
processor : 1
core id : 0
processor : 2
core id : 1
processor : 3
core id : 1
processor : 4
core id : 2
processor : 5
core id : 2
processor : 6
core id : 3
processor : 7
core id : 3
님이 cpu cores
보고 한 사람 /proc/cpuinfo
은 님이 Core(s) per socket
보고 한 사람과 같습니다 lscpu
. 위의 데스크탑 시스템의 경우 lscpu에서보고 한 소켓 당 4 개의 코어와 일치해야합니다.
$ grep -m 1 'cpu cores' /proc/cpuinfo
cpu cores : 4
구체적으로 질문에 대답하기 위해 소켓 당 보유한 코어 수에 보유한 소켓 수를 곱하여 보유한 코어 수를 알 수 있습니다.
코어 = 소켓 당 코어 X 소켓
데스크탑 위의 시스템 예에는 4 개의 코어가 있습니다.
$ echo "Cores = $(( $(lscpu | awk '/^Socket\(s\)/{ print $2 }') * $(lscpu | awk '/^Core\(s\) per socket/{ print $4 }') ))"
Cores = 4
서버가 16 : 동안
$ echo "Cores = $(( $(lscpu | awk '/^Socket\(s\)/{ print $2 }') * $(lscpu | awk '/^Core\(s\) per socket/{ print $4 }') ))"
Cores = 16
또 다른 유용한 유틸리티는 dmidecode
소켓 정보를 출력하는 것입니다. 위에 나열된 서버 시스템의 경우 소켓 당 8 개의 코어와 소켓 당 16 개의 스레드가 표시됩니다.
$ sudo dmidecode -t 4 | grep -E 'Socket Designation|Count'
Socket Designation: CPU1
Core Count: 8
Thread Count: 16
Socket Designation: CPU2
Core Count: 8
Thread Count: 16
이 lscpu
명령에는 다음과 같은 유용한 옵션이 있습니다.
$ lscpu --all --extended
$ lscpu --all --parse=CPU,SOCKET,CORE | grep -v '^#'
자세한 내용 man lscpu
을 참조하십시오.
요약하자면:
- 소켓, 코어 및 스레드를 알고 있어야합니다.
- 상황에 따라 다른 의미를 갖는 CPU라는 용어를주의해야합니다.