[JOBSCHEDULER]


perfmon_2016-06-09_19-37-24.pngAffinityMask=-1
If you set affinity mask to another value e.g. 84 (that is, you set a bit representing a processor to 2-4-6), those processors are selected for thread assignment.
When you set affinity mask to 0 (the default), the 64-bit versions of Windows, scheduling algorithms set the thread’s affinity.
When you set affinity mask to any nonzero value, affinity interprets the value as a bit mask that specifies those processors eligible for selection.
What happens when you set AffinityMask=84

Translated from decimal 84 to BINAIR this is 0 1 0 1 0 1 0 0
The number of the processor is
7 6 5 4 3 2 1 0
Read from the right to the left
CPU7 CPU6 CPU5 CPU4 CPU3 CPU2 CPU1 CPU0

If you want to activate an ‘unused’ processor, you could use affinity mask value.
The standard FSc value of AffinityMask=-1 meaning that all processors are activated for thread assignment.

Which in conclusion give us the advise not to change the standard affinity mask value.

Advertisements

AFFINITY: What it is and how to configure


affinityIn Microsoft® Windows NT® 4.0 and Windows® 2000, an activity (thread) in a process can migrate from processor to processor, with each migration reloading the processor cache. Under heavy system loads, specifying which processor should run a specific thread can improve performance by reducing the number of times the processor cache is reloaded. The association between a processor and a thread is called processor affinity.

Use the affinity mask option to increase performance on symmetric multiprocessor (SMP) systems (with more than four microprocessors) operating under heavy load. You can associate a thread with a specific processor and specify which processors Microsoft SQL Server™ will use. You can exclude SQL Server activity from processors given specific workload assignments by the Windows NT 4.0 or Windows 2000 operating system.

If you set a bit representing a processor to 1, that processor is selected for thread assignment. When you set affinity mask to 0 (the default), the Windows NT 4.0 or Windows 2000 scheduling algorithms set the thread’s affinity. When you set affinity mask to any nonzero value, SQL Server affinity interprets the value as a bit mask that specifies those processors eligible for selection. Excluding SQL Server threads from running on particular processors helps evaluate the system’s handling of processes specific to Windows NT 4.0 or Windows 2000. For example, you can use affinity mask to evaluate whether an additional network interface card (NIC) increases performance or assess NIC performance with increasing loads.

Because using SQL Server processor affinity is a specialized operation, it is recommended that SQL Server processor affinity be used only when necessary. In most cases, the Windows NT 4.0 or Windows 2000 default affinity provides the best performance.

Before you change the setting of affinity mask, keep in mind that Windows NT 4.0 assigns deferred process call (DPC) activity associated with NICs to the highest numbered processor in the system. In systems with more than one installed and active NIC, each additional card’s activity is assigned to the next highest numbered processor. For example, an eight-processor system with two NICs has DPCs for each NIC assigned to processor 7 and to processor 6.

Note  You can use System Monitor (Performance Monitor in Windows NT 4.0) to view and analyze individual processor usage.

For example, if processors 1, 2, and 5 are selected as available with bits 1, 2, and 5 set to 1 and bits 0, 3, 4, 6, and 7 set to 0, a hexadecimal value of 0x26 or the decimal equivalent of 38 is specified. Number the bits from the right to left. The rightmost bit is bit 0. Set bits 1, 2, and 5 (the third, fifth, and sixth bits) to 1. The number calculated from setting the specified bits is binary 00100110, which is decimal 38 or hexadecimal 0x26.

These are affinity mask values for an eight-processor system.

Decimal value Binary bit mask Allow SQL Server threads on processors
1 00000001 0
3 00000011 0 and 1
7 00000111 0, 1, and 2
15 00001111 0, 1, 2, and 3
31 00011111 0, 1, 2, 3, and 4
63 00111111 0, 1, 2, 3, 4, and 5
127 01111111 0, 1, 2, 3, 4, 5, and 6 (isolates SQL Server activity from DPC processor only)

affinity mask is an advanced option. If you are using the sp_configure system stored procedure to change the setting, you can change affinity mask only when show advanced options is set to 1. The setting takes effect after stopping and restarting the server.

Source:
http://msdn.microsoft.com/en-us/library/aa196717%28SQL.80%29.aspx

Now in practice:

Start FSX, Pres CTRL+ALT+DEL and select StartTaskmanager, on the Performance tab select Resource Monitor…then

on the Resorce Monitor page select, just below CPU, the fsx.exe checkbox. Select the CPU tab and watch the CPU’s.

Add to the fsx.cfg:
[JOBSCHEDULER]
AffinityMask=84

Translated from decimal 84 to BINAIR this is 0 1 0 1 0 1 0 0
The number of the processor is      
7    6    5    4    3    2    1    0
Read from the right to the left  

CPU7 CPU6 CPU5 CPU4 CPU3 CPU2 CPU1 CPU0

Look on the image: if you want to activate an unused processor,
use affinity mask value

EG, to activate processor 5 the value code 01110100
and translated to binair this becomes 116
REMINDER: since you have at least 1 NIC on board,
NEVER activate CPU7 (the last one in an 8 core proc.)



