Partager via


Limites de capacité de calcul des éditions SQL Server

S'applique à : SQL Server

Cet article traite des limites de capacité de calcul des éditions de SQL Server et de leurs différences dans les environnements physiques et virtualisés avec des processeurs multithreading simultanés (SMT). Sur les processeurs Intel, SMT est appelé Hyper-Threading.

Vue d’ensemble

Diagramme montrant les mappages pour calculer les limites de capacité.

Ce tableau décrit les notations dans le diagramme précédent :

Valeur Description
0..1 Zéro ou un
1 Un seul
1..* Un ou plus
0..* Zéro ou plus
1..2 Une ou deux

Pour approfondir :

  • Une machine virtuelle compte un ou plusieurs processeurs virtuels.
  • Un ou plusieurs processeurs virtuels sont alloués à un seul ordinateur virtuel.
  • Zéro ou un processeur virtuel est mappé à zéro ou un processeur logique. Quand le mappage des processeurs virtuels à un processeur logique est :
    • Un à zéro : il représente un processeur logique indépendant non utilisé par les systèmes d’exploitation invités.
    • Un à plusieurs : il représente une survalidation (overcommit).
    • Zéro à plusieurs : il représente l’absence de machine virtuelle sur le système hôte. Donc, les machines virtuelles n’utilisent pas de processeurs logiques.
  • Un socket est mappé à zéro ou plusieurs noyaux. Quand le mappage de socket au cœur est :
    • Un à zéro : il représente un socket vide. Aucun processeur n’est installé.
    • Un à un : il représente un processeur monocœur installé dans le socket. Ce mappage est rare de nos jours.
    • Un à plusieurs : il représente un processeur multicœur installé dans le socket. Les valeurs sont habituellement 2, 4 et 8.
  • Un noyau est mappé à un ou deux processeurs logiques. Quand le mappage des cœurs à un processeur logique est :
    • Un à un : SMT est désactivé.
    • Un à deux : SMT est activé.

Les définitions suivantes s'appliquent aux termes utilisés dans cet article :

  • Un thread ou un processeur logique est un moteur de calcul logique du point de vue de SQL Server, du système d'exploitation, d’une application ou d’un pilote.

  • Un cœur est une unité de processeur. Il peut être constitué d’un ou plusieurs processeurs logiques.

  • Un processeur physique peut comprendre un ou plusieurs noyaux. Un processeur physique est identique à un package de processeurs ou à un socket.

Limiter le nombre de cœurs logiques par nœud NUMA à 64

Vous pouvez rencontrer des problèmes comme des vidages de pile sur les serveurs avec plus de 64 processeurs logiques par nœud NUMA. Une configuration du BIOS ou du microprogramme peut réduire le nombre de cœurs logiques présentés au système d’exploitation à un maximum de 64 processeurs logiques par nœud NUMA.

Attention

SQL Server 2022 (16.x) avec la mise à jour cumulative 11 a introduit un changement cassant, où le moteur de base de données ne démarre pas s’il détecte plus de 64 cœurs logiques par nœud NUMA.

À partir de la mise à jour cumulative 15 de SQL Server 2022 (16.x), le programme d’installation génère un avertissement indiquant que cette configuration n’est pas prise en charge et qu’elle entraînera l’arrêt et la désactivation du service Moteur de base de données. L’avertissement est également inclus dans les journaux d’installation.

Vous pouvez réduire le nombre de cœurs logiques par nœud NUMA dans une machine virtuelle Azure en désactivant SMT. Pour les instances SQL Server à matériel nu, vous pouvez réduire le nombre de cœurs logiques avec des options de clustering sub-NUMA (SNC) ou de nœuds par socket (NPS).

Désactiver SMT dans une machine virtuelle Azure

SQL Server est limité à 64 cœurs logiques par nœud NUMA. Dans certains cas, l’ordinateur virtuel Azure Mv3 peut dépasser cette limite, ce qui empêche le démarrage de SQL Server ou lui permet de s’exécuter avec des performances dégradées. Pour désactiver SMT, apportez les modifications suivantes à l’aide de PowerShell et de l’Éditeur du Registre (reg.exe). Veillez à sauvegarder votre registre avant de le modifier.

  1. Vérifiez le nombre de cœurs logiques. SMT est activé si le ratio est de 2:1 (le nombre de cœurs logiques est le double du nombre de cœurs).

    Get-CimInstance -ClassName Win32_Processor | Select-Object -Property "NumberOfCores", "NumberOfLogicalProcessors"
    
  2. Désactivez SMT en apportant les deux modifications suivantes au registre, puis redémarrez l’ordinateur virtuel.

    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. Vérifiez à nouveau le nombre de cœurs logiques. Le nombre de cœurs logiques doit correspondre au nombre de cœurs.

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

Réduire le nombre de cœurs logiques sur les instances à matériel nu

Les tableaux suivants décrivent comment réduire le nombre de cœurs logiques sur les instances à matériel nu de SQL Server.

