Procédure : configurer SQL Server pour utiliser soft-NUMA

La technologie NUMA (Non-Uniform Memory Access) est détectée et utilisée automatiquement. Si vous souhaitez simuler la technologie NUMA d'ordinateurs SMB de grande taille, ou si vous souhaitez subdiviser des ordinateurs NUMA pour offrir une meilleure localité, vous pouvez utiliser soft-NUMA. Pour configurer SQL Server afin de pouvoir utiliser soft-NUMA, vous devez modifier le Registre et ajouter un masque d'affinité de configuration des nœuds. Le masque soft-NUMA peut être établi comme entrée de Registre binaire ou DWORD (hexadécimal ou décimal). Pour configurer plus de UC que les 32 premières, utilisez les valeurs de registre BINARY. Vous devez redémarrer le Moteur de base de données pour configurer soft-NUMA. Avant de configurer soft-NUMA, consultez Présentation de l'accès NUMA (Non-uniform Memory Access) et Prise en charge de la technologie NUMA dans SQL Server.

ConseilConseil

Les UC sont numérotées à partir de 0.

Une modification incorrecte du Registre peut sérieusement endommager votre système. Avant d'apporter des modifications au Registre, nous vous recommandons de sauvegarder les données importantes qui se trouvent sur l'ordinateur.

Prenons l'exemple suivant. Un ordinateur avec huit UC ne possède pas d'accès NUMA matériel. Trois nœuds soft-NUMA sont configurés. L'instance A du Moteur de base de données est configurée pour utiliser les UC de 0 à 3. Une deuxième instance du Moteur de base de données est installée et configurée pour utiliser les UC de 4 à 7. L'exemple peut être représenté visuellement de la façon suivante :

CPUs          0  1  2  3  4  5  6  7

Soft-NUMA   <-N0--><-N1-><----N2---->

SQL Server  <instance A ><instance B>

L'instance A, confrontée à des E/S importantes, possède maintenant deux threads d'E/S et deux threads d'écriture différée, tandis que l'instance B, qui exécute des opérations nécessitant des ressources UC conséquentes, ne possède qu'un seul thread d'E/S et un seul thread d'écriture différée. Il est possible d'affecter des quantités de mémoire différentes aux instances, mais contrairement à l'accès NUMA matériel, elles reçoivent toutes deux la mémoire du même bloc mémoire du système d'exploitation et il n'existe pas d'affinité entre la mémoire et le processeur.

Notes

Les clés de Registre Soft-NUMA ne sont pas copiées lorsque vous mettez à niveau une instance de SQL Server.

Définir le masque d'affinité de l'UC

  1. Exécutez l'instruction suivante sur l'instance A de façon à la configurer pour qu'elle utilise les UC 0, 1, 2 et 3 en définissant le masque d'affinité de l'UC :

    ALTER SERVER CONFIGURATION 
    SET PROCESS AFFINITY CPU=0 TO 3;
    
  2. Exécutez l'instruction suivante sur l'instance B de façon à la configurer pour qu'elle utilise les UC 4, 5, 6 et 7 en définissant le masque d'affinité de l'UC :

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

Mapper les nœuds soft-NUMA aux UC

  • À l'aide de l'Éditeur du Registre (regedit.exe), ajoutez les clés de Registre suivantes pour mapper le nœud soft-NUMA 0 aux UC 0 et 1, le nœud soft-NUMA 1 aux UC 2 et 3, et le nœud soft-NUMA 2 aux UC 4, 5, 6 et 7.

    SQL Server 2005

    Type

    Nom de valeur

    Données de valeur

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90\NodeConfiguration\Node0

    DWORD

    CPUMask

    0x03

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90\NodeConfiguration\Node1

    DWORD

    CPUMask

    0x0c

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90\NodeConfiguration\Node2

    DWORD

    CPUMask

    0xf0

    SQL Server 2008

    Type

    Nom de valeur

    Données de valeur

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\NodeConfiguration\Node0

    DWORD

    CPUMask

    0x03

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\NodeConfiguration\Node1

    DWORD

    CPUMask

    0x0c

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\NodeConfiguration\Node2

    DWORD

    CPUMask

    0xf0

    SQL Server 2008 R2

    Type

    Nom de valeur

    Données de valeur

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\NodeConfiguration\Node0

    DWORD

    CPUMask

    0x03

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\NodeConfiguration\Node0

    DWORD

    Group

    0

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\NodeConfiguration\Node1

    DWORD

    CPUMask

    0x0c

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\NodeConfiguration\Node1

    DWORD

    Group

    0

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\NodeConfiguration\Node2

    DWORD

    CPUMask

    0xf0

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\NodeConfiguration\Node2

    DWORD

    Groupe

    0

    ConseilConseil

    La valeur binaire 1111000000000000000000000000000000000000000000000000000000000000 est utilisée pour spécifier les UC 60 à 63.