Udostępnij za pośrednictwem


Limity pojemności obliczeniowej według wersji programu SQL Server

Dotyczy:programu SQL Server

W tym artykule omówiono limity wydajności obliczeniowej dla wersji programu SQL Server oraz różnice w środowiskach fizycznych i zwirtualizowanych z równoczesnymi procesorami wielowątkowymi (SMT). Na procesorach Intel SMT jest nazywany Hyper-Threadingiem.

Przegląd

Diagram przedstawiający mapowania do obliczania limitów pojemności.

W tej tabeli opisano notacje na powyższym diagramie:

Wartość Opis
0..1 Zero lub jeden
1 Dokładnie jeden
1..* Co najmniej jeden
0..* Zero lub więcej
1..2 Jeden lub dwa

Aby dokładniej opracować:

  • Maszyna wirtualna ma co najmniej jeden procesor wirtualny.
  • Co najmniej jeden procesor wirtualny jest przydzielany do dokładnie jednej maszyny wirtualnej.
  • Zero lub jeden procesor wirtualny jest mapowany na zero lub więcej procesorów logicznych. Gdy mapowanie procesorów wirtualnych na procesory logiczne jest następujące:
    • Jeden do zera: reprezentuje niezwiązany procesor logiczny, który nie jest używany przez systemy operacyjne gościa.
    • Jeden do wielu: reprezentuje przeciążenie zasobów.
    • Zero do wielu: reprezentuje brak maszyny wirtualnej w systemie hosta. Dlatego maszyny wirtualne nie używają żadnych procesorów logicznych.
  • Gniazdo może być mapowane na zero lub więcej rdzeni. Gdy mapowanie gniazda na rdzeń jest następujące:
    • Wynik jeden do zera oznacza puste gniazdo. Nie zainstalowano mikroukładu.
    • Jeden do jednego: reprezentuje jednordzeniowy układ zainstalowany w gnieździe. To mapowanie jest rzadkie obecnie.
    • Jeden do wielu: oznacza układ wielordzeniowy zainstalowany w gnieździe. Typowe wartości to 2, 4 i 8.
  • Rdzeń jest mapowany na jeden lub dwa procesory logiczne. Gdy mapowanie rdzeni odnosi się do procesorów logicznych:
    • Jeden do jednego: SMT jest wyłączony.
    • Jeden do dwóch: SMT jest włączony.

Następujące definicje dotyczą terminów używanych w tym artykule:

  • Wątek lub procesor logiczny to jedno logiczne urządzenie obliczeniowe z perspektywy SQL Server, systemu operacyjnego, aplikacji lub sterownika.

  • Rdzeniem jest jednostka procesora. Może składać się z co najmniej jednego procesora logicznego.

  • Procesor fizyczny może składać się z co najmniej jednego rdzenia. Procesor fizyczny jest taki sam jak pakiet procesora lub gniazdo.

Ogranicz liczbę rdzeni logicznych na węzeł NUMA do 64

Mogą wystąpić problemy, takie jak zrzuty stosu na serwerach z więcej niż 64 procesorami logicznymi w węźle NUMA. Konfiguracja systemu BIOS lub oprogramowania układowego może zmniejszyć liczbę rdzeni logicznych przedstawionych w systemie operacyjnym do maksymalnie 64 procesorów logicznych na węzeł NUMA.

Ostrożność

Aktualizacja zbiorcza 11 programu SQL Server 2022 (16.x) wprowadziła zmianę przełamującą kompatybilność, w której aparat bazy danych nie uruchamia się, jeśli wykryje więcej niż 64 rdzenie logiczne na węzeł NUMA.

Począwszy od programu SQL Server 2022 (16.x) Aktualizacja zbiorcza 15, konfiguracja generuje ostrzeżenie, że ta konfiguracja nie jest obsługiwana i spowoduje zatrzymanie i wyłączenie usługi Silnika bazy danych. Ostrzeżenie jest również zawarte w dziennikach instalacji.

Liczbę rdzeni logicznych na węzeł NUMA można zmniejszyć w maszynie wirtualnej platformy Azure, wyłączając protokół SMT. W przypadku bez systemu operacyjnego wystąpień programu SQL Server można zmniejszyć liczbę rdzeni logicznych za pomocą opcji klastrowania sub-NUMA (SNC) lub węzłów na gniazdo (NPS).

Wyłączanie funkcji SMT na maszynie wirtualnej platformy Azure

