Configurazione del server: maschera affinity I/O
Si applica a: SQL Server
Per eseguire il multitasking, Windows sposta talvolta thread tra processori diversi. Anche se in questo modo viene garantita una maggiore efficienza del sistema operativo, questa attività può comportare una riduzione delle prestazioni di SQL Server nel caso di carichi di lavoro elevati, poiché la cache di ogni processore viene ricaricata più volte con dati. In tali condizioni, l'assegnazione dei processori a specifici thread può aumentare le prestazioni eliminando il ricaricamento dei processori. Questa associazione tra un thread e un processore è definita affinità processori.
SQL Server supporta l'affinità dei processori tramite due opzioni di maschera di affinità: affinity mask
(nota anche come maschera di affinità della CPU) e affinity I/O mask
. Per altre informazioni sull'opzione affinity mask
, vedere Configurare l’opzone di configurazionie del server maschera di affinità. Il supporto di Affinity CPU e I/O per server con 33 fino a 64 processori richiede rispettivamente l'uso aggiuntivo dell'opzione di configurazione del server affinity64.mask e affinity64 I/O mask.
Nota
Il supporto dell'affinità nei server dotati di un numero di processori compreso tra 33 e 64 è disponibile solo su sistemi operativi a 64 bit.
L’opzione affinity I/O mask
associa l'I/O su disco di SQL Server a un subset di CPU specificato. Negli ambienti SQL Server di fascia alta con elaborazione delle transazioni online (OLTP), questa estensione può migliorare le prestazioni dei thread di SQL Server che generano operazioni di I/O. Questa funzionalità avanzata non supporta affinità hardware per singoli dischi o controller del disco.
Il valore di affinity I/O mask
specifica quali CPU di un computer multiprocessore sono idonee a elaborare le operazioni di I/O su disco di SQL Server. La maschera è costituita da una mappa di bit nella quale il primo bit a destra specifica la CPU di ordine inferiore (ovvero CPU(0)), il bit alla sua immediata sinistra specifica la CPU di ordine successivo (ovvero CPU(1)) e così via. Per configurare più di 32 processori, impostare affinity I/O mask
e affinity64 I/O mask
.
I valori per l'opzione affinity I/O mask
sono i seguenti:
Byte in maschera | Numero di CPU |
---|---|
1 byte | Fino a 8 CPU |
2 byte | Fino a 16 CPU |
3 byte | Fino a 24 CPU |
4 byte | Fino a 32 CPU |
Per coprire più di 32 CPU, configurare un affinity I/O mask
da 4 byte per le prime 32 CPU e un affinity64 I/O mask
da 4 byte per le CPU rimanenti.
Un bit 1
nel modello di I/O di affinità specifica che la CPU corrispondente è idonea per eseguire operazioni di I/O su disco di SQL Server. Un bit 0
specifica che non deve essere pianificata alcuna operazione di I/O su disco di SQL Server per la CPU corrispondente. Quando tutti i bit sono impostati su 0
oppure l'opzioneaffinity I/O mask
non è specificata, le operazioni di I/O su disco di SQL Server vengono pianificate per una qualsiasi CPU idonea a elaborare i thread di SQL Server.
L'impostazione affinity I/O mask
di SQL Server è un'attività complessa; usarla solo in caso di necessità. Nella maggior parte dei casi, l'affinità predefinita di Windows offre le migliori prestazioni.
Quando si specifica l'opzione affinity I/O mask
è necessario usarla insieme all'opzione di configurazione affinity mask
. Non abilitare la stessa CPU sia nel commutatore affinity I/O mask
che nell'opzione affinity mask
. I bit corrispondenti alle singole CPU devono rispettare uno dei tre stati seguenti:
affinity mask
sia nell'opzioneaffinity I/O mask
che nell'opzione0
.1
sia nell'opzioneaffinity I/O mask
che nell'opzione0
eaffinity mask
.0
sia nell'opzioneaffinity I/O mask
che nell'opzione1
eaffinity mask
.
L’opzione affinity I/O mask
è un'opzione avanzata. Se per modificare l'impostazione si usa la stored procedure di sistema sp_configure
, sarà possibile modificare affinity I/O mask
solo quando il valore di show advanced options
è impostato su 1
. In SQL Server, per riconfigurare l'opzione affinity I/O mask
è necessario riavviare l'istanza di SQL Server.
Attenzione
Non configurare l'affinità della CPU nel sistema operativo Windows e configurare l'opzione affinity mask
in SQL Server. Le due impostazioni mirano a ottenere lo stesso risultato e, se le configurazioni sono incoerenti, possono causare risultati imprevisti. L'affinità di CPU di SQL Server è configurata in modo ottimale usando la stored procedure di sistema sp_configure
in SQL Server.