Udostępnij za pośrednictwem


Soft-NUMA (SQL Server)

Dotyczy:programu SQL Server

Nowoczesne procesory mają wiele rdzeni na gniazdo. Każde gniazdo jest zwykle reprezentowane jako pojedynczy węzeł NUMA. Silnik bazy danych programu SQL Server dzieli różne struktury wewnętrzne i wątki usług na partycje, zgodnie z węzłami NUMA. W przypadku procesorów zawierających co najmniej 10 rdzeni na gniazdo, dzielenie sprzętowych węzłów NUMA przy użyciu oprogramowania NUMA zwykle zwiększa skalowalność i wydajność. Przed wprowadzeniem SQL Server 2014 (12.x) SP2 programowa architektura NUMA (soft-NUMA) wymagała edytowania rejestru w celu dodania maski koligacji konfiguracji węzła i była konfigurowana na poziomie hosta, a nie na poziomie poszczególnych instancji. Począwszy od SQL Server 2014 (12.x) SP2 i SQL Server 2016 (13.x), soft-NUMA jest konfigurowany automatycznie na poziomie instancji bazy danych przy starcie usługi SQL Server.

Procesory dodawane na gorąco nie są obsługiwane przez architekturę soft-NUMA.

Automatyczne soft-NUMA

W programie SQL Server 2016 (13.x), za każdym razem gdy aparat bazy danych programu SQL Server wykryje podczas uruchamiania więcej niż osiem rdzeni fizycznych na węzeł NUMA lub gniazdo, węzły soft-NUMA są tworzone automatycznie. Rdzenie procesorów z technologią wielowątkowości symultanicznej (SMT) nie są traktowane odrębnie przy liczeniu rdzeni fizycznych w węźle. Gdy wykryta liczba rdzeni fizycznych jest większa niż osiem na gniazdo, aparat bazy danych programu SQL Server tworzy węzły soft-NUMA, które idealnie zawierają osiem rdzeni, ale mogą zawierać od czterech do ośmiu rdzeni fizycznych na węzeł. Rozmiar węzła sprzętowego może być ograniczony przez maskę koligacji procesora CPU. Liczba węzłów NUMA nigdy nie przekracza maksymalnej liczby obsługiwanych węzłów NUMA.

Można wyłączyć lub ponownie włączyć soft-NUMA przy użyciu instrukcji ALTER SERVER CONFIGURATION z argumentem SET SOFTNUMA. Zmiana wartości tego ustawienia wymaga ponownego uruchomienia silnika bazy danych, aby zaczęły obowiązywać.

Na poniższej ilustracji przedstawiono typ informacji dotyczących soft-NUMA widocznych w dzienniku błędów SQL Server, gdy SQL Server wykrywa sprzętowe węzły NUMA z liczbą rdzeni fizycznych większą niż osiem na każdy węzeł lub gniazdo.

2016-11-14 13:39:43.17 Server      SQL Server detected 2 sockets with 12 cores per socket and 24 logical processors per socket, 48 total logical processors; using 48 logical processors based on SQL Server licensing. This is an informational message; no user action is required.
2016-11-14 13:39:43.35 Server      Automatic soft-NUMA was enabled because SQL Server has detected hardware NUMA nodes with greater than 8 physical cores.
2016-11-14 13:39:43.63 Server      Node configuration: node 0: CPU mask: 0x0000000000555555:0 Active CPU mask: 0x0000000000555555:0. This message provides a description of the NUMA configuration for this computer. This is an informational message only. No user action is required.
2016-11-14 13:39:43.63 Server      Node configuration: node 1: CPU mask: 0x0000000000aaaaaa:0 Active CPU mask: 0x0000000000aaaaaa:0. This message provides a description of the NUMA configuration for this computer. This is an informational message only. No user action is required.
2016-11-14 13:39:43.63 Server      Node configuration: node 2: CPU mask: 0x0000555555000000:0 Active CPU mask: 0x0000555555000000:0. This message provides a description of the NUMA configuration for this computer. This is an informational message only. No user action is required.
2016-11-14 13:39:43.63 Server      Node configuration: node 3: CPU mask: 0x0000aaaaaa000000:0 Active CPU mask: 0x0000aaaaaa000000:0. This message provides a description of the NUMA configuration for this computer. This is an informational message only. No user action is required.

Notatka

Począwszy od programu SQL Server 2014 (12.x) SP 2, użyj flagi śledzenia 8079, aby zezwolić programowi SQL Server na używanie automatycznego oprogramowania NUMA. Począwszy od SQL Server 2016 (13.x), to zachowanie jest kontrolowane przez silnik i flaga śledzenia 8079 nie ma żadnego wpływu. Aby uzyskać więcej informacji, zobacz DBCC TRACEON — Trace Flags.

Ręczna konfiguracja soft-NUMA

Aby ręcznie skonfigurować serwera SQL Server do używania "soft-NUMA", wyłącz automatyczne "soft-NUMA" i edytuj rejestr, aby dodać maskę koligacji dla konfiguracji węzła. W przypadku korzystania z tej metody maska soft-NUMA może być określona jako wpis rejestru binarny, DWORD (szesnastkowy lub dziesiętny) lub QWORD (szesnastkowy lub dziesiętny). Aby skonfigurować więcej niż pierwsze 32 procesory CPU, użyj wartości rejestru QWORD lub BINARY (wartości QWORD nie mogą być używane przed programem SQL Server 2012 (11.x)). Po zmodyfikowaniu rejestru należy ponownie uruchomić aparat bazy danych, aby konfiguracja soft-NUMA weszła w życie.

