Dela via


Serverkonfiguration: tillhörighetsmask

Gäller för:SQL Server

Anmärkning

Den här funktionen tas bort i en framtida version av SQL Server. Undvik att använda den här funktionen i nytt utvecklingsarbete och planera att ändra program som för närvarande använder den här funktionen. Använd ALTER SERVER CONFIGURATION i stället.

För att utföra multitasking flyttar Windows ibland processtrådar mellan olika processorer. Även om den är effektiv ur operativsystemssynpunkt kan den här aktiviteten minska SQL Server-prestanda under tunga systembelastningar, eftersom varje processorcache läses in upprepade gånger med data. Att tilldela processorer till specifika trådar kan förbättra prestanda under dessa förhållanden genom att eliminera processoromladdningar. en sådan association mellan en tråd och en processor kallas processortillhörighet.

SQL Server stöder processortillhörighet med två alternativ för tillhörighetsmask: affinity mask (kallas även cpu-tillhörighetsmask) och affinity I/O mask. Mer information om finns i affinity I/O mask optionServerkonfiguration: tillhörighets-I/O-mask. Cpu- och I/O-tillhörighetsstöd för servrar med 33 till 64 processorer kräver att du också använder konfigurationsalternativen affinity64 mask och affinity64 I/O-maskserver .

Anmärkning

Stöd för tillhörighet för servrar med 33 till 64 processorer är endast tillgängligt på 64-bitars operativsystem.

Alternativet affinity mask , som fanns i tidigare versioner av SQL Server, styr dynamiskt CPU-tillhörighet.

I SQL Server affinity mask kan alternativet konfigureras utan att sql Server-instansen behöver startas om. När du använder sp_configure, måste du antingen köra RECONFIGURE eller RECONFIGURE WITH OVERRIDE efter att du har angett ett konfigurationsalternativ. När du använder SQL Server Express kräver det en omstart om du ändrar affinity mask alternativet.

Ändringar i tillhörighetsmaskerna sker dynamiskt, vilket möjliggör start på begäran och avstängning av processorschemaläggare som binder processtrådar i SQL Server. Detta kan inträffa när villkoren ändras på servern. Om till exempel en ny instans av SQL Server läggs till på servern kan det vara nödvändigt att göra justeringar i affinity mask alternativet för att omdistribuera processorbelastningen.

Ändringar av bitmasker för tillhörighet kräver att SQL Server aktiverar en ny CPU-schemaläggare och inaktiverar den befintliga CPU-schemaläggaren. Nya batchar kan sedan bearbetas på de nya eller återstående schemaläggarna.

För att starta en ny CPU-schemaläggare skapar SQL Server en ny schemaläggare och lägger till den i listan över sina standardschemaläggare. Den nya schemaläggaren anses endast för de nya inkommande batcharna. Aktuella batchar fortsätter att köras på samma schemaläggare. Arbetarna migrerar till den nya schemaläggaren när de frigörs eller när nya arbetare skapas.

För att stänga en schemaläggare krävs att alla batchar i schemaläggaren slutför sina aktiviteter och avslutar. En schemaläggare som stängs av markeras som offline så att ingen ny batch schemaläggs på den.

Oavsett om du lägger till eller tar bort en ny schemaläggare fortsätter de permanenta systemuppgifterna som låsövervakare, kontrollpunkt, systemuppgiftstråd (bearbetning av DTC) och signalprocess att köras på schemaläggaren medan servern är i drift. Dessa permanenta systemuppgifter migreras inte dynamiskt. Om du vill omdistribuera processorbelastningen för dessa systemaktiviteter mellan schemaläggare måste du starta om SQL Server-instansen. Om SQL Server försöker stänga av en schemaläggare som är associerad med en permanent systemaktivitet fortsätter uppgiften att köras offlineschemaläggaren (ingen migrering). Den här schemaläggaren är bunden till processorerna i den ändrade tillhörighetsmasken och lägger ingen belastning på processorn som den var bunden till före ändringen. Att ha extra offlineschemaläggare bör inte påverka systemets belastning avsevärt. I så fall krävs en omstart av databasservern för att konfigurera om dessa uppgifter på de schemaläggare som är tillgängliga med den ändrade tillhörighetsmasken.

