두 번째 가상 코어가 처음 그렇지 않으면 붙어 될 때 기여할 수 있으면, 그것은보다 나은입니다 하지 당신은 약간의 추가 작업이 완료 (적어도) 얻을 수 있도록.
문제는 다음과 같습니다. 두 개의 서로 다른 스레드가있는 경우 하나가 더 악화되는 이유는 무엇입니까? 명령어 간의 분기 예측 및 종속성은 변경되지 않습니다. 메모리 액세스 대기 중 ... 두 스레드는 캐시 사용률과 대역폭 모두에서 메모리 액세스와 경쟁합니다.
일부 CPU가 HT로 실행되고 다른 CPU는 그렇지 않은 경우 특정 스레드를 한 유형 또는 다른 유형으로 할당한다는 의미입니까? 나는 생각하지 않습니다 : 귀하의 프로그램은 임의의 가상 코어에서 스레드를 실행합니다. 그렇다면 구성을 나누는 것이 어떻게 도움이됩니까? 각 CPU에는 고유 한 캐시가 있으므로 메모리 대역폭과 캐시 일관성 부담 만 영향을 미칩니다.
일반적으로 일부 CPU 실행 장치를 유휴 상태 로 두는 것보다 더 많은 일을하는 것이 더 비싸다는 점에 도달합니다 . 이것은 스레드 수에 직접 의존하지 않고 스레드가 수행하는 작업 과 다양한 구성 요소의 자세한 메모리 아키텍처 및 성능 미묘한 차이에 달려 있습니다.
간단한 대답은 없습니다. 특정 프로그램을 염두에 두더라도 기계는 자신의 경험과 관련된 사람들의 기계와 다를 수 있습니다.
정확한 기계에서 특정 작업을 수행하여 직접 시도하고 가장 빠른 것을 측정 해야합니다. 심지어 소프트웨어 업데이트와 시간이 지남에 따라 사용량이 변함에 따라 변경 될 수 있습니다.
분노의 매그넘 opus 3 권을 보십시오 . 특정 프로세서를주의 깊게 살펴보면 코드를 실행하는 데 필요한 여러 단계의 심층 파이프 라인에서 제한적인 리소스를 찾을 수 있습니다. 과업으로 인해 더 많은 일을하지 않는 것과 달리과 집합이 느리게 실행되는 경우를 찾아야합니다. 일반적으로 이는 일종의 캐싱을 의미합니다. 리소스가 스레드간에 공유되는 위치
CPU 측정기의 의미 : 유휴 스레드를 실행하는 데 소비하지 않은 모든 시간을보고합니다. 코어 중 하나에 수행 된 실제 작업이 작더라도 코어에 할당 된 두 논리 스레드는 유휴 상태가 아닙니다. 결과가 준비 될 때까지, 메모리가 페치되고, 원자 연산이 차단되는 등 파이프 라인이 몇 사이클 동안 멈추는 데 걸리는 시간도 마찬가지로 스레드가 "준비되지 않은"것으로 선반에 놓이지 않아 유휴 상태가되지 않습니다. 시간은 여전히 사용 중으로 표시됩니다. RAM 대기는 유휴 상태로 표시되지 않습니다. I / O와 같은 것만이 스레드 블록을 만들고 충전 시간을 멈 춥니 다. 일반적으로 운영 체제 뮤텍스 그렇게 할 것입니다, 하지만 은 "스핀"로 더 이상 확실한 일이 멀티 코어 시스템의 상승과 함께 할 수 없습니다 선반에 스레드 가서 다시 확인합니다.
따라서 CPU 미터가 100 %라고해서 CPU가 종종 메모리 대기 중으로 멈춰 있으면 모든 것이 순조롭게 진행되는 것은 아닙니다. 90 %를 표시하는 더 적은 수의 논리 코어 는 숫자 처리를 마치고 디스크에서 대기 중이므로 더 많은 작업을 수행 할 수 있습니다.
따라서 CPU 미터에 대해 걱정하지 마십시오. 실제 진행 봐, 제작 에만 .