Napiwek

Procesory CPU są numerowane, począwszy od 0.

Ostrzeżenie

Niepoprawne edytowanie rejestru może poważnie uszkodzić system. Przed wprowadzeniem zmian w rejestrze zalecamy wykonanie kopii zapasowej wszystkich wartościowych danych na komputerze.

Rozważmy przykład komputera z ośmioma procesorami, które nie mają architektury NUMA. Skonfigurowano trzy węzły soft-NUMA.
Wystąpienie silnika bazy danych A jest skonfigurowane do używania CPU od 0 do 3. Drugie wystąpienie silnika bazy danych jest zainstalowane i skonfigurowane do używania procesorów od 4 do 7. Przykład może być wizualnie reprezentowany jako:

CPUs         0  1  2  3  4  5  6  7
Soft-NUMA   <-N0-><-N1-><----N2---->
SQL Server  <instance A><instance B>

Wystąpienie A, które doświadcza znaczącego wejścia/wyjścia, ma teraz dwa wątki I/O i jeden wątek lazy writer. Wystąpienie B, które wykonuje operacje intensywnie korzystające z procesora, ma tylko jeden wątek we/wy i jeden leniwy wątek zapisywania. Różne ilości pamięci można przypisać do wystąpień, ale w przeciwieństwie do sprzętowej architektury NUMA, obie odbierają pamięć z tego samego bloku pamięci systemu operacyjnego i nie ma koligacji pamięci do procesora.

Wątek leniwego pisarza jest powiązany z widokiem SQLOS fizycznych węzłów pamięci NUMA. Dlatego niezależnie od tego, ile sprzęt przedstawia fizycznych węzłów NUMA, taka sama liczba wątków opóźnionego zapisywania jest tworzona. Aby uzyskać więcej informacji, zobacz Jak to działa: Soft NUMA, I/O Completion Thread, Lazy Writer Workers oraz Węzły pamięci.

Notatka

Klucze rejestru Soft-NUMA nie są kopiowane podczas uaktualniania wystąpienia programu SQL Server.

Ustaw maskę koligacji procesora

Uruchom następującą instrukcję w wystąpieniu A, aby skonfigurować je do używania CPU 0, 1, 2 i 3, ustawiając maskę powiązania CPU:

ALTER SERVER CONFIGURATION
SET PROCESS AFFINITY CPU = 0 TO 3;

Uruchom następującą instrukcję na instancji B, aby skonfigurować ją do używania procesorów 4, 5, 6 i 7 poprzez ustawienie maski przypisania CPU.

ALTER SERVER CONFIGURATION
SET PROCESS AFFINITY CPU = 4 TO 7;

Mapowanie węzłów soft-NUMA na procesory

Za pomocą programu Edytor rejestru (regedit.exe) dodaj następujące klucze rejestru, aby mapować węzeł soft-NUMA 0 na procesory CPU 0 i 1, węzeł soft-NUMA 1 na procesory CPU 2 i 3 oraz węzeł soft-NUMA 2 na procesory CPU 4, 5, 6 i 7.

Napiwek

Aby określić procesory CPU od 60 do 63, użyj wartości QWORD F000000000000000 lub wartości binarnej 1111000000000000000000000000000000000000000000000000000000000000.

W poniższym przykładzie przyjęto założenie, że masz serwer DL580 G9 z 18 rdzeniami na gniazdo (w czterech gniazdach), a każde gniazdo znajduje się we własnej grupie K. Konfiguracja soft-NUMA, którą można utworzyć, będzie wyglądać podobnie do następującego przykładu: sześć rdzeni na węzeł, trzy węzły na grupę, cztery grupy.

Przykład wystąpienia programu SQL Server z wieloma grupami K Typ Nazwa wartości Dane wartości
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node0 DWORD CPUMask 0x3f
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node0 DWORD Group 0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node1 DWORD CPUMask 0x0fc0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node1 DWORD Group 0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node2 DWORD CPUMask 0x3f000
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node2 DWORD Group 0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node3 DWORD CPUMask 0x3f
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node3 DWORD Group 1
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node4 DWORD CPUMask 0x0fc0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node4 DWORD Group 1
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node5 DWORD CPUMask 0x3f000
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node5 DWORD Group 1
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node6 DWORD CPUMask 0x3f
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node6 DWORD Group 2
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node7 DWORD CPUMask 0x0fc0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node7 DWORD Group 2
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node8 DWORD CPUMask 0x3f000
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node8 DWORD Group 2
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node9 DWORD CPUMask 0x3f
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node9 DWORD Group 3
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node10 DWORD CPUMask 0x0fc0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node10 DWORD Group 3
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node11 DWORD CPUMask 0x3f000
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node11 DWORD Group 3

Metadane

Możesz użyć następujących widoków DMV (Dynamic Management Views), aby zobaczyć bieżący stan oraz konfigurację soft-NUMA.

Chociaż można wyświetlić wartość aktualną dla automatycznego soft-NUMA przy użyciu sp_configure (Transact-SQL), ale nie można zmienić jej wartości przy użyciu sp_configure. Należy użyć instrukcji ALTER SERVER CONFIGURATION (Transact-SQL) z argumentem SET SOFTNUMA.