단일 스레드 애플리케이션의 성능이 우려되는 경우 하이퍼스레딩을 비활성화해야 합니까?

단일 스레드 애플리케이션의 성능이 우려되는 경우 하이퍼스레딩을 비활성화해야 합니까?

저는 노트북에서 기본적으로 하이퍼스레딩을 수행하도록 설정된 i5-2410M 프로세서를 사용합니다. 2코어 프로세서라는 점을 고려하면 한 번에 4개의 스레드를 실행할 수 있다는 의미입니다. 이는 또한 단일 스레드 응용 프로그램이 처리 능력의 최대 25%만 사용한다는 의미이며, 최대 50%를 사용하는 것이 좋습니다. 하이퍼스레딩을 비활성화하면 부정적인 영향이 있습니까(개발 시스템이고 데스크톱을 실행 중입니까)? 나 아직 공부 중이야?top적절하게?

답변1

단일 스레드 응용 프로그램용 하이퍼스레딩을 사용하면 두 개를 실행하면 속도가 향상됩니다. 하이퍼스레딩은 첫 번째 스레드가 수행 중인 작업을 완료하기 전에 CPU가 두 번째 스레드(멀티 스레드 응용 프로그램의 두 스레드이든 두 개의 단일 스레드 응용 프로그램이든) 처리를 시작한다는 의미입니다. 이를 효과적으로 비활성화하면 CPU 용량이 절반으로 줄었음을 의미합니다(실제로는 아니지만 HT는 약 30% 증가하지만 top이 말하는 내용에 대해 이야기하고 있습니다). 따라서 스레드가 이제 top25%가 아닌 50%로 표시됩니다.

추가 설명:

그러나 이것이 오늘날 대부분의 응용 프로그램이 하이퍼스레딩의 이점을 누리지 못한다는 의미는 아닙니다. 단일 스레드 애플리케이션이라도 여러 애플리케이션이 동시에 실행되는 한(즉, 멀티태스킹) 하이퍼스레딩을 통해 성능상의 이점을 얻을 수 있습니다. 한 응용 프로그램이 해당 스트림(스레드)을 하나의 논리 프로세서로 보내면 두 번째 응용 프로그램은 동시에 해당 스트림을 두 번째 논리 프로세서로 보냅니다. 그러나 단일 스레드 응용 프로그램만 실행하는 경우 하이퍼스레딩은 성능 향상을 제공하지 않습니다. 실제로 하이퍼스레딩을 위한 두 개의 논리 프로세서 관리와 관련된 오버헤드로 인해 단일 스레드 응용 프로그램만 실행할 때 약간의 성능 저하가 발생할 수도 있습니다.

부팅된 UNIX 시스템의 경우 최소한 커널, init 및 셸을 실행합니다. 당신은 항상 멀티태스킹을 하고 있습니다. 모든 실질적인 측면에서 HT는 항상 귀하에게 도움이 될 것입니다.

관련 정보