프로그래머가 하이퍼 스레딩을 해제하려는 이유는 무엇입니까?


13

우리 회사는 방금 이전 2GB Windows XP 시스템을 대체 할 새 컴퓨터를 구입했습니다. 우리 팀의 누군가가 하이퍼 스레딩을 사용하지 않도록 설정하고 모든 사람에게 재부팅하고 전원을 켜라고 지시했습니다. 하이퍼 스레딩이 비활성화 된 컴퓨터에서 프로그래밍하면 이점이 있습니까?


1
Core i5 또는 i7과 같은 Intel CPU 모델을 사용하고 있습니까?
JB King

@ JBK 좋은 질문입니다. 모르는 기계가 하나도 없습니다.
Pops

오래된 펜티엄 4 노트북에서는 열과 팬 소음을 줄이고 배터리를 몇 분 더 오래 사용할 수 있습니다. 아니 대답이 때문에 해야합니다 고대의 역사 일 수 있으며, 귀하의 경우에는 적용되지해야합니다.
Steve314

Lucasarts 게임 Grim Fandango에서 사운드 엔진은 하이퍼 스레딩으로 실행할 때 경쟁 조건에 부딪 쳤습니다.

답변:


14

예, HT가 비활성화 된 컴퓨터에서 실행할 때 더 잘 수행되는 앱을 작업했습니다 .

원래의 코드는 하이퍼 스레드 머신에서 실행될 때 스레드보다 두 배나 많은 스레드를 생성했습니다 (HT의 전체 요점이라고 가정). 그러나 해당 스레드의 처리량은 스레드에 사용 가능한 캐시 양에 매우 민감했습니다. 고정 된 양의 캐시를 놓고 싸우는 두 배의 스레드로 인해 스레드 당 사용 가능한 캐시가 너무 낮아 스 래싱이 발생했습니다. 더 많은 캐시 미스가로드되고 더 많은 주 메모리 액세스가로드되며 성능이 크게 향상되었습니다. 더 적은 스레드와 스레드 당 더 많은 캐시 (HT가 비활성화 된 머신에서 앱을 실행 한 경우 얻는 것).

궁극적 인 해결책은 앱이 HW 플랫폼을 더 잘 확인하고 생성 할 스레드 수를 결정할 때 캐시 크기와 스레드 당 필요한 것으로 간주되는 캐시 크기를 고려하도록하는 것입니다. 어쨌든 캐시 크기를 두 배로 늘린 후속 CPU 세대에서 문제가 빠르게 사라졌습니다 (실제로 HT의 적당한 이점을보기 시작했습니다). 그러나 전체 에피소드는 SW가 실행되는 모든 플랫폼 에서 항상 HT를 권장하는 오래 지속되는 유산을 남겼 으며 성능 문제에 대한 응답으로 " HT를 사용하도록 설정 한 시스템이 없습니까? " (근본적인 문제는 대부분의 괴짜가 아닌 사람들이 단순히 HT가 실제로 무엇인지 이해하지 못한다고 생각합니다.)


11

기술적 세부 사항을 모르지만 분명히 앱 (또는 OS)이 하이퍼 스레딩에 최적화되어 있지 않으면 하이퍼 스레딩이 실제로 성능을 저하시킬 수 있습니다 .

이 경우 인텔에서도이 기능을 끄는 것이 좋습니다.

다음과 같은 데스크탑 운영 체제는 하이퍼 스레딩 기술과 함께 사용하지 않는 것이 좋습니다. 다음 데스크탑 운영 체제 중 하나를 사용하는 경우 시스템 BIOS 설정 프로그램에서 하이퍼 스레딩 기술을 비활성화해야합니다. [...]

