Procedura: Configurazione di SQL Server per l'utilizzo di Soft-NUMA

Viene rilevato e utilizzato automaticamente l'accesso NUMA (Non-uniform memory access, accesso non uniforme alla memoria). Se si desidera simulare l'accesso NUMA di computer SMB di grandi dimensioni o se si desidera suddividere i computer NUMA per una migliore prossimità, è possibile utilizzare Soft-NUMA. Per configurare SQL Server per l'utilizzo di Soft-NUMA, è necessario modificare il Registro di sistema per aggiungere una maschera di affinità di configurazione dei nodi. La maschera Soft-NUMA può essere dichiarata come voce del Registro di sistema binaria o DWORD (esadecimale o decimale). Per configurare più di 32 CPU utilizzare i valori del Registro di sistema BINARY. È necessario riavviare il Motore di database per configurare Soft-NUMA. Prima di configurare Soft-NUMA, vedere Informazioni sull'architettura NUMA (Non-Uniform Memory Access) e Modifiche che consentono il supporto NUMA in SQL Server.

SuggerimentoSuggerimento

Le CPU vengono numerate a partire da 0.

Se il Registro di sistema viene modificato in modo non appropriato, il sistema potrebbe venire gravemente danneggiato. Prima di modificare il Registro di sistema, è consigliabile eseguire il backup di tutti i dati importanti disponibili nel computer.

Si consideri l'esempio seguente. Un computer con otto CPU non dispone di NUMA hardware. Vengono configurati tre nodi soft-NUMA. L'istanza A del Motore di database viene configurata in modo da utilizzare le CPU da 0 a 3. Una seconda istanza del Motore di database viene installata e configurata in modo da utilizzare le CPU da 4 a 7. Questo esempio può essere rappresentato visivamente come segue:

CPUs          0  1  2  3  4  5  6  7

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

SQL Server  <instance A ><instance B>

L'istanza A che presenta un I/O significativo, ha ora due thread di I/O e due thread Lazywriter mentre l'istanza B che esegue operazioni con utilizzo elevato del processore ha solo un thread di I/O e un thread Lazywriter. È possibile assegnare alle istanze quantità di memoria diverse ma, a differenza di quanto avviene in NUMA hardware, entrambe le istanze ricevono memoria dallo stesso blocco di memoria del sistema operativo e non è presente affinità tra memoria e processore.

Nota

Le chiavi del Registro di sistema di Soft-NUMA non vengono copiate quando si aggiorna un'istanza di SQL Server.

Impostazione della maschera di affinità della CPU

  1. Eseguire l'istruzione seguente sull'istanza A per configurarla per l'utilizzo delle CPU 0, 1, 2 e 3 impostando la maschera di affinità della CPU:

    ALTER SERVER CONFIGURATION 
    SET PROCESS AFFINITY CPU=0 TO 3;
    
  2. Eseguire l'istruzione seguente sull'istanza B per configurarla per l'utilizzo delle CPU 4, 5, 6 e 7 impostando la maschera di affinità della CPU:

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

Mapping dei nodi Soft-NUMA alle CPU

  • Utilizzando l'Editor del Registro di sistema (regedit.exe), aggiungere le chiavi del Registro di sistema seguenti per eseguire il mapping del nodo Soft-NUMA 0 alle CPU 0 e 1, del nodo Soft-NUMA 1 alle CPU 2 e 3 e del nodo Soft-NUMA 2 alle CPU 4, 5, 6 e 7.

    SQL Server 2005

    Tipo

    Nome del valore

    Dati del valore

    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

    Tipo

    Nome del valore

    Dati del valore

    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

    Tipo

    Nome del valore

    Dati del valore

    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

    Gruppo

    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

    Gruppo

    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

    Gruppo

    0

    SuggerimentoSuggerimento

    Per specificare le CPU da 60 a 63, utilizzare il valore BINARY 1111000000000000000000000000000000000000000000000000000000000000.