Linux 시스템의 코어 수를 어떻게 알 수 있나요?

Linux 시스템의 코어 수를 어떻게 알 수 있나요?

내 시스템에 몇 개의 코어가 있는지 알고 싶어서 Google에서 같은 질문을 검색했습니다. 명령 과 같은 명령을 받았습니다 lscpu. 이 명령을 시도하면 다음과 같은 결과가 나타납니다.

$ 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:    1
Core(s) per socket:    4
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 23
Stepping:              10
CPU MHz:               1998.000
BogoMIPS:              5302.48
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              2048K
NUMA node0 CPU(s):     0-3

특히 이 출력은 다음을 보여줍니다.

  • CPU: 4
  • 소켓당 코어 수: 4
  • CPU 시리즈: 6

다음 중 Linux 시스템의 핵심을 나타내는 것은 무엇입니까?

코어 수를 알 수 있는 다른 명령이 있습니까, 아니면 완전히 잘못되었다고 가정합니까?

답변1

전체 그림을 얻으려면 수량을 살펴봐야 합니다.각 코어,핵심각 콘센트와소켓. 이 숫자들을 곱하면,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

출력은 nprocCPU 개수에 해당합니다 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일치합니다 . 위 데스크톱의 경우 lscpu에서 보고한 소켓당 코어 4개와 일치해야 합니다.Core(s) per socketlscpu

$ 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라는 용어는 상황에 따라 다른 의미를 가지므로 주의해야 합니다.

답변2

소켓 수와 소켓당 코어 수를 확인해야 합니다. 이 경우 4개의 코어(소켓당 여러 코어)가 있는 1개의 물리적 CPU(소켓)가 있습니다.

답변3

이 정보는 다음을 통해 얻을 수 있습니다.nproc(1)주문하다

$ nproc --all
12

루트 권한이 필요하지 않습니다.

답변4

또한 이 명령을 사용하여 cat /proc/cpuinfo각 코어에 대한 데이터 블록을 출력할 수도 있습니다. 각 블록은 다음 정보로 시작됩니다.

processor   : 3
vendor_id   : GenuineIntel
cpu family  : 6
model       : 60
model name  : Intel(R) Core(TM) i5-4210M CPU @ 2.60GHz
(...)

코어 번호는 0부터 시작하므로 마지막 블록이 processor : 3이 예와 같으면 컴퓨터에 코어가 4개 있는 것입니다.

관련 정보