(출처 : http://www.intel.com/support/processors/sb/CS-017343.htm )

따라서 제조업체 (또는 공급 업체)가주의하기를 원했을 수 있습니다.


하이퍼 스레딩이 비활성화 될 때보 다 일부 게임이 느리게 실행되는 것으로 알려져 있습니다.
Klaim

4
그들이 직장에서하는 게임의 성능에 관심이 있다면 흥미로울 것입니다.
dietbuddha

다중 코어 시스템에서 두 개의 스레드가 동일한 코어의 두 개의 하이퍼 스레드에 할당되어 다른 모든 코어가 유휴 상태가되고 각 스레드를 다른 코어에 배치하는 것보다 성능이 훨씬 떨어집니다. 운영 체제가 동일한 코어에서 다른 코어와 다른 하이퍼 스레드의 차이점을 인식 할 때까지 ...
Steve314

1
@ Steve314 : 확실히 Windows2000의 경우였으며 (HT를 사용하지 않는 경우 확실히 사용하는 것이 좋습니다) Windows XP는 HT를 인식해야합니다 (예 : download.microsoft.com/download/5/7/ 7 /… )와 같은 함정에 빠지지 마십시오. 커널의 일부 버전에서 비슷한 논리가 Linux에 내장되어 있다고 가정합니다.
timday

6

아마도 OEM은 보수적이었습니다. OEM은 종종 HT, No-Execute 비트, vt 등과 같은 고급 기능이 비활성화 된 상태로 제공됩니다. 그 이유는 일부 드문 상황으로 인해 설정이 실패 할 수 있고 실제로 기능을 원하는 사람들이 쉽게 기능을 켤 수 있기 때문입니다.

또한 일부 기능이 활성화 된 경우 OS의 일부 버그로 인해 잠재적 인 보안 문제가 발생할 수 있습니다. 예를 들어 가상화 기술에는 한 번 그러한 문제가있었습니다. 따라서 보수적 인 공급 업체 일뿐입니다.

하이퍼 스레딩은 일반적으로 프로그래밍 머신과 같은 대화식 데스크탑에 유용합니다. 그러나 일부 사람들은 HT가없는 서버에서 앱을 실행하려는 경우 앱을 사용 중지하려고 할 수 있습니다. 잠재적 인 하드웨어 차이를 줄입니다.


2
HT를 끈 상태로 제공되는 기계의 경우는 거의 항상 그렇습니다. 많은 지원 요청으로 인한 최대 호환성 및 벤더 절약.
Patrick Hughes

5

하이퍼 스레딩은 CPU에 새로운 코어를 추가하지 않습니다. 여전히 코어 당 하나의 산술 / 논리 단위, 하나의 부동 소수점 단위 (...)가 있습니다. 따라서 매우 다른 작업을 수행하는 여러 스레드 / 프로세스가있는 경우 HTT가 성능을 향상시킬 수 있습니다. 그러나 여러 스레드에서 동일한 작업을 수행하는 경우 (번호 크 런칭 응용 프로그램에서는 흔하지 않음) 실제로 HTT로 인해 성능이 크게 저하 될 수 있습니다.


2

대규모 멀티 스레드 코드에서 캐시 일관성 문제 일 수 있습니까? 개별 CPU 캐시가있는 경우 이론적으로 두 스레드가 동일한 데이터를 캐시하고 다른 값으로 동시에 수정할 수 있습니다. CPU와 주 메모리 (L2 또는 L3) 사이의 어느 시점에 통합 캐시가있는 경우이를 방지 할 수있는 메커니즘이있을 수 있지만 캐시가 작은 로우 엔드 CPU에서는 그렇지 않을 수 있습니다.

또는 지원하지 않는 칩에서 하이퍼 스레딩을 활성화하면 POST 중에 코드가 발생하므로 BIOS 공급 업체는 시스템에 어떤 종류의 CPU가 있는지 알지 못하므로 그대로 둡니다.


내 추측-이 일관성 문제를 해결할 수있는 메커니즘이 있지만 성능이 크게 저하 될 수 있습니다. IIRC, 특정 메모리 페이지는 캐시 페이지에만 자유롭게로드 할 수 없습니다. 일반적으로이 주소 맵은이 페이지들 중 몇 페이지에 해당하는 메커니즘입니다. 두 개의 스레드가 몇 개의 캐시 페이지를 놓고 싸울 수 있으며 나머지는 사용하지 않을 수 있습니까? (아마도 위험이 적은 멀티 코어 일 수도 있음).
Steve314

0

개발자 시스템에서 하이퍼 스레딩을 해제 하지 않는 한 가지 이유 는 미묘한 멀티 스레딩 버그를 숨길 수 있기 때문입니다. 그러나 이것은 실제로 단일 코어 단일 프로세서 시스템에만 적용됩니다. 멀티 코어는 테스트 중에 더 많은 멀티 스레딩 버그를 노출시킵니다.

OTOH, 기본적으로 하이퍼 스레딩이 비활성화 된 단일 코어 프로세서가 표시 될 것입니다. 내 투표는 Sleskes 답변에 있습니다.


0

많은 오래된 소프트웨어가 단일 코어 머신으로 작성되었으며 멀티 코어 머신에서 실행할 때 버그가있을 수 있습니다. 아마도이 명령은 "멀티 코어 머신에서는 작동하지 않습니다"라는 말을 의미했을 것입니다. 오랫동안 하이퍼 스레딩이 일반적으로 사용되는 유일한 멀티 코어 머신이라는 것입니다.

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