Soft-NUMA (SQL Server)

Şunlar için geçerlidir: SQL Server

Modern işlemciler yuva başına birden çok çekirdeğe sahiptir. Her yuva genellikle tek bir NUMA düğümü olarak temsil edilir. SQL Server veritabanı altyapısı, NUMA düğümü başına çeşitli iç yapıları bölümler ve hizmet iş parçacıklarını bölümler. Yuva başına 10 veya daha fazla çekirdek içeren işlemcilerde, donanım NUMA düğümlerini bölmek için yazılım NUMA'sını kullanmak genellikle ölçeklenebilirliği ve performansı artırır. SQL Server 2014 (12.x) SP2'den önce yazılım tabanlı NUMA (soft-NUMA), düğüm yapılandırma benzimi maskesi eklemek için kayıt defterini düzenlemenizi gerektiriyordu ve örnek başına değil konak düzeyinde yapılandırıldı. SQL Server 2014 (12.x) SP2 ve SQL Server 2016 (13.x) ile başlayarak, SQL Server Veritabanı Altyapısı hizmeti başlatıldığında soft-NUMA veritabanı örneği düzeyinde otomatik olarak yapılandırılır.

Sık erişimli ekleme işlemcileri soft-NUMA tarafından desteklenmez.

Otomatik soft-NUMA

SQL Server 2016 (13.x) ile, SQL Server Veritabanı Altyapısı başlangıçta NUMA düğümü veya yuva başına sekizden fazla fiziksel çekirdek algılasa, geçici NUMA düğümleri varsayılan olarak otomatik olarak oluşturulur. Bir düğümde fiziksel çekirdeklerin sayımında, eşzamanlı çoklu iş parçacığına (SMT) sahip işlemci çekirdekleri birbirinden ayırt edilmez. Algılanan fiziksel çekirdek sayısı yuva başına sekizden fazla olduğunda, SQL Server Veritabanı Altyapısı ideal olarak sekiz çekirdek içeren, ancak düğüm başına dört veya sekize kadar fiziksel çekirdeğe inebilen geçici NUMA düğümleri oluşturur. Donanım düğümünün boyutu CPU benzenşimi maskesiyle sınırlanabilir. NUMA düğümlerinin sayısı hiçbir zaman desteklenen NUMA düğüm sayısı üst sınırını aşmaz.

SET SOFTNUMA bağımsız değişkeniyle ALTER SERVER CONFIGURATION deyimini kullanarak soft-NUMA'yı devre dışı bırakabilir veya yeniden etkinleştirebilirsiniz. Bu ayarın değerini değiştirmek için veritabanı altyapısının yeniden başlatılması gerekir.

Aşağıdaki şekil, SQL Server her bir düğüm ya da yuva başına sekizden fazla fiziksel çekirdeğe sahip donanım NUMA düğümlerini algıladığında, SQL Server hata günlüğünde yazılımsal NUMA ile ilgili gördüğünüz bilgi türünü gösterir.

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.

Uyarı

SQL Server 2014 (12.x) SP 2'den başlayarak, SQL Server'ın Otomatik geçici NUMA kullanmasına izin vermek için izleme bayrağı 8079'u kullanın. SQL Server 2016(13.x) ile başlayarak bu davranış altyapı tarafından denetlenir ve 8079 izleme bayrağının hiçbir etkisi yoktur. Daha fazla bilgi için bkz. DBCC TRACEON ile izleme bayrakları ayarlama.

El ile yumuşak NUMA

SQL Server'ı geçici NUMA kullanacak şekilde el ile yapılandırmak için, otomatik geçici NUMA'yı devre dışı bırakın ve kayıt defterini düzenleyerek düğüm yapılandırma benzimi maskesi ekleyin. Bu yöntem kullanıldığında, soft-NUMA maskesi ikili değer, DWORD (onaltılık veya ondalık) ya da QWORD (onaltılık veya ondalık) kayıt defteri girdisi olarak belirtilebilir. İlk 32 CPU'dan daha fazlasını yapılandırmak için QWORD veya BINARY kayıt defteri değerlerini kullanın (QWORD değerleri SQL Server 2012'den (11.x) önce kullanılamaz). Kayıt defterini değiştirdikten sonra soft-NUMA yapılandırmasının etkili olması için Veritabanı Altyapısı'nı yeniden başlatmanız gerekir.

Tavsiye

CPU'lar, 0 ile başlayarak numaralandırılır.

Uyarı

Kayıt defterini yanlış düzenlemek sisteminize ciddi zararlar verebilir. Kayıt defterinde değişiklik yapmadan önce, bilgisayardaki değerli verileri yedeklemenizi öneririz.

Donanım NUMA'sı olmayan sekiz CPU'ya sahip bir bilgisayar örneğini düşünün. Üç geçici NUMA düğümü yapılandırılır. Veritabanı Altyapısı örneği A, CPU'ları 0 ile 3 arasında kullanacak şekilde yapılandırılmıştır. Veritabanı Altyapısı'nın ikinci bir örneği yüklenir ve 4 ile 7 arasında CPU'ları kullanacak şekilde yapılandırılır. Örnek görsel olarak şu şekilde gösterilebilir:

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

