우리 회사는 방금 이전 2GB Windows XP 시스템을 대체 할 새 컴퓨터를 구입했습니다. 우리 팀의 누군가가 하이퍼 스레딩을 사용하지 않도록 설정하고 모든 사람에게 재부팅하고 전원을 켜라고 지시했습니다. 하이퍼 스레딩이 비활성화 된 컴퓨터에서 프로그래밍하면 이점이 있습니까?
우리 회사는 방금 이전 2GB Windows XP 시스템을 대체 할 새 컴퓨터를 구입했습니다. 우리 팀의 누군가가 하이퍼 스레딩을 사용하지 않도록 설정하고 모든 사람에게 재부팅하고 전원을 켜라고 지시했습니다. 하이퍼 스레딩이 비활성화 된 컴퓨터에서 프로그래밍하면 이점이 있습니까?
답변:
예, HT가 비활성화 된 컴퓨터에서 실행할 때 더 잘 수행되는 앱을 작업했습니다 .
원래의 코드는 하이퍼 스레드 머신에서 실행될 때 스레드보다 두 배나 많은 스레드를 생성했습니다 (HT의 전체 요점이라고 가정). 그러나 해당 스레드의 처리량은 스레드에 사용 가능한 캐시 양에 매우 민감했습니다. 고정 된 양의 캐시를 놓고 싸우는 두 배의 스레드로 인해 스레드 당 사용 가능한 캐시가 너무 낮아 스 래싱이 발생했습니다. 더 많은 캐시 미스가로드되고 더 많은 주 메모리 액세스가로드되며 성능이 크게 향상되었습니다. 더 적은 스레드와 스레드 당 더 많은 캐시 (HT가 비활성화 된 머신에서 앱을 실행 한 경우 얻는 것).
궁극적 인 해결책은 앱이 HW 플랫폼을 더 잘 확인하고 생성 할 스레드 수를 결정할 때 캐시 크기와 스레드 당 필요한 것으로 간주되는 캐시 크기를 고려하도록하는 것입니다. 어쨌든 캐시 크기를 두 배로 늘린 후속 CPU 세대에서 문제가 빠르게 사라졌습니다 (실제로 HT의 적당한 이점을보기 시작했습니다). 그러나 전체 에피소드는 SW가 실행되는 모든 플랫폼 에서 항상 HT를 권장하는 오래 지속되는 유산을 남겼 으며 성능 문제에 대한 응답으로 " HT를 사용하도록 설정 한 시스템이 없습니까? " (근본적인 문제는 대부분의 괴짜가 아닌 사람들이 단순히 HT가 실제로 무엇인지 이해하지 못한다고 생각합니다.)
기술적 세부 사항을 모르지만 분명히 앱 (또는 OS)이 하이퍼 스레딩에 최적화되어 있지 않으면 하이퍼 스레딩이 실제로 성능을 저하시킬 수 있습니다 .
이 경우 인텔에서도이 기능을 끄는 것이 좋습니다.
다음과 같은 데스크탑 운영 체제는 하이퍼 스레딩 기술과 함께 사용하지 않는 것이 좋습니다. 다음 데스크탑 운영 체제 중 하나를 사용하는 경우 시스템 BIOS 설정 프로그램에서 하이퍼 스레딩 기술을 비활성화해야합니다. [...]
(출처 : http://www.intel.com/support/processors/sb/CS-017343.htm )
따라서 제조업체 (또는 공급 업체)가주의하기를 원했을 수 있습니다.
아마도 OEM은 보수적이었습니다. OEM은 종종 HT, No-Execute 비트, vt 등과 같은 고급 기능이 비활성화 된 상태로 제공됩니다. 그 이유는 일부 드문 상황으로 인해 설정이 실패 할 수 있고 실제로 기능을 원하는 사람들이 쉽게 기능을 켤 수 있기 때문입니다.
또한 일부 기능이 활성화 된 경우 OS의 일부 버그로 인해 잠재적 인 보안 문제가 발생할 수 있습니다. 예를 들어 가상화 기술에는 한 번 그러한 문제가있었습니다. 따라서 보수적 인 공급 업체 일뿐입니다.
하이퍼 스레딩은 일반적으로 프로그래밍 머신과 같은 대화식 데스크탑에 유용합니다. 그러나 일부 사람들은 HT가없는 서버에서 앱을 실행하려는 경우 앱을 사용 중지하려고 할 수 있습니다. 잠재적 인 하드웨어 차이를 줄입니다.
대규모 멀티 스레드 코드에서 캐시 일관성 문제 일 수 있습니까? 개별 CPU 캐시가있는 경우 이론적으로 두 스레드가 동일한 데이터를 캐시하고 다른 값으로 동시에 수정할 수 있습니다. CPU와 주 메모리 (L2 또는 L3) 사이의 어느 시점에 통합 캐시가있는 경우이를 방지 할 수있는 메커니즘이있을 수 있지만 캐시가 작은 로우 엔드 CPU에서는 그렇지 않을 수 있습니다.
또는 지원하지 않는 칩에서 하이퍼 스레딩을 활성화하면 POST 중에 코드가 발생하므로 BIOS 공급 업체는 시스템에 어떤 종류의 CPU가 있는지 알지 못하므로 그대로 둡니다.