Sdílet prostřednictvím


Konfigurace serveru: Maska spřažení

platí pro:SQL Server

Poznámka:

Tato funkce bude odebrána v budoucí verzi SQL Serveru. Nepoužívejte tuto funkci v nové vývojové práci a naplánujte úpravu aplikací, které tuto funkci aktuálně používají. Místo toho použijte ALTER SERVER CONFIGURATION .

K provádění multitaskingu systém Windows někdy přesouvá procesní vlákna mezi různými procesory. I když je tato aktivita z hlediska operačního systému efektivní, může tato aktivita snížit výkon SQL Serveru při vysokém zatížení systému, protože každá mezipaměť procesoru se opakovaně načítá s daty. Přiřazení procesorů ke konkrétním vlákenm může za těchto podmínek zlepšit výkon odstraněním opětovného načítání procesoru; takové přidružení mezi vláknem a procesorem se nazývá spřažení procesoru.

SQL Server podporuje spřažení procesoru se dvěma možnostmi masky spřažení: affinity mask (označované také jako maska spřažení procesoru) a affinity I/O mask. Další informace o affinity I/O mask optionkonfiguraci serveru: Spřažení vstupně-výstupní masky. Podpora spřažení procesoru a vstupně-výstupních operací pro servery s 33 až 64 procesory vyžaduje, abyste také použili možnosti konfigurace serveru spřažení 64 a spřažení64 .

Poznámka:

Podpora spřažení pro servery s procesory 33 až 64 je dostupná pouze v 64bitových operačních systémech.

Možnost affinity mask , která existovala v dřívějších verzích SQL Serveru, dynamicky řídí spřažení procesoru.

Na SQL Serveru je možné tuto affinity mask možnost nakonfigurovat bez nutnosti restartování instance SQL Serveru. Při použití sp_configure, musíte spustit buď RECONFIGURE nebo RECONFIGURE WITH OVERRIDE po nastavení možnosti konfigurace. Pokud používáte SQL Server Express, změna affinity mask možnosti vyžaduje restartování.

Změny masky spřažení probíhají dynamicky, což umožňuje spouštění a vypínání plánovačů procesoru, které sváže vlákna procesů v RÁMCI SQL Serveru. K tomu může dojít při změně podmínek na serveru. Pokud je například na server přidána nová instance SQL Serveru, může být nutné provést úpravy affinity mask možnosti distribuovat zatížení procesoru.

Změny bitových mask spřažení vyžadují, aby SQL Server povolil nový plánovač procesoru a zakázal existující plánovač procesoru. Nové dávky je pak možné zpracovat na nových nebo zbývajících plánovačích.

Pokud chcete spustit nový plánovač procesoru, SQL Server vytvoří nový plánovač a přidá ho do seznamu svých standardních plánovačů. Nový plánovač se považuje pouze za nové příchozí dávky. Aktuální dávky se budou dál spouštět ve stejném plánovači. Pracovní procesy se migrují do nového plánovače, jakmile se uvolní, nebo se vytvoří nové pracovní procesy.

Vypnutí plánovače vyžaduje, aby všechny dávky v plánovači dokončily své aktivity a ukončily se. Plánovač, který je vypnutý, je označený jako offline, aby na něm nebyla naplánována žádná nová dávka.

Bez ohledu na to, jestli přidáte nebo odeberete nový plánovač, trvalé systémové úlohy, jako je monitorování zámků, kontrolní bod, vlákno úlohy systému (zpracování DTC) a proces signálu, budou v plánovači nadále spuštěny, zatímco je server funkční. Tyto trvalé systémové úlohy se nemigrují dynamicky. Pokud chcete distribuovat zatížení procesoru pro tyto systémové úlohy napříč plánovači, je nutné restartovat instanci SQL Serveru. Pokud se SQL Server pokusí vypnout plánovač přidružený k trvalé systémové úloze, úloha se bude dál spouštět v offline plánovači (bez migrace). Tento plánovač je vázán na procesory v upravené spřažení masky a neuvádí žádné zatížení procesoru, se kterým byl vázán před změnou. Použití dalších offline plánovačů by nemělo významně ovlivnit zatížení systému. Pokud ano, restartování databázového serveru se vyžaduje k překonfigurování těchto úloh u plánovačů dostupných s upravenou maskou spřažení.

