Affinity Mask I/O (opzione di configurazione del server)

Si applica a:SQL Server

Per eseguire il multitasking, Microsoft Windows sposta talvolta thread di processi 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 Microsoft SQL Server nel caso di carichi di lavoro elevati perché 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 Opzione di configurazione del server affinity mask. Il supporto di CPU e Affinity I/O per server con 33 fino a 64 processori richiede rispettivamente l'uso aggiuntivo dell' opzione di configurazione del server affinity64 mask e dell' opzione di configurazione del server affinity64 Input-Output 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 specificato di CPU. 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 sia l'opzione affinity I/O mask che l'opzione affinity64 I/O mask.

I valori di affinity I/O mask sono i seguenti:

  • L'uso di una affinity I/O mask da 1 byte copre fino a 8 CPU in un computer multiprocessore.

  • L'uso di una affinity I/O mask da 2 byte copre fino a 16 CPU in un computer multiprocessore.

  • L'uso di una affinity I/O mask da 3 byte copre fino a 24 CPU in un computer multiprocessore.

  • L'uso di una affinity I/O mask da 4 byte copre fino a 32 CPU in un computer multiprocessore.

  • Per coprire più di 32 CPU, configurare una affinity I/O mask da 4 byte per le prime 32 CPU e una affinity64 I/O mask fino a 4 byte per le CPU rimanenti.

Un bit 1 nello schema della maschera di affinità di I/O indica che la CPU corrispondente è idonea all'esecuzione di operazioni di I/O su disco di SQL Server, mentre un bit 0 indica che per la CPU corrispondente non deve essere pianificata alcuna operazione di I/O su disco di SQL Server. Quando tutti i bit sono impostati su zero oppure l'opzione affinity 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 dell'opzione affinity I/O mask di SQL Server è un'attività complessa, che è consigliabile eseguire solo in caso di necessità. Nella maggior parte dei casi l'affinità predefinita di Windows 2000 o Windows Server 2003 garantisce livelli di prestazioni ottimali.

Quando si specifica l'opzione affinity I/O mask , è necessario usarla insieme all'opzione di configurazione affinity mask . Non abilitare la stessa CPU sia nell'opzione affinity I/O mask che nell'opzione affinity mask . I bit corrispondenti alle singole CPU devono rispettare uno dei tre stati seguenti:

  • 0 sia nell'opzione affinity I/O mask che nell'opzione affinity mask .

  • 1 nell'opzione affinity I/O mask e 0 nell'opzione affinity mask .

  • 0 nell'opzione affinity I/O mask e 1 nell'opzione affinity mask .

L'opzione affinity I/O mask è un'opzione avanzata. Se si usa la stored procedure di sistema sp_configure per modificare l'impostazione, è 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 contemporaneamente l'opzione affinity mask in SQL Server. Le due impostazioni mirano a ottenere lo stesso risultato e, se le configurazioni sono incoerenti, potrebbero causare risultati imprevisti. La configurazione ottimale dell'affinità della CPU di SQL Server può essere ottenuta usando l'opzione sp_configure in SQL Server.

Vedi anche

Monitoraggio dell'utilizzo delle risorse (Monitor di sistema)
RECONFIGURE (Transact-SQL)
Opzioni di configurazione del server (SQL Server)
sp_configure (Transact-SQL)