코어와 스레드 :이 머신에서 몇 개의 스레드를 실행해야합니까?


41

이 머신에서 몇 개의 스레드를 실행해야합니까?

나는 lscpu96 코어가 있다고 말합니다. 그 물리적 핵심입니까? 이 머신에서 실행할 수있는 최대 및 최적 스레드는 무엇입니까?

https://stackoverflow.com/a/10670440/610569 는 코어 당 20 개 이상의 스레드를 실행할 수 있음을 보여줍니다. 괜찮아? 그게 최적입니까?

alvas@server:~$ lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                96
On-line CPU(s) list:   0-95
Thread(s) per core:    2
Core(s) per socket:    12
Socket(s):             4
NUMA node(s):          4
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 62
Model name:            Intel(R) Xeon(R) CPU E5-4657L v2 @ 2.40GHz
Stepping:              4
CPU MHz:               2700.000
CPU max MHz:           2900.0000
CPU min MHz:           1200.0000
BogoMIPS:              4801.91
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              30720K
NUMA node0 CPU(s):     0,4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92
NUMA node1 CPU(s):     1,5,9,13,17,21,25,29,33,37,41,45,49,53,57,61,65,69,73,77,81,85,89,93
NUMA node2 CPU(s):     2,6,10,14,18,22,26,30,34,38,42,46,50,54,58,62,66,70,74,78,82,86,90,94
NUMA node3 CPU(s):     3,7,11,15,19,23,27,31,35,39,43,47,51,55,59,63,67,71,75,79,83,87,91,95

코어 / 스레드에서 내 noobiness를 용서하십시오.

답변:


52

이것은 당신이 알고 싶은 것입니다

Thread(s) per core:    2
Core(s) per socket:    12
Socket(s):             4

4 개의 CPU 소켓이 있으며 각 CPU는 최대 12 개의 코어를 가질 수 있으며 각 코어는 2 개의 스레드를 가질 수 있습니다.

최대 스레드 수는 4 CPU x 12 코어 x 코어 당 2 스레드이므로 12 x 4 x 2는 96입니다. 따라서 최대 스레드 수는 96이고 최대 코어 수는 48입니다.

더 나은가?

그것은 당신이하고 싶은 것에 달려 있습니다, 더 많은 스레드는 더 적은 주파수를 의미합니다 (즉, 3ghz가 두 개로 나뉘어 짐).하지만 더 나은 멀티 태스킹 (더 많은 스레드)과 풀 코어 사용 (하이 스레딩 없음)은 높은 CPU 사용 작업에 좋습니다 ( 즉 게임).

이것이 도움이되기를 바랍니다.


3
"더 많은 스레드는 더 적은 빈도를 의미합니다",이 문장은 매우 잘못되었습니다. 하이퍼 스레딩에서도 단일 단일 프로세스가 프로세서를 완전히 사용할 수 있습니다. 하이퍼 스레딩은 다른 프로세스 / 스레드에서 병렬로 일부 실행을 수행하기 위해 유휴 상태 인 명령 파이프 라인 및 레지스터를 사용하여 특정 경우 프로세서의 최대 처리량을 증가시킬 수 있습니다. 성능 향상은 매우 응용 프로그램 / 구성입니다. P4 이후에는 HT가 활성화 된 문서화 된 성능 불이익이 없습니다 (P4 gen 코어는 일부 경우 문제가있었습니다)
NGRhodes

2
나는이 진술이 매우 잘못되었다고 생각하지 않는다. 단일 코어에서 두 개의 프로세스를 실행하면 각 프로세스를 자체 코어에서 실행하는 것과 비교할 때 각 프로세스에서 사용 가능한 빈도가 줄어 듭니다. 매우 기본적이고 간단한 설명이지만 OP는 하이퍼 스레딩 또는 작동 방식에 대한 세부 정보를 요청하지 않았습니다. 비록 당신이 정확하지만 하이퍼 스레딩은 먼 길을 왔으며 48 개의 코어로 나는 그것을 끄고 싶지 않을 것이라고 확신합니다.
Mark Kirby

2
@NGRhodes : Intel HT는 두 스레드간에 순서가 잘못된 실행을 겹칠 수 있도록 세분화되어 있습니다. 이것은 기본적으로 HT의 요점으로, 더 많은 명령 레벨 병렬 처리를 비 순차적 코어에 노출시킵니다. (즉, 하나의 스레드가 브랜치에서 잘못 복구되거나 캐시 미스를 기다리는 동안에도 실행 단위를 계속 공급합니다.) 프런트 엔드 문제 대역폭은 50/50으로 분할됩니다 (한 스레드가 정지 된 경우 제외). 코드 병목 현상이 발생하면 HT가 처리량을 거의 두 배로 늘리거나 추가 처리량을 거의 제공하지 않을 수 있습니다. (x264 비디오 인코딩의 경우 15 %와 유사 함)
Peter Cordes

1
마이크로 아키텍처에 대한 자세한 내용은 agner.org/optimize 를 참조 하십시오.
Peter Cordes

1

96 코어 중 하나 인 각 CPU 코어 스레드 (하드웨어 기반 스레드)는 대부분 이론적으로 16 스레드 (소프트웨어 기반 스레드 fe C ++ thread.h)를 효율적으로 처리 할 수 ​​있습니다.


1
"16 개의 스레드를 효율적으로 처리 할 수있는"위치는 어디입니까? : 출력은 "2 스레드 코어 당 (들)"라는
committedandroider

0

머신에서 프로세스 수를 리턴하는 htop 또는 ps 명령을 실행하여 머신에서 실행할 수있는 스레드 수를 찾을 수 있습니다.

'ps'명령에 대한 매뉴얼 페이지를 사용할 수 있습니다.

man ps

모든 사용자 프로세스 수를 계산하려면 다음 명령 중 하나를 사용할 수 있습니다.

  1. ps -aux| wc -l
  2. ps -eLf | wc -l

사용자 프로세스 수 계산 :

  1. ps --User root | wc -l

또한 "htop" [참고]를 사용할 수 있습니다 .

우분투 또는 데비안에 설치하기 :

sudo apt-get install htop

Redhat 또는 CentOS에 설치 :

yum install htop
dnf install htop      [On Fedora 22+ releases]

소스 코드에서 htop을 컴파일하려면 여기에서 찾을 수 있습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.