Ange inte konfigurationsvärdena affinity mask och affinity I/O mask för SQL Server för att använda samma processorer. Prestanda kan bli lidande om du väljer att binda en processor för både SQL Server-trådschemaläggning och för I/O-bearbetning. Kontrollera därför att konfigurationsvärdena inte har angetts för samma processor. Samma rekommendation gäller för affinity64 mask och affinity64 I/O mask. För att säkerställa att affinity mask inte överlappar kontrollerar affinity I/O maskKOMMANDOT RECONFIGURE att de normala CPU- och I/O-tillhörigheterna är ömsesidigt uteslutande. Annars rapporteras ett felmeddelande till klientsessionen och till SQL Server-felloggen, vilket anger att en sådan inställning inte rekommenderas.

 Msg 5834, Level 16, State 1, Line 1
 The affinity mask specified conflicts with the IO affinity mask specified. Use the override option to force this configuration.

Med körningsalternativ RECONFIGURE WITH OVERRIDE kan processor- och I/O-tillhörighet överlappa varandra och inte vara ömsesidigt uteslutande.

I/O-tillhörighetsuppgifterna (till exempel lat skrivare och loggskrivare) påverkas direkt av affinity I/O mask. Om de lata skriv- och loggskrivningsuppgifterna inte är bundna följer de samma regler som definierats för andra permanenta uppgifter, till exempel låsövervakare eller kontrollpunkt.

Om du anger en tillhörighetsmask som försöker mappa till en obefintlig cpu RECONFIGURE rapporterar kommandot ett felmeddelande till både klientsessionen och SQL Server-felloggen. Att använda alternativet RECONFIGURE WITH OVERRIDE har ingen effekt i det här fallet och samma konfigurationsfel rapporteras igen.

Du kan också exkludera SQL Server-aktivitet från specifika arbetsbelastningstilldelningar av Windows-operativsystemet. Om du anger en bit som representerar en processor till 1, väljs processorn av SQL Server Database Engine för trådtilldelning. När du anger affinity mask till 0 (standardinställningen) anger schemaläggningsalgoritmerna för Microsoft Windows trådens tillhörighet. När du anger affinity mask ett icke-zerovärde tolkar SQL Server-tillhörighet värdet som en bitmask som anger vilka processorer som är berättigade att väljas.

Genom att skilja SQL Server-trådar från att köras på vissa processorer kan Microsoft Windows bättre utvärdera systemets hantering av processer som är specifika för Windows. På en 8-CPU-server som kör två instanser av SQL Server (instans A och B) kan systemadministratören affinity mask till exempel använda alternativet för att tilldela den första uppsättningen med 4 processorer till instans A och den andra uppsättningen med 4 till instans B. Om du vill konfigurera fler än 32 processorer anger du både affinity mask och affinity64 mask. Värdena för affinity mask är följande:

Byte i mask Antal processorer
1 byte Upp till 8 processorer
2 byte Upp till 16 processorer
3 byte Upp till 24 processorer
4 byte Upp till 32 processorer

Om du vill täcka fler än 32 processorer konfigurerar du en 4-byte affinity mask för de första 32 processorerna och upp till 4 byte affinity64 mask för de återstående processorerna.

Eftersom det är en specialiserad åtgärd att ställa in SQL Server-processortillhörighet använder du den bara när det behövs. I de flesta fall ger standardtillhörigheten för Windows bästa prestanda. Överväg CPU-kraven för andra program när du ställer in tillhörighetsmaskerna. Mer information finns i dokumentationen om Windows-operativsystemet.

Anmärkning

Du kan använda Process Monitor för att visa och analysera individuell processoranvändning.

