Delen via


Serverconfiguratie: I/O-masker voor affiniteit

Van toepassing op:SQL Server

Windows verplaatst soms procesthreads tussen verschillende processors om multitasking uit te voeren. Hoewel deze activiteit efficiƫnt is vanuit een besturingssysteem, kan deze activiteit de prestaties van SQL Server verminderen onder zware systeembelastingen, omdat elke processorcache herhaaldelijk opnieuw wordt geladen met gegevens. Het toewijzen van processors aan specifieke threads kan de prestaties onder deze omstandigheden verbeteren door het elimineren van processorherladingen; een dergelijke koppeling tussen een thread en een processor wordt processoraffiniteit genoemd.

SQL Server ondersteunt processoraffiniteit met twee opties voor affiniteitsmasker: affinity mask (ook wel bekend als CPU-affiniteitsmasker) en affinity I/O mask. Zie affinity mask voor meer informatie over de optie. Ondersteuning voor CPU- en I/O-affiniteit voor servers met 33 tot 64 processors vereist dat u ook de affiniteit64-mask en affiniteit64 I/O-mask serverconfiguratieopties respectievelijk gebruikt.

Opmerking

Ondersteuning voor affiniteit voor servers met 33 tot 64 processors is alleen beschikbaar op 64-bits besturingssystemen.

Met de affinity I/O mask optie wordt I/O van DE SQL Server-schijf gekoppeld aan een opgegeven subset van CPU's. In oltp-omgevingen (High-end SQL Server Online Transactional Processing) kan deze extensie de prestaties verbeteren van SQL Server-threads die I/Os uitgeven. Deze uitbreiding biedt geen ondersteuning voor hardwareaffiniteit voor afzonderlijke schijven of schijfcontrollers.

De waarde voor affinity I/O mask geeft aan welke CPU's op een multiprocessorcomputer in aanmerking komen voor het verwerken van I/O-bewerkingen van SQL Server-schijven. Het masker is een bitmap waarin de meest rechtse bit de cpu(0) van de laagste volgorde specificeert, de bit aan de linkerkant de cpu(1) van de volgende laagste volgorde, enzovoort. Als u meer dan 32 processors wilt configureren, stelt u zowel de affinity I/O mask als de affinity64 I/O mask.

De waarden voor affinity I/O mask zijn als volgt:

Bytes in een masker Aantal CPU's
1-byte Maximaal 8 CPU's
2 bytes Maximaal 16 CPU's
3-byte Maximaal 24 CPU's
4 bytes Maximaal 32 CPU's

Als u meer dan 32 CPU's wilt dekken, configureert u een 4-byte affinity I/O mask voor de eerste 32 CPU's en tot een 4-byte affinity64 I/O mask voor de resterende CPU's.

Een 1 bit in het I/O-patroon voor affiniteit geeft aan dat de bijbehorende CPU in aanmerking komt voor het uitvoeren van I/O-bewerkingen voor SQL Server-schijven. Een 0 bit geeft aan dat er geen I/O-bewerkingen voor SQL Server-schijven moeten worden gepland voor de bijbehorende CPU. Wanneer alle bits zijn ingesteld op 0of affinity I/O mask niet zijn opgegeven, wordt I/O van SQL Server-schijf gepland op een van de CPU's die in aanmerking komen voor het verwerken van SQL Server-threads.

Omdat het instellen van de SQL Server-optie affinity I/O mask een gespecialiseerde bewerking is, gebruikt u deze alleen wanneer dat nodig is. In de meeste gevallen biedt de standaardaffiniteit met Windows de beste prestaties.

Wanneer u de affinity I/O mask optie opgeeft, moet u deze gebruiken met de affinity mask configuratieoptie. Schakel dezelfde CPU niet in op de affinity I/O mask switch en de affinity mask optie. De bits die overeenkomen met elke CPU moeten een van de volgende drie statussen hebben:

  • 0 in zowel de affinity I/O mask optie als de affinity mask optie.
  • 1 in de affinity I/O mask optie en 0 in de affinity mask optie.
  • 0 in de affinity I/O mask optie en 1 in de affinity mask optie.

De affinity I/O mask optie is een geavanceerde optie. Als u de opgeslagen systeemprocedure van het sp_configure gebruikt om de instelling te wijzigen, kunt u affinity I/O mask alleen wijzigen wanneer show advanced options is ingesteld op 1. Voor het opnieuw configureren van de affinity I/O mask optie in SQL Server is opnieuw opstarten van het SQL Server-exemplaar vereist.

Waarschuwing

Configureer geen CPU-affiniteit in het Windows-besturingssysteem en configureer de affinity mask ook niet in SQL Server. Deze instellingen proberen hetzelfde resultaat te bereiken en als de configuraties inconsistent zijn, kunt u onvoorspelbare resultaten hebben. SQL Server CPU-affiniteit is het beste geconfigureerd met behulp van de door het sp_configure systeem opgeslagen procedure in SQL Server.