Monitoraggio dell'utilizzo della CPU

È opportuno monitorare periodicamente un'istanza di Microsoft SQL Server per verificare che i valori di utilizzo della CPU rientrino nei normali intervalli. Se la frequenza di utilizzo della CPU è costantemente elevata può essere necessario eseguire un aggiornamento della CPU o aggiungere ulteriori processori. Una valore costantemente elevato di utilizzo della CPU può inoltre indicare la presenza di un'applicazione non progettata o ottimizzata correttamente. L'ottimizzazione dell'applicazione potrebbe ridurre l'utilizzo della CPU.

Una soluzione efficiente per determinare l'utilizzo della CPU consiste nell'utilizzare il contatore Processore:% Tempo processore in Monitor di sistema. Questo contatore consente di monitorare la quantità di tempo utilizzata dalla CPU per l'esecuzione di un thread non inattivo. Se il valore relativo a tale stato è incluso tra l'80% e il 90%, può essere necessario eseguire un aggiornamento della CPU o aggiungere ulteriori processori. Nel caso dei sistemi multiprocessore, è necessario monitorare un'istanza del contatore per ogni processore. Il valore rappresenta il tempo totale di un processore specifico. Per determinare la media di tutti i processori, utilizzare il contatore Sistema: % Tempo totale processore.

Facoltativamente, per monitorare l'utilizzo del processore è inoltre possibile utilizzare i contatori seguenti:

  • Processore: % Tempo privilegiato

    Indica la percentuale di tempo richiesta dal processore per l'esecuzione dei comandi kernel di Microsoft Windows, ad esempio l'elaborazione delle richieste di I/O di SQL Server. Se il valore di questo contatore è costantemente elevato ed anche i contatori Disco fisico presentano valori elevati, valutare la possibilità di installare un sottosistema di disco più veloce o più efficiente.

    Nota

    I diversi tipi di controller del disco e driver utilizzano quantità diverse di tempo di elaborazione del kernel. I controller e i driver efficienti richiedono meno tempo privilegiato, lasciando una maggior quantità di tempo di elaborazione disponibile per le applicazioni utente, migliorando di conseguenza il throughput generale.

  • Processore: % Tempo utente

    Indica la percentuale di tempo richiesta dal processore per l'esecuzione dei processi utente, ad esempio SQL Server.

  • Sistema: Lunghezza coda processore

    Indica il numero di thread in attesa di elaborazione. Se i thread di un processo richiedono un numero di cicli del processore maggiore di quello disponibile, si verifica un collo di bottiglia a livello del processore. Se una quantità notevole di processi tenta di utilizzare il tempo del processore, può essere necessario installare un processore più veloce o, nel caso di sistemi multiprocessore, aggiungere un processore.

Quando si analizza l'utilizzo del processore, è necessario tenere presente il tipo di attività eseguita dall'istanza di SQL Server. Se SQL Server esegue numerosi calcoli, ad esempio query che riguardano aggregazioni o query gestite in memoria che non richiedono I/O su disco, è possibile che venga utilizzato il 100% del tempo del processore. In tal caso, se le prestazioni delle altre applicazioni peggiorano, provare a modificare il carico di lavoro, ad esempio dedicando il computer all'esecuzione dell'istanza di SQL Server.

I valori di utilizzo prossimi al 100%, sintomo dell'elaborazione di numerose richieste client, possono indicare la presenza di processi in coda in attesa del tempo del processore che causano un collo di bottiglia. Risolvere il problema aggiungendo processori più veloci.