affinityIn Windows kan een activiteit (thread) in een proces migreren van processor tot processor; na elke migratie begint het proces met het herladen van de processor cache. Onder zware belasting van het systeem, kan met vermelding van welke processor, een specifieke thread de systeemprestaties verbeteren, door vermindering van het aantal keren dat de processor cache opnieuw wordt geladen. De associatie tussen een processor en een thread heet processor affiniteit.

Gebruik de instelmogelijkheid van het affiniteit masker (affinity mask) om de prestaties op symmetrische multiprocessor (SMP) systemen (met meer dan vier microprocessors), die onder zware belasting werken, te verhogen. Je kunt een thread verbinden met een specifieke processor en specificeert daarmee welke processor Windows zal gebruiken. Je kan ook een activiteit met een specifieke opdracht door het besturingssysteem van de processors uitsluiten.

Als je een bit die een processor vertegenwoordigd op 1 zet, is die processor geselecteerd  voor een thread opdracht. Wanneer het affiniteit masker ingesteld is op 0 (de standaardinstelling), zal Windows het timing algoritme van de thread affiniteit zelf bepalen. Wanneer je het affiniteit masker instelt op een waarde anders dan nul, interpreteert de Windows de waarde van de affiniteit als waarde uit een bit-masker, zodat de verwerkende processen in aanmerking komen voor een gespecificeerde selectie van processoren. Het uitsluiten van threads die worden uitgevoerd op bepaalde processors, helpt bij het bepalen van de systeem afhandeling van processen die specifiek zijn voor Windows.

Bijvoorbeeld: je kan gebruik maken van het affiniteit masker om na te gaan of een extra programma als FSX de prestaties verhoogt of beoordelen of er toenemende belastingen van de processoren wordt waargenomen. Omdat het gebruik van de processor affiniteit instellingen een gespecialiseerd taak is, is het raadzaam dat deze affiniteit alleen te wijzigen wanneer dat nodig is. In de meeste gevallen biedt de Windows als standaard affiniteit de beste prestaties. Denk er aan dat, voordat je de instelling van affiniteit masker wijzigt, Windows een uitgestelde proces call activiteit (DPC= deferred process call) in verband met netwerkkaarten aan de hoogste genummerde processor in het systeem toekent. In systemen met meer dan een geïnstalleerde en actieve NIC (network interface card), is van elke extra kaart de activiteit toegewezen aan de volgende hoogste genummerde processor. Bijvoorbeeld bij een acht-processor-systeem met twee NIC’s hebben de DPC’s voor elke NIC een threadtoegekend aan de processor 7 en processor 6. Je moet dus FSX NOOIT toekennen aan de hoogst genummerde processor.

Opmerking: je kan de System Monitor (Performance Monitor in Windows) gebruiken om het individuele processor gebruik te bekijken en te analyseren.

Bijvoorbeeld: als de processoren 1, 2 en 5 zijn geselecteerd en dus beschikbaar zijn met bits 1, 2 en 5 op 1 gezet
en de bits 0, 3, 4, 6 en 7 op 0,
krijg je een hexadecimale waarde van 0×26 of de decimale equivalent van 38.

Nummer de bits van rechts naar links. De meest rechtse bit is bit 0. Set bits 1, 2 en 5 (de derde, vijfde en zesde bits) op 1.

Het aantal berekend op basis van het instellen van de opgegeven bits is binair 00100110, dat is 38 decimaal of hexadecimaal 0×26.

Voeg dit statement toe aan de fsx.cfg:
[JOBSCHEDULER]
AffinityMask=84

Met een vertaling van decimaal 84 naar BINAIR is dit  0 1 0 1 0 1 0 0
Het nummer van de processor dat daarbij hoort is
                           7    6    5    4    3    2    1    0
Je leest van rechts
naar links
                          CPU7 CPU6 CPU5 CPU4 CPU3 CPU2 CPU1 CPU0

KIJK OP HET PLAATJE
Wil je een ongebruikte processor inschakelen,
dan doe je dat door middel van het wijzigen van de Affinity Mask
waarde.
Wil je processor 5 inschakelen dan wordt de code 01110100
en vertaald naar binair is dit 116

Dit zijn affiniteit masker waarden voor een acht-processor systeem.

Decimal value Binary bit mask Allow SQL Server threads on processors
1 00 00 00 01 0
3 00 00 00 11 0 and 1
7 00 00 01 11 0, 1, and 2
15 00 00 11 11 0, 1, 2, and 3 (max. dual core)
31 00 01 11 11 0, 1, 2, 3, and 4
63 00 11 11 11 0, 1, 2, 3, 4, and 5
127 01 11 11 11 0, 1, 2, 3, 4, 5, and 6 (isolates SQL Server activity from DPC processor only)

affiniteit masker is een geavanceerde optie. Als je gebruik maakt van de opgeslagen sp_configure system procedure om de instelling te wijzigen, kan je het affiniteit masker alleen wijzigen als de geavanceerde opties zijn ingesteld op 1.
De instelling wordt van kracht na het stoppen en opnieuw starten van de server.

Bron:
http://msdn.microsoft.com/en-us/library/aa196717%28SQL.80%29.aspx