Aracılığıyla paylaş


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 geçici 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. Aynı anda çok iş parçacıklı (SMT) işlemci çekirdekleri, bir düğümdeki fiziksel çekirdekler sayılırken ayırt edilir. 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.

bağımsız değişkeniyle SET SOFTNUMA 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 şekilde, SQL Server her düğüm veya yuva başına sekizden fazla fiziksel çekirdeğe sahip donanım NUMA düğümlerini algıladığında SQL Server hata günlüğünde gördüğünüz geçici NUMA ile ilgili bilgi türü gösterilmektedir.

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ılırken, soft-NUMA maskesi ikili, DWORD (onaltılık veya ondalık) veya 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 ile 0baş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>

Önemli G/Ç deneyimine sahip olan A örneği artık iki G/Ç iş parçacığına ve bir gecikmeli yazıcı iş parçacığına sahip. İşlemci yoğunluklu işlemler 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ı miktarda bellek atanabilir, ancak donanım NUMA'sından farklı olarak her ikisi de aynı işletim sistemi bellek bloğundan bellek alır ve bellekten işlemciye benzeme 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 fiziksel NUMA düğümlerinin sayısı olarak ne olursa olsun, oluşturulan gecikmeli yazıcı iş parçacıklarının sayısıdır. Daha fazla bilgi için bkz . Nasıl Çalışır: Yumuşak NUMA, G/Ç Tamamlama İş Parçacığı, Gecikmeli Yazıcı Çalışanları ve Bellek Düğümleri.

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

Geçici NUMA'nın geçerli 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 çalışan değeri görüntüleyebilirsiniz ancak kullanarak sp_configuredeğerini değiştiremezsiniz. BAĞıMSıZ değişkeniyle ALTER SERVER CONFIGURATION deyimini SET SOFTNUMA kullanmanız gerekir.