När du anger alternativet affinity I/O mask måste du använda det med konfigurationsalternativet affinity mask . Men som tidigare nämnts ska du inte aktivera samma processor i både växeln affinity mask och affinity I/O mask alternativet. De bitar som motsvarar varje CPU ska vara i något av följande tre tillstånd:

  • 0 i både alternativet affinity mask och alternativet affinity I/O mask .
  • 1 i alternativet affinity mask och 0 i alternativet affinity I/O mask .
  • 0 i alternativet affinity mask och 1 i alternativet affinity I/O mask .

Försiktighet

Konfigurera inte CPU-tillhörighet i Windows-operativsystemet och konfigurera affinity mask även i SQL Server. De här inställningarna försöker uppnå samma resultat, och om konfigurationerna är inkonsekventa kan du få oförutsägbara resultat. SQL Server CPU-tillhörighet konfigureras bäst med hjälp av sp_configure alternativet i SQL Server.

Examples

affinity mask Om processorerna 1, 2 och 5 väljs som tillgängliga med bitar i position 1, 2 och 5 som är inställda 1 på och bitar 0, 3, 4, 6 och 7 inställda på 0måste ett hexadecimalt värde 0x26 (decimalekvivalenten 38) användas. Numrera bitpositionerna från höger till vänster.

EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
EXEC sp_configure 'affinity mask', 38;
RECONFIGURE;
GO

I följande tabell visas affinity mask värden för ett 8-CPU-system.

Decimalvärde Binär bitmask Tillåt SQL Server-trådar på processorer
1 00000001 0
3 00000011 0 och 1
7 00000111 0, 1 och 2
15 00001111 0, 1, 2 och 3
31 00011111 0, 1, 2, 3 och 4
63 00111111 0, 1, 2, 3, 4 och 5
127 01111111 0, 1, 2, 3, 4, 5 och 6
255 11111111 0, 1, 2, 3, 4, 5, 6 och 7

Alternativet affinity mask är ett avancerat alternativ. Om du använder den sp_configure system lagrade proceduren för att ändra inställningen kan du bara ändra affinity mask när show advanced options är inställd på 1. När kommandot Transact-SQL RECONFIGURE körs börjar den nya inställningen gälla omedelbart utan att sql Server-instansen behöver startas om.

Icke-enhetlig minnesåtkomst (NUMA)

När du använder maskinvarubaserad icke-enhetlig minnesåtkomst (NUMA) och affinity mask anges, binder varje schemaläggare i en nod till sin egen CPU. affinity mask När inte har angetts är varje schemaläggare bunden till gruppen med processorer i NUMA-noden och en schemaläggare som mappas till NUMA-noden N1 kan schemalägga arbete på valfri PROCESSOR i noden, men inte på processorer som är associerade med en annan nod.

Alla åtgärder som körs på en enskild NUMA-nod kan bara använda buffertsidor från den noden. När en åtgärd körs parallellt på processorer från flera noder kan minne användas från valfri nod.

Licensproblem

Dynamisk tillhörighet begränsas starkt av CPU-licensiering. SQL Server tillåter inte någon konfiguration av affinity mask alternativ som bryter mot licensieringsprincipen.

Startup-företag

Om en angiven tillhörighetsmask bryter mot licensieringsprincipen under SQL Server-starten eller under databasanslutningen slutför motorlagret startprocessen eller åtgärden för att koppla/återställa databasen och återställer sedan körningsvärdet för tillhörighetsmasken sp_configure till noll, vilket ger ett felmeddelande till SQL Server-felloggen.

Konfigurera

Om en angiven tillhörighetsmask bryter mot licensieringsprincipen när Transact-SQL-kommandot RECONFIGURE körs rapporteras ett felmeddelande till klientsessionen och till SQL Server-felloggen, vilket kräver att databasadministratören konfigurerar om tillhörighetsmasken. Inget RECONFIGURE WITH OVERRIDE kommando accepteras i det här fallet.