Program SQL Server ma obsługiwany limit 64 rdzeni logicznych na węzeł NUMA. W niektórych przypadkach maszyna wirtualna z serii Azure Mv3 może przekroczyć ten limit, co uniemożliwia uruchamianie programu SQL Server lub umożliwia uruchamianie z obniżoną wydajnością. Aby wyłączyć protokół SMT, wprowadź następujące zmiany przy użyciu programu PowerShell i edytora rejestru (reg.exe). Pamiętaj, aby utworzyć kopię zapasową rejestru przed jego edycją.

  1. Sprawdź liczbę rdzeni logicznych. Protokół SMT jest włączony, jeśli stosunek wynosi 2:1 (liczba rdzeni logicznych jest dwukrotnie większa niż liczba rdzeni).

    Get-CimInstance -ClassName Win32_Processor | Select-Object -Property "NumberOfCores", "NumberOfLogicalProcessors"
    
  2. Wyłącz protokół SMT z następującymi dwoma zmianami rejestru, a następnie uruchom ponownie maszynę wirtualną.

    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride /t REG_DWORD /d 8264 /f
    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverrideMask /t REG_DWORD /d 3 /f
    
  3. Ponownie sprawdź liczbę rdzeni logicznych. Liczba rdzeni logicznych powinna być zgodna z liczbą rdzeni.

    Get-CimInstance -ClassName Win32_Processor | Select-Object -Property "NumberOfCores", "NumberOfLogicalProcessors"
    

Zmniejszanie liczby rdzeni logicznych w wystąpieniach bez systemu operacyjnego

W poniższych sekcjach opisano, jak zmniejszyć liczbę rdzeni logicznych dla wystąpień bez systemu operacyjnego programu SQL Server.

Procesor Intel Xeon

Na procesorach Intel Xeon trzeciej, czwartej i piątej generacji można włączyć funkcję klastrowania sub-NUMA (SNC), wcześniej nazywaną Cluster-on-Die (CoD), co powoduje powstanie dwóch domen NUMA wewnątrz jednego fizycznego gniazda.

Notatka

Procesory Intel Xeon szóstej generacji mają domyślnie włączone klastrowanie sub-NUMA (SNC2 lub SNC3). W niektórych modelach procesora domyślna konfiguracja SNC może spowodować ponad 64 procesory logiczne na jeden węzeł NUMA. Należy aktywować funkcję wirtualnej architektury NUMA firmy Intel w systemie BIOS/oprogramowaniu układowym wraz z SNC2 lub SNC3 dla tych modeli procesora.

Ustawienie konfiguracji Opis
SNC wyłączone 1 Wyłącza klastrowanie podrzędne NUMA.
Włączono protokół SNC2 2 Przedstawia dwa węzły NUMA na gniazdo.
Włączono protokół SNC3 2 Przedstawia trzy węzły NUMA na gniazdo.
Włączona funkcja Intel VirtualNuma 3 Tworzy wiele węzłów wirtualnych w jednym fizycznym węźle NUMA.

1 Domyślne dla procesorów Intel Xeon trzeciej, czwartej i piątej generacji.

2 domyślne dla procesorów Intel Xeon szóstej generacji i nowszych.

3 dostępne tylko na procesorach Intel Xeon szóstej generacji i nowszych. Użyj tego ustawienia dla procesorów o wysokiej liczbie rdzeni, gdzie liczba procesorów logicznych na węzeł NUMA przekracza 64 podczas korzystania z wartości domyślnych SNC.

Procesor AMD

W procesorów AMDmożna włączyć różne opcje węzłów na gniazdo (NPS).

Ustawienie konfiguracji Opis
NPS0 W systemie z dwoma gniazdami architektura NUMA przedstawia się jako jeden pojedynczy węzeł, z kanałami pamięci przeplatającymi się przez cały węzeł.
NPS1 (ustawienie domyślne) Ta konfiguracja przedstawia jeden węzeł NUMA na gniazdo.
NPS2 Ta konfiguracja przedstawia dwa węzły NUMA na gniazdo, podobne do SNC.
NPS4 Ta konfiguracja przedstawia cztery węzły NUMA na gniazdo.

Uwagi

