Bagikan melalui


Soft-NUMA (SQL Server)

Berlaku untuk: SQL Server

Prosesor modern memiliki beberapa inti per soket. Setiap soket diwakili, biasanya, sebagai satu simpul NUMA. Mesin database SQL Server mempartisi berbagai struktur internal dan rangkaian layanan partisi per simpul NUMA. Dengan prosesor yang berisi 10 inti atau lebih per soket, menggunakan NUMA perangkat lunak untuk membagi node NUMA perangkat keras umumnya meningkatkan skalabilitas dan performa. Sebelum SQL Server 2014 (12.x) SP2, NUMA berbasis perangkat lunak (soft-NUMA) mengharuskan Anda mengedit registri untuk menambahkan masker afinitas konfigurasi node, dan dikonfigurasi di tingkat host, bukan per instans. Dimulai dengan SQL Server 2014 (12.x) SP2 dan SQL Server 2016 (13.x), soft-NUMA dikonfigurasi secara otomatis di tingkat instans database saat layanan Mesin Database SQL Server dimulai.

Prosesor hot-add tidak didukung oleh soft-NUMA.

Soft-NUMA otomatis

Dengan SQL Server 2016 (13.x), setiap kali Mesin Database SQL Server mendeteksi lebih dari delapan inti fisik per node NUMA atau soket saat startup, node SOFT-NUMA dibuat secara otomatis secara default. Core prosesor multithreading (SMT) simultan tidak dibedakan saat menghitung inti fisik dalam simpul. Ketika jumlah inti fisik yang terdeteksi lebih dari delapan per soket, Mesin Database SQL Server membuat node NUMA lunak yang idealnya berisi delapan inti, tetapi dapat turun hingga lima atau hingga sembilan inti logis per simpul. Ukuran simpul perangkat keras dapat dibatasi oleh masker afinitas CPU. Jumlah simpul NUMA tidak pernah melebihi jumlah maksimum simpul NUMA yang didukung.

Anda dapat menonaktifkan atau mengaktifkan kembali soft-NUMA menggunakan pernyataan ALTER SERVER CONFIGURATION (Transact-SQL) dengan SET SOFTNUMA argumen . Mengubah nilai pengaturan ini mengharuskan mulai ulang mesin database berlaku.

Gambar di bawah ini menunjukkan jenis informasi mengenai soft-NUMA yang Anda lihat di log kesalahan SQL Server, ketika SQL Server mendeteksi node NUMA perangkat keras dengan lebih dari delapan inti fisik per setiap simpul atau soket.

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.

Catatan

Dimulai dengan SQL Server 2014 (12.x) SP 2, gunakan Trace Flag 8079 untuk memungkinkan SQL Server menggunakan Soft-NUMA Otomatis. Dimulai dengan SQL Server 2016 (13.x) perilaku ini dikendalikan oleh mesin dan bendera pelacakan 8079 tidak berpengaruh. Untuk informasi selengkapnya, lihat DBCC TRACEON - Lacak Bendera.

Soft-NUMA manual

Untuk mengonfigurasi SQL Server secara manual untuk menggunakan soft-NUMA, nonaktifkan soft-NUMA otomatis, dan edit registri untuk menambahkan masker afinitas konfigurasi node. Saat menggunakan metode ini, masker soft-NUMA dapat dinyatakan sebagai entri registri biner, DWORD (heksadesimal atau desimal), atau QWORD (heksadesimal atau desimal). Untuk mengonfigurasi lebih dari 32 CPU pertama, gunakan nilai registri QWORD atau BINARY (nilai QWORD tidak dapat digunakan sebelum SQL Server 2012 (11.x)). Setelah memodifikasi registri, Anda harus memulai ulang Mesin Database agar konfigurasi soft-NUMA berlaku.

Tip

CPU diberi nomor dimulai dengan 0.

Peringatan

Salah mengedit registri bisa sangat merusak sistem Anda. Sebelum membuat perubahan pada registri, kami sarankan Anda mencadangkan data bernilai apa pun di komputer.

Pertimbangkan contoh komputer dengan delapan CPU yang tidak memiliki NUMA perangkat keras. Tiga node soft-NUMA dikonfigurasi.
Instans Mesin Database A dikonfigurasi untuk menggunakan CPU 0 hingga 3. Instans kedua Mesin Database diinstal dan dikonfigurasi untuk menggunakan CPU 4 hingga 7. Contoh dapat direpresentasikan secara visual sebagai:

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

Instans A, yang mengalami I/O signifikan, sekarang memiliki dua utas I/O dan satu utas penulis malas. Instans B, yang melakukan operasi intensif prosesor, hanya memiliki satu utas I/O dan satu utas penulis malas. Jumlah memori yang berbeda dapat ditetapkan ke instans, tetapi tidak seperti NUMA perangkat keras, keduanya menerima memori dari blok memori sistem operasi yang sama, dan tidak ada afinitas memori-ke-prosesor.

Utas penulis malas terikat dengan tampilan SQLOS dari simpul memori NUMA fisik. Oleh karena itu, apa pun perangkat keras yang disajikan sebagai jumlah simpul NUMA fisik, ini adalah jumlah utas penulis malas yang dibuat. Untuk informasi selengkapnya, lihat Cara Kerjanya: Numa Lunak, Utas Penyelesaian I/O, Pekerja Penulis Malas, dan Node Memori.

Catatan

Kunci registri Soft-NUMA tidak disalin saat Anda meningkatkan instans SQL Server.

Mengatur masker afinitas CPU

Jalankan pernyataan berikut pada instans A untuk mengonfigurasinya untuk menggunakan CPU 0, 1, 2, dan 3 dengan mengatur masker afinitas CPU:

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

Jalankan pernyataan berikut pada instans B untuk mengonfigurasinya agar menggunakan CPU 4, 5, 6, dan 7 dengan mengatur masker afinitas CPU:

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

Memetakan node numa lunak ke CPU

Menggunakan program Editor Registri (regedit.exe), tambahkan kunci registri berikut untuk memetakan node numa lunak 0 ke CPU 0 dan 1, node numa lunak 1 ke CPU 2 dan 3, dan node soft-NUMA 2 ke CPU 4, 5, 6, dan 7.

Tip

Untuk menentukan CPU 60 hingga 63, gunakan nilai F000000000000000 QWORD atau nilai BINER .1111000000000000000000000000000000000000000000000000000000000000

Dalam contoh berikut, asumsikan Anda memiliki server DL580 G9, dengan 18 core per soket (dalam empat soket), dan setiap soket berada dalam grup K sendiri. Konfigurasi soft-NUMA yang mungkin Anda buat akan terlihat seperti contoh berikut: enam inti per simpul, tiga simpul per grup, empat grup.

Contoh untuk instans SQL Server dengan beberapa K-Group Jenis Nama nilai Data Nilai
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

Metadata

Anda dapat menggunakan DMV berikut untuk melihat status dan konfigurasi soft-NUMA saat ini.

Meskipun Anda dapat melihat nilai yang berjalan untuk soft-NUMA otomatis menggunakan sp_configure (Transact-SQL), Anda tidak dapat mengubah nilainya menggunakan sp_configure. Anda harus menggunakan pernyataan ALTER SERVER CONFIGURATION (Transact-SQL) dengan SET SOFTNUMA argumen .