Megosztás:


Soft-NUMA (SQL Server)

A következőkre vonatkozik:SQL Server

A modern processzorok tokozásonként több maggal rendelkeznek. Általában minden foglalat egyetlen NUMA-csomópontként jelenik meg. Az SQL Server adatbázismotor NUMA-csomópontonként különböző belső struktúrákat és particionálási szolgáltatásszálakat particionál. A szoftvercsatornánként 10 vagy több magot tartalmazó processzorok esetében a szoftveres NUMA használatával a hardveres NUMA-csomópontok felosztása általában növeli a méretezhetőséget és a teljesítményt. Az SQL Server 2014 (12.x) SP2 előtt a szoftveralapú NUMA (soft-NUMA) megkövetelte, hogy szerkessze a beállításjegyzéket egy csomópontkonfigurációs affinitási maszk hozzáadásához, és a gazdagép szintjén volt konfigurálva, nem példányonként. Az SQL Server 2014 (12.x) SP2 és az SQL Server 2016 (13.x) verziótól kezdve a soft-NUMA automatikusan az adatbázis-példány szintjén van konfigurálva az SQL Server Adatbázismotor szolgáltatás indításakor.

A soft-NUMA nem támogatja a közvetlenül hozzáadható processzorokat.

Automatikus soft-NUMA

Az SQL Server 2016 (13.x) esetén, amikor az SQL Server adatbázismotorja NUMA-csomópontonként vagy szoftvercsatornánként több mint nyolc fizikai magot észlel indításkor, a rendszer alapértelmezés szerint automatikusan létrehozza a soft-NUMA csomópontokat. Az egyidejű többszálú (SMT) processzormagok nem különböztethetők meg a csomópont fizikai magjainak számlálásakor. Ha az észlelt fizikai magok száma szoftvercsatornánként nyolcnál több, az SQL Server adatbázismotor olyan soft-NUMA-csomópontokat hoz létre, amelyek ideális esetben nyolc magot tartalmaznak, de csomópontonként négy vagy akár nyolc fizikai magra is lemehetnek. A hardvercsomópont méretét cpu-affinitási maszk korlátozhatja. A NUMA-csomópontok száma soha nem haladja meg a támogatott NUMA-csomópontok maximális számát.

A soft-NUMA letiltható vagy újra engedélyezhető az ALTER SERVER CONFIGURATION utasítással a SET SOFTNUMA argumentummal. A beállítás értékének módosításához az adatbázismotor újraindítása szükséges.

Az alábbi ábra az SQL Server hibanaplójában látható soft-NUMA-val kapcsolatos információkat mutatja be, amikor az SQL Server az egyes csomópontokon vagy szoftvercsatornákon nyolcnál több fizikai maggal rendelkező hardver NUMA-csomópontokat észlel.

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.

Jegyzet

Az SQL Server 2014 (12.x) SP 2-től kezdve használja a 8079 nyomkövetési zászlót, hogy lehetővé tegye az SQL Server számára az automatikus soft-NUMA használatát. Az SQL Server 2016 -tól kezdve (13.x) ezt a viselkedést a motor vezérli, és a 8079 nyomkövetési jelzőnek nincs hatása. További információ: Nyomkövetési jelzők beállítása a DBCC TRACEON használatával.

Kézi soft-NUMA

Ha manuálisan szeretné konfigurálni az SQL Servert a soft-NUMA használatára, tiltsa le az automatikus soft-NUMA-t, és szerkessze a beállításjegyzéket csomópontkonfigurációs affinitási maszk hozzáadásához. Ennek a módszernek a használatakor a soft-NUMA maszk bináris, DWORD (hexadecimális vagy decimális) vagy QWORD (hexadecimális vagy decimális) beállításjegyzék-bejegyzésként is megadható. Ha az első 32 processzornál többet szeretne konfigurálni, használjon QWORD vagy BINÁRIS beállításjegyzék-értékeket (A QWORD-értékek nem használhatók az SQL Server 2012 előtt (11.x)). A beállításjegyzék módosítása után újra kell indítania az adatbázismotort a soft-NUMA konfiguráció érvénybe lépéséhez.