Systemy z więcej niż jednym procesorem fizycznym lub systemami z procesorami fizycznymi, które mają wiele rdzeni i/lub SMT, umożliwiają systemowi operacyjnemu wykonywanie wielu zadań jednocześnie. Każdy wątek wykonywany funkcjonuje jako procesor logiczny. Jeśli na przykład komputer ma dwa czterordzeniowe procesory z włączoną funkcją SMT i dwoma wątkami na rdzeń, masz 16 procesorów logicznych: 2 procesory x 4 rdzenie na procesor x 2 wątki na rdzeń. Warto zauważyć, że:

  • Pojemność obliczeniowa procesora logicznego z jednego wątku rdzenia SMT jest mniejsza niż pojemność obliczeniowa procesora logicznego z tego samego rdzenia z wyłączoną funkcją SMT.

  • Pojemność obliczeniowa dwóch procesorów logicznych w rdzeniu SMT jest większa niż pojemność obliczeniowa tego samego rdzenia z wyłączoną funkcją SMT.

Każda wersja programu SQL Server ma dwa limity pojemności obliczeniowej:

  • Maksymalna liczba gniazd (procesorów fizycznych lub pakietów procesora)

  • Maksymalna liczba rdzeni zgłoszonych przez system operacyjny

Te limity dotyczą pojedynczego wystąpienia programu SQL Server. Reprezentują one maksymalną pojemność obliczeniową używaną przez pojedyncze wystąpienie. Nie narzucają ograniczeń na serwer, na którym można wdrożyć instancję. W rzeczywistości wdrażanie wielu wystąpień programu SQL Server na tym samym serwerze fizycznym jest wydajnym sposobem korzystania z pojemności obliczeniowej serwera fizycznego z większą liczbie gniazd i/lub rdzeni niż dozwolone limity pojemności.

W poniższej tabeli określono limity wydajności obliczeniowej dla pojedynczego wystąpienia poszczególnych wersji programu SQL Server:

Edycja SQL Server Maksymalna moc obliczeniowa dla pojedynczego wystąpienia (aparat bazy danych programu SQL Server) Maksymalna pojemność obliczeniowa dla pojedynczego wystąpienia (AS, RS)
Wersja Enterprise: licencjonowanie oparte na rdzeniach 1 Maksymalny rozmiar systemu operacyjnego Maksymalny rozmiar systemu operacyjnego
Programista Maksymalny rozmiar systemu operacyjnego Maksymalny rozmiar systemu operacyjnego
Norma Ograniczone do mniejszych z 4 gniazd lub 24 rdzeni Ograniczone do mniejszych z 4 gniazd lub 24 rdzeni
Wyrazić Ograniczone do 1 gniazda lub maksymalnie 4 rdzeni Ograniczone do mniejszego z 1 gniazda lub 4 rdzeni

1 Edycja Enterprise z licencjonowaniem Server + Client Access License (CAL) jest ograniczona do 20 rdzeni na każdą instancję SQL Server. (To licencjonowanie nie jest dostępne dla nowych umów). W modelu licencjonowania serwera opartego na rdzeniu nie ma żadnych ograniczeń.

W środowisku zwirtualizowanym limit pojemności obliczeniowej zależy od liczby procesorów logicznych, a nie rdzeni. Przyczyną jest to, że architektura procesora nie jest widoczna dla aplikacji gościa.

Na przykład serwer z czterema gniazdami wyposażonymi w procesory czterordzeniowe i możliwość włączenia dwóch wątków SMT na rdzeń, zawiera 32 procesory logiczne z włączonym SMT. Zawiera jednak tylko 16 procesorów logicznych z wyłączoną funkcją SMT. Te procesory logiczne można mapować na maszyny wirtualne na serwerze. Obciążenie obliczeniowe maszyn wirtualnych przypisane do tego procesora logicznego jest odwzorowane na wątek wykonawczy na fizycznym procesorze serwera hosta.

Możesz wyłączyć protokół SMT, gdy wydajność każdego procesora wirtualnego jest ważna. Protokół SMT można skonfigurować przy użyciu ustawienia systemu BIOS dla procesora podczas instalacji systemu BIOS, ale zazwyczaj jest to operacja o zakresie serwera, która ma wpływ na wszystkie obciążenia uruchomione na serwerze. Możesz rozważyć oddzielenie obciążeń działających w środowiskach zwirtualizowanych, od obciążeń, które skorzystają z zwiększenia wydajności smT w fizycznym środowisku systemu operacyjnego.

Uzyskiwanie pomocy

Współtworzenie dokumentacji SQL

Czy wiesz, że możesz samodzielnie edytować zawartość SQL? Jeśli to zrobisz, nie tylko pomożesz ulepszyć naszą dokumentację, ale także otrzymasz uznanie jako współautor strony.

Aby uzyskać więcej informacji, zobacz Jak współtworzyć dokumentację programu SQL Server