In tip 0209, I describe how you can set the processor affinity on a running application.
In tip 2191, I described how bind devices to processors, to improve performance by more effectively using the processor's cache.
You can permanently set processor affinity for a non-operating system executable, on both Windows 2000 and Windows NT 4.0, by using the Imagecfg.exe tool from the \support\debug\i386 folder of a Windows NT 4.0 CD-ROM, or the Imagecfg.exe tool from the Windows 2000 Server Resource Kit Supplement One.
NOTE: Do NOT use imagecfg on any kernel operating system files.
To permanently set the processor affinity for your 32-bit executable, open a CMD prompt and type:
imagecfg -a 0xn <Drive:>\Path\yourprogram.exe
where 0xn is the affinity mask. The mask constrains your application to a specific CPU, from 0 - 31, where:
CPU MASK 0 0x1 1 0x2 2 0x4 3 0x8 4 0x10 5 0x20 6 0x40 7 0x80 8 0x100 etcTo set the affinity for "c:\util\Country Codes.exe" to processor 1, I typed:
imagecfg -a 0x2 "c:\util\Country Codes.exe"
and received the following response:
c:\util\Country Codes.exe contains no configuration information c:\util\Country Codes.exe contains a Subsystem Version of 4.0 c:\util\Country Codes.exe updated with the following configuration information: Process Affinity Mask: 00000002When I launch Country Codes.exe, its' affinity is set to CPU 1.