Borravaló

A processzorok számozása a 0-val kezdődik.

Figyelmeztetés

A beállításjegyzék helytelen szerkesztése súlyosan károsíthatja a rendszert. A beállításjegyzék módosítása előtt javasoljuk, hogy készítsen biztonsági másolatot a számítógépen lévő összes értékes adatról.

Vegyük példaként egy nyolc processzorral rendelkező számítógépet, amely nem rendelkezik hardveres NUMA-val. Három soft-NUMA-csomópont van konfigurálva. Az A adatbázismotor-példány 0 és 3 processzor használatára van konfigurálva. Az adatbázismotor egy második példánya van telepítve, és konfigurálva van a 4–7 cpu-k használatára. A példa vizuálisan a következőképpen jeleníthető meg:

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

Az A példány, amely jelentős I/O-t tapasztal, most két I/O szálat és egy lusta írószálat tartalmaz. A processzorigényes műveleteket végző B példánynak csak egy I/O szála és egy lusta írószála van. A példányokhoz eltérő mennyiségű memória rendelhető, de a hardveres NUMA-kkal ellentétben mindkettő ugyanabból az operációsrendszer-memóriablokkból kap memóriát, és nincs memória-processzor affinitás.

A lusta író szál a fizikai NUMA memóriacsomópontok SQLOS nézetéhez van kötve. Ezért a hardver által bemutatott fizikai NUMA-csomópontok számával egyezően, ennyi lusta írószálat hoznak létre. További információkért lásd: Hogyan működik: Soft NUMA, I/O Completion Thread, Lazy Writer Workers and Memory Nodes.

Jegyzet

A Soft-NUMA beállításkulcsok nem lesznek másolva az SQL Server egy példányának frissítésekésekor.

A CPU-affinitás maszkjának beállítása

Futtassa az alábbi utasítást az A példányon, hogy a CPU 0, 1, 2 és 3 használatát beállítsa a CPU-affinitás maszkjának beállításával:

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

Futtassa a következő utasítást a B példányon a 4., 5., 6. és 7. CPU-k használatára való konfigurálásához a CPU affinitási maszk beállításával:

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

Soft-NUMA-csomópontok leképezése processzorokra

A Beállításszerkesztő program (regedit.exe) használatával adja hozzá a következő beállításkulcsokat a soft-NUMA csomópont 0 és 1 processzorra való leképezéséhez, a soft-NUMA csomópont 1-et a 2. és a 3. cpu-hoz, a soft-NUMA csomópont 2-et pedig a 4., 5., 6. és 7. cpu-khoz.

Borravaló

A 60 és 63 processzorok megadásához használjon F000000000000000 QWORD-értéket vagy 1111000000000000000000000000000000000000000000000000000000000000BINÁRIS értéket.

Az alábbi példában tegyük fel, hogy rendelkezik egy DL580 G9-kiszolgálóval, amely szoftvercsatornánként 18 maggal rendelkezik (négy szoftvercsatornában), és mindegyik szoftvercsatorna a saját K-csoportjában található. Egy esetleg létrehozott soft-NUMA-konfiguráció a következő példához hasonlóan nézne ki: csomópontonként hat mag, csoportonként három csomópont, négy csoport.

Példa több K-csoporttal rendelkező SQL Server-példányra Típus Érték neve Értékadatok
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

Metaadatok

Az alábbi DMV-k segítségével megtekintheti a soft-NUMA aktuális állapotát és konfigurációját.

Bár az automatikus soft-NUMA futóértékét sp_configure használatával tekintheti meg, az értékét nem módosíthatja a használatával sp_configure. Az argumentummal az ALTER SERVER CONFIGURATION utasítást SET SOFTNUMA kell használnia.