Yoğun G/Ç işlemleriyle karşılaşan A örneğinde artık iki G/Ç iş parçacığı ve bir geç yazıcı iş parçacığı bulunuyor. İşlemciyi yoğun kullanan işlemleri gerçekleştiren B örneği, yalnızca bir G/Ç iş parçacığına ve bir gecikmeli yazıcı iş parçacığına sahiptir. Örneklere farklı miktarlarda bellek atanabilir, ancak donanım NUMA’dan farklı olarak bunların tümü belleği aynı işletim sistemi bellek bloğundan alır ve bellek‑işlemci yakınlığı yoktur.

Gecikmeli yazıcı iş parçacığı, fiziksel NUMA bellek düğümlerinin SQLOS görünümüne bağlıdır. Bu nedenle, donanımın fiziksel NUMA düğümü sayısı olarak sunduğu sayı neyse, oluşturulan gecikmeli yazıcı iş parçacıklarının sayısı da odur. Daha fazla bilgi için Nasıl Çalışır: Yumuşak NUMA, G/Ç Tamamlama İş Parçacığı, Tembel Yazıcı İş Parçacıkları ve Bellek Düğümleri konusuna bakın.

Uyarı

Bir SQL Server örneğini yükselttiğiniz zaman Soft-NUMA kayıt defteri anahtarları kopyalanmaz.

CPU benzenşimi maskesini ayarlama

CPU benzenşimi maskesini ayarlayarak 0, 1, 2 ve 3 CPU'larını kullanacak şekilde yapılandırmak için A örneğinde aşağıdaki deyimi çalıştırın:

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

CPU benzenşimi maskesini ayarlayarak B örneğinde aşağıdaki deyimi çalıştırarak CPU 4, 5, 6 ve 7'yi kullanacak şekilde yapılandırın:

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

Yumuşak NUMA düğümlerini CPU'lara eşleme

Kayıt Defteri Düzenleyicisi programını ()regedit.exe kullanarak, soft-NUMA düğümü 0'ı CPU 0 ve 1'e, soft-NUMA düğüm 1'i CPU 2 ve 3'e ve soft-NUMA düğümü 2'yi de 4, 5, 6 ve 7 CPU'larına eşlemek için aşağıdaki kayıt defteri anahtarlarını ekleyin.

Tavsiye

CPU'ları 60 ile 63 arasında belirtmek için QWORD değerini F000000000000000 veya binary değerini 1111000000000000000000000000000000000000000000000000000000000000kullanın.

Aşağıdaki örnekte, yuva başına 18 çekirdekli (dört yuvada) bir DL580 G9 sunucunuz olduğunu ve her yuvanın kendi K grubunda olduğunu varsayalım. Oluşturabileceğiniz geçici NUMA yapılandırması şu örneğe benzer olacaktır: düğüm başına altı çekirdek, grup başına üç düğüm, dört grup.

Birden çok K Grubu olan bir SQL Server örneği örneği Türü Değerin adı Değer verileri
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node0 DWORD - 32 bitlik sayı CPUMask 0x3f
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node0 DWORD - 32 bitlik sayı Group 0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node1 DWORD - 32 bitlik sayı CPUMask 0x0fc0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node1 DWORD - 32 bitlik sayı Group 0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node2 DWORD - 32 bitlik sayı CPUMask 0x3f000
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node2 DWORD - 32 bitlik sayı Group 0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node3 DWORD - 32 bitlik sayı CPUMask 0x3f
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node3 DWORD - 32 bitlik sayı Group 1
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node4 DWORD - 32 bitlik sayı CPUMask 0x0fc0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node4 DWORD - 32 bitlik sayı Group 1
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node5 DWORD - 32 bitlik sayı CPUMask 0x3f000
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node5 DWORD - 32 bitlik sayı Group 1
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node6 DWORD - 32 bitlik sayı CPUMask 0x3f
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node6 DWORD - 32 bitlik sayı Group 2
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node7 DWORD - 32 bitlik sayı CPUMask 0x0fc0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node7 DWORD - 32 bitlik sayı Group 2
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node8 DWORD - 32 bitlik sayı CPUMask 0x3f000
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node8 DWORD - 32 bitlik sayı Group 2
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node9 DWORD - 32 bitlik sayı CPUMask 0x3f
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node9 DWORD - 32 bitlik sayı Group 3
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node10 DWORD - 32 bitlik sayı CPUMask 0x0fc0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node10 DWORD - 32 bitlik sayı Group 3
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node11 DWORD - 32 bitlik sayı CPUMask 0x3f000
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node11 DWORD - 32 bitlik sayı Group 3

Meta veriler

Soft-NUMA'nın mevcut durumunu ve yapılandırmasını görüntülemek için aşağıdaki DMV'leri kullanabilirsiniz.

sp_configure kullanarak otomatik soft-NUMA için geçerli değeri görüntüleyebilirsiniz, ancak sp_configure kullanarak bu değeri değiştiremezsiniz. SET SOFTNUMA argümanıyla ALTER SERVER CONFIGURATION ifadesini kullanmanız gerekir.