문제

OS (Windows, Linux)가 하이퍼 스레딩 활성화 환경에서 논리 CPU에 숫자를 할당하는 방법을 알아 내려고합니다. ?

OSS는 먼저 물리적 CPU에 숫자를 일련의 할당 한 다음 논리적 CPU를 번호로 시작하거나 다른 규칙이 따랐습니까? 예를 들어 하이퍼 스레딩이있는 2 개의 물리적 CPU 시스템에서 OS는 0,2를 첫 번째 물리적 CPU에, 그런 다음 1,3에서 두 번째 물리 CPU에 할당합니까?

모든 참고 문헌은 정말 감사하겠습니다.

미리 감사드립니다.

안부, -jay.

편집 : Alan의 질문에 응답 : 컨텍스트 스위치를 피하기 위해 특정 CPU에 다양한 스레드를 바인딩해야하며 특정 작업 (스레드)이 바인딩되어 있는지 확인하고 싶습니다. 분리된 물리적 CPU. 감사

도움이 되었습니까?

해결책

내가 아는 바에 따르면 CPU가 어떻게 코어를 노출시키는 지에 달려 있습니다. HT가 활성화되면 노출 된 물리적 CPU가 없지만 물리적 CPU 당 2 개의 논리적 CPU가 있으므로 논리적 CPU에서 스레드를 실행하면 차이가 없습니다. 중요한 것은 논리적 CPU의 쌍이 각 물리적 CPU에 속하는 것입니다.

단일 코어 프로세서 (HT가 포함 된 펜티엄 4와 같은)의 경우 한 쌍만 가지고 있기 때문에 매우 간단합니다. (0, 1). 쿼드 코어 프로세서 (Nehalem과 같은)의 경우 논리 코어 쌍은 (0,4), (1,5), (2,6) 및 (3,7)입니다. 각 쌍의 첫 번째 반쪽을 모두 갖는 패턴은 두 번째 반쪽이 더 많은 코어를 갖는 미래의 CPU와 스케일 스케일을 갖습니다.

실제 질문은 왜 쌍 계약을 알아야합니까? OS의 스케줄러가 올바른 스레드에 대한 올바른 코어를 선택하게하십시오.

다른 팁

당신은 볼 수 있습니다 /sys/devices/system/cpu/ CPU에 대한 정보를 찾으려면 코어의 레이아웃과 하이퍼 스레드 쌍은 /sys/devices/system/cpu/cpuN/topology/thread_siblings_list.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top