Nenastavujte affinity mask a affinity I/O mask konfigurační hodnoty SQL Serveru tak, aby používaly stejné procesory. Výkon může mít za to, že se rozhodnete vytvořit vazbu procesoru pro plánování pracovních vláken SQL Serveru i pro zpracování vstupně-výstupních operací. Proto se ujistěte, že hodnoty konfigurace nejsou nastavené pro stejný procesor. Stejné doporučení platí pro affinity64 maskaffinity64 I/O mask Aby se zajistilo, že affinity mask se nepřekrývá affinity I/O masks , příkaz RECONFIGURE ověří, že se normální spřažení procesoru a vstupně-výstupních operací vzájemně vylučují. Pokud ne, zobrazí se do relace klienta a do protokolu chyb SQL Serveru chybová zpráva, která indikuje, že toto nastavení se nedoporučuje.

 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.

Spuštěné RECONFIGURE WITH OVERRIDE možnosti umožňují, aby se spřažení procesoru a vstupně-výstupních operací překrývaly a vzájemně se nevylučují.

Úlohy spřažení vstupně-výstupních operací (například opožděný zápis a zapisovač protokolů) jsou přímo ovlivněny affinity I/O mask. Pokud nejsou úkoly opožděného zapisovače a zapisovače protokolů svázané, dodržují stejná pravidla definovaná pro ostatní trvalé úkoly, jako je monitorování zámku nebo kontrolní bod.

Pokud zadáte masku spřažení, která se pokusí namapovat na neexistující procesor, RECONFIGURE příkaz hlásí chybovou zprávu do relace klienta i protokolu chyb SQL Serveru. Použití této RECONFIGURE WITH OVERRIDE možnosti nemá v tomto případě žádný vliv a znovu se zobrazí stejná chyba konfigurace.

Můžete také vyloučit aktivitu SQL Serveru z konkrétních přiřazení úloh operačním systémem Windows. Pokud nastavíte bit představující procesor na 1, je tento procesor vybrán databázovým strojem SQL Serveru pro přiřazení vlákna. Když nastavíte affinity mask0 (výchozí), algoritmy plánování systému Microsoft Windows nastaví spřažení vlákna. Pokud nastavíte affinity mask libovolnou nenulovou hodnotu, spřažení SQL Serveru interpretuje hodnotu jako bitovou masku, která určuje procesory, které mají nárok na výběr.

Oddělením vláken SQL Serveru od spuštění na konkrétních procesorech může systém Microsoft Windows lépe vyhodnotit zpracování procesů specifických pro Systém Windows. Například na serveru s 8 procesory se dvěma instancemi SQL Serveru (instance A a B) může správce systému použít affinity mask možnost přiřadit první sadu 4 procesorů k instanci A a druhou sadu 4 instance B. Chcete-li nakonfigurovat více než 32 procesorů, nastavte oba a affinity maskaffinity64 mask. Hodnoty pro affinity mask jsou následující:

Bajty v masce Počet procesorů
1 bajt Až 8 procesorů
2 bajty Až 16 procesorů
3 bajty Až 24 procesorů
4 bajty Až 32 procesorů

Pokud chcete pokrýt více než 32 procesorů, nakonfigurujte pro prvních 32 procesorů 4 bajt affinity mask a až 4 bajty affinity64 mask pro zbývající procesory.

Vzhledem k tomu, že nastavení spřažení procesoru SQL Serveru je specializovaná operace, použijte ji pouze v případě potřeby. Ve většině případů nabízí výchozí spřažení Windows nejlepší výkon. Při nastavování mask spřažení zvažte požadavky na procesor pro jiné aplikace. Další informace najdete v dokumentaci k operačnímu systému Windows.

Poznámka:

Sledování procesů můžete použít k zobrazení a analýze využití jednotlivých procesorů.

