Formula for Processor Affinity Mask (IIS)

central-processing-unitiis-7.5windows-server-2008-r2

I have a 24 cores/ 48 GB RAM server machine on which I want to set processor affinity for worker process to last 12 cores through IIS Advance settings, is there any formula, i don't want to set affinity through task manager as this pool is recycled quite often.

Best Answer

http://www.iis.net/configreference/system.applicationhost/applicationpools/add/cpu

smpProcessorAffinityMask
Optional uint attribute.

Specifies the hexadecimal processor mask for multi-processor computers, which indicates to which CPU the worker processes in an application pool should be bound. Before this property takes effect, the smpAffinitized attribute must be set to true for the application pool.

Note: On 64-bit computers, the smpProcessorAffinityMask attribute contains the low-order DWORD for the processor mask, and the smpProcessorAffinityMask2 attribute contains the high-order DWORD for the processor mask. On 32-bit computers, the smpProcessorAffinityMask2 attribute has no effect.

If you set the value to 1 (which corresponds to 00000000000000001 in binary), the worker processes in an application pool run on only the first processor. If you set the value to 2 (which corresponds to 0000000000000010 in binary), the worker processes run on only the second processor. If you set the value to 3 (which corresponds to 0000000000000011 in binary) the worker processes run on both the first and second processors.

Note: Do not set this property to 0. Doing so disables symmetric multiprocessing (SMP) affinity and creates an error condition. This means that processes running on one CPU will not remain affiliated with that CPU throughout their lifetime.

The default value is 4294967295.

First, set smpAffinitized to true.

Processor identification goes from right to left. Starts at processor 0. To set the affinity to the last 12 processors:

0000 0000 1111 1111 1111 0000 0000 0000

Then you convert that to hex:

0x1FFE000