Sur les UC Intel, vous pouvez activer le clustering sub-NUMA (SNC), anciennement appelé Cluster-on-Die (CoD), ce qui permet d’obtenir deux domaines NUMA au sein d’un même socket physique.

Paramètre de configuration Description
SNC désactivé (valeur par défaut) Désactive le clustering sub-NUMA.
SNC désactivé Active le clustering sub-NUMA.

Sur les UC AMD, vous pouvez activer différentes options de nœuds par socket (NPS).

Paramètre de configuration Description
NPS0 Dans un système à deux sockets, NUMA se présente comme un nœud unique avec tous les canaux de mémoire entrelacés sur le nœud.
NPS1 (valeur par défaut) Cette configuration présente un nœud NUMA par socket.
NPS2 Cette configuration présente deux nœuds NUMA par socket, similaires au SNC.
NPS4 Cette configuration présente quatre nœuds NUMA par socket.

Notes

Les systèmes avec plus d’un processeur physique ou les systèmes avec des processeurs physiques qui ont plusieurs noyaux et/ou SMT permettent au système d’exploitation d’exécuter plusieurs tâches simultanément. Chaque thread d'exécution apparaît comme un processeur logique. Par exemple, si votre ordinateur a deux processeurs à quatre cœurs avec le SMT activé et deux conversations par cœur, vous avez 16 processeurs logiques : 2 processeurs x 4 cœurs par processeur x 2 conversations par cœur. Il est intéressant de noter que :

  • La capacité de calcul d’un processeur logique à partir d’une seule conversation d’un cœur SMT est inférieure à la capacité de calcul d’un processeur logique à partir de ce même cœur avec SMT désactivé.

  • La capacité de calcul des deux processeurs logiques dans le cœur SMT est supérieure à la capacité de calcul du même cœur avec le SMT désactivé.

Chaque édition de SQL Server a deux limites de capacité de calcul :

  • Un nombre maximal de sockets (ou processeurs physiques ou packages de processeurs)

  • Un nombre maximal de cœurs comme indiqué par le système d’exploitation

Ces limites s'appliquent à une seule instance de SQL Server. Elles représentent la capacité maximale de calcul qu’une seule instance utilise. Elles ne restreignent pas le serveur sur lequel l’instance peut être déployée. En fait, le déploiement de plusieurs instances de SQL Server sur le même serveur physique est un moyen efficace d’utiliser la capacité de calcul d’un serveur physique avec plus de sockets et/ou de cœurs que les limites de capacité n’autorisent.

Le tableau suivant présente les limites de capacité de calcul pour une instance unique de chaque édition de SQL Server:

Édition deSQL Server Capacité maximale de calcul pour une instance unique (Moteur de base de données SQL Server) Capacité maximale de calcul pour une instance unique (AS,RS)
Édition Entreprise : Licence par cœur 1 Maximum du système d'exploitation Maximum du système d'exploitation
Développeur Maximum du système d'exploitation Maximum du système d'exploitation
standard Limité à moins de 4 sockets ou 24 cœurs Limité à moins de 4 sockets ou 24 cœurs
Express Limité à moins de 1 socket ou 4 cœurs Limité à moins de 1 socket ou 4 cœurs

1 Édition Entreprise avec Server + licences d’accès client (CAL) + gestion des licences limitées à 20 cœurs par instance de SQL Server. (Cette gestion des licences n’est pas disponible pour les nouveaux accords.) Il n’existe aucune limite dans le mode de licence Serveur selon le nombre de cœurs.

Dans un environnement virtualisé, la limite de capacité de calcul est basée sur le nombre de processeurs logiques et non sur le nombre de cœurs. La raison est que l’architecture de processeurs n’est pas visible aux applications invitées.

Par exemple, un serveur avec quatre sockets comprenant des processeurs quadruple cœur et autorisant l’activation de deux conversations SMT par cœur, contient 32 processeurs logiques avec SMT activé. Mais il contient seulement 16 processeurs logiques avec SMT désactivé. Ces processeurs logiques peuvent être mappés aux machines virtuelles sur le serveur. La charge de calcul des machines virtuelles sur ce processeur logique est mappée à un thread d’exécution sur le processeur physique du serveur hôte.

Vous pouvez désactiver SMT quand les performances de chaque processeur virtuel sont importantes. Vous pouvez configurer SMT en utilisant un paramètre du BIOS pour le processeur lors de la configuration du BIOS, mais il s’agit en général d’une opération couvrant l’étendue du serveur qui aura un impact sur toutes les charges de travail qui s’exécutent sur le serveur. Vous pourriez envisager de séparer les charges de travail qui fonctionnent dans des environnements virtualisés des charges de travail qui bénéficieraient de l’augmentation du rendement des SMT dans un environnement de système d’exploitation physique.

Obtenir de l’aide

Contribuer à la documentation SQL

Saviez-vous que vous pouvez modifier le contenu SQL vous-même ? Dans ce cas, non seulement vous nous aidez à améliorer notre documentation, mais vous êtes également cité en tant que contributeur à la page.

Pour plus d’informations, consultez le Guide pratique pour contribuer à la documentation SQL Server