Při zadávání affinity I/O mask této možnosti ji musíte použít s affinity mask možností konfigurace. Jak už jsme ale zmínili dříve, nepovolujte stejný procesor v přepínači affinity mask i možnosti affinity I/O mask . Bity odpovídající jednotlivým procesorům by měly být v jednom z těchto tří stavů:

  • 0 affinity mask možnost i affinity I/O mask možnost.
  • 1 v možnosti affinity mask a 0 v affinity I/O mask možnosti.
  • 0 v možnosti affinity mask a 1 v affinity I/O mask možnosti.

Upozornění

Nenakonfigurujte spřažení procesoru v operačním systému Windows a také nakonfigurujte affinity mask sql Server. Tato nastavení se pokouší dosáhnout stejného výsledku a pokud jsou konfigurace nekonzistentní, můžete mít nepředvídatelné výsledky. Spřažení procesoru SQL Serveru je nejvhodnější s využitím sp_configure možnosti v SQL Serveru.

Examples

Jako příklad nastavení affinity mask možnosti, pokud jsou procesory 1, 2 a 5 vybrány jako dostupné s bity v pozicích 1, 2 a 5 nastaveny na 1 a bity 0, 3, 4, 6 a 7, 0musí být použita šestnáctková hodnota 0x26 (desítkové ekvivalenty 38) . Číslo pozice bitů zprava doleva.

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

Následující tabulka uvádí affinity mask hodnoty pro systém s 8 procesory.

Desetinná hodnota Binární bitová maska Povolit vlákna SQL Serveru na procesorech
1 00000001 0
3 00000011 0 a 1
7 00000111 0, 1 a 2
15 00001111 0, 1, 2 a 3
31 00011111 0, 1, 2, 3 a 4
63 00111111 0, 1, 2, 3, 4 a 5
127 01111111 0, 1, 2, 3, 4, 5 a 6
255 11111111 0, 1, 2, 3, 4, 5, 6 a 7

Tato affinity mask možnost je rozšířená. Pokud ke změně nastavení používáte sp_configure systémovou uloženou proceduru, můžete toto nastavení změnit affinity mask pouze v případě, že show advanced options je nastavená hodnota 1. Po provedení příkazu Transact-SQL RECONFIGURE se nové nastavení projeví okamžitě bez nutnosti restartování instance SQL Serveru.

Ne uniformní přístup k paměti (NUMA)

Při použití hardwaru ne uniformní přístup k paměti (NUMA) a je affinity mask nastaven, každý plánovač v uzlu vytvoří vazbu na vlastní procesor. affinity mask Pokud není nastavený, každý plánovač je svázán se skupinou procesorů v uzlu NUMA a plánovač mapovaný na uzel N1 NUMA může naplánovat práci na jakémkoli procesoru v uzlu, ale ne na procesorech přidružených k jinému uzlu.

Jakákoli operace spuštěná na jednom uzlu NUMA může používat pouze stránky vyrovnávací paměti z daného uzlu. Pokud je operace spuštěna paralelně na procesorech z více uzlů, lze paměť použít z libovolného uzlu, který je součástí.

Problémy s licencí

Dynamické spřažení je úzce omezené licencováním procesoru. SQL Server neumožňuje žádnou konfiguraci affinity mask možností, které porušují zásady licencování.

Startup

Pokud zadaná maska spřažení porušuje zásady licencování při spuštění SQL Serveru nebo při připojení databáze, vrstva modulu dokončí proces spuštění nebo operaci připojení nebo obnovení databáze a pak resetuje sp_configure hodnotu spuštění masky spřažení na nulu a zobrazí chybovou zprávu do protokolu chyb SQL Serveru.

Překonfigurovat

Pokud zadaná maska spřažení porušuje zásady licencování při spuštění příkazu Transact-SQL RECONFIGURE , zobrazí se do relace klienta a do protokolu chyb SQL Serveru chybová zpráva, která vyžaduje, aby správce databáze překonfiguroval masku spřažení. V tomto případě není přijat žádný RECONFIGURE WITH OVERRIDE příkaz.