Windows 운영체제에서 실행되는 Thread 를 특정 프로세서에서 실행할 수 있도록 Affinity mask 를 설정해 줄 수 있습니다. 예를 들어 2개의 CPU 를 사용할 수 있는 환경에서 내가 원하는 프로그램 이미지를 2개의 CPU 중 하나를 선택하여 수행할 수 있다는 의미입니다. 간단한 예제를 아래와 같이 정리하였습니다.


[환경]
Windows 7
2개의 Processor


[시나리오]
1. NOTEPAD.EXE 를 실행한 후 대용량 문서 파일을 읽어 들여 CPU 사용률을 증가시켜 사용되는 CPU 를 확인합니다.
2. Affinity mask 를 적용하여 NOTEPAD.EXE 를 2번째 프로세서에서만 실행하도록 강제 설정합니다. 그리고 대용량 문서 파일을 읽어 들여 CPU 사용률을 확인해 봅니다.


[절차]
일반적으로 NOTEPAD.EXE 실행 후 대용량 문서를 읽었을 때는 아래와 같이 가용한 2개의 프로세서의 제한 없이 스케줄링하여 CPU 를 사용하게 됩니다.




이번에는 2개의 CPU 중 2번째 프로세서(CPU0, CPU1 에서 CPU1)만 사용하도록 다음과 같이 NOTEPAD를 실행할 수 있습니다. 프로그램을 새로운 창으로 실행할 수 있는 Start 명령의 /affinity 파라미터를 사용할 수 있습니다.

C:\> start /affinity 2 notepad.exe


실행된 notepad 에 대용량 문서를 읽게 되면 아래와 같이 2번째 프로세서만 사용하게 되는 것을 확인할 수 있습니다.




Affinity 설정은 작업 관라자(Task Manager)를 통해서도 설정, 확인이 가능합니다.

Task Manager - Processes 탭 - 특정 프로세스 선택 - Set Affinity





위에서 Start /Affinity 2 notepad.exe 명령으로 실행한 Notepad.exe 프로세스의 Affinity 설정을 보면 두번째 CPU (CPU1)만 선택되어 있음을 확인할 수 있습니다.




[참고자료]
Start
http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/start.mspx?mfr=true


작성자 : Lai Go / 작성일자 : 2010.05.29
Posted by Lai Go