2013-08-14 3 views
1

다중 스레드 실행 파일이 스레드 당 ProcessorAffinity를 설정하는 이유에 대한 좋은 설명을 찾을 수 없었습니다. 나에게 이것은 CLR/운영체제를 오버라이드하려고하는 것처럼 보인다. 나는 내가 충분히 똑똑하다고 생각하지 않는다.스레드에 대해 ProcessorAffinity를 설정해야하는 이유는 무엇입니까?

왜 멀티 코어 시스템의 스레드에 대해 ProcessorAffinity를 설정하고 싶습니까?

+2

프로세서 캐싱 – Paparazzi

+1

CPU 당 라이센스. – Steve

+1

ProcessorAffinity 설정이 전반적으로 효과가 있다는 것을 나타내는 숫자를 본 사람이 있습니까? –

답변

2

스레드가 설정되지 않은 선호도로 실행되도록 지시하면 모든 코어에서 실행할 수 있습니다. 이것은 하나의 코어가 사용 중이면 스레드가 다른 코어로 이동한다는 것을 의미합니다.이 정지 및 가능한 이동은 Context Switch입니다. 대부분의 경우 게임 콘솔과 같은 경우 컨텍스트 스위치가 놀라 울 정도로 값 비싼 프로세스가 될 수 있습니다.

이러한 경우 오디오 루프와 비디오 루프 같은 것을 "개인"코어의 해당 코어에 고정되어있는 곳으로 이동하는 것이 더 좋을 수 있습니다. 따라서 전환되지 않으므로 가능한 최적화가 이루어집니다.

1

매우 특수한 유형의 응용 프로그램만이 수동 스레드 선호도를 사용하여 이익을 얻습니다. 주로 대부분 병렬 프로세스를 실행하는 응용 프로그램입니다. 바이러스 스캐너 나 Seti @ Home과 같은 무거운 응용 프로그램에서 사용되는 것으로 상상할 수 있습니다.

또 다른 이론적 인 이점은 여러 번 실행되는 작은 프로세스가있는 경우 프로세서가 캐시를 사용할 수 있다는 것입니다. 그러나 실제로, 차이점을 눈에 잘 띄게하려면 실제로 특정 유형의 애플리케이션이 필요합니다.

나는 그걸 신경 쓸 필요가 없었습니다. 일반적으로 운영 체제가 가장 잘 압니다.

0

프로세서 캐싱.

스로틀 링에 사용할 수 있습니다.
지배하고 싶지 않은 우선 순위가 낮은 프로세스가있을 수 있습니다.
4 프로세서 시스템에서는 하나의 프로세서로 제한 될 수 있습니다.
스레드 우선 순위로 스로틀을 수행 할 수도 있습니다.
프로세스가 캐싱의 이점을 얻는 경우에만 이것을 사용합니다.
작업 관리자에서 하나의 CPU를 망치는 것을 볼 수 있기 때문에 나는 그것을 좋아합니다.