Limitare l'utilizzo massimo della CPU SQL SERVER con WSRM


10

Ho un server fisico che esegue un'istanza di SQL Server.

Ho notato che abbastanza spesso questo server funziona al 100% di utilizzo della CPU.

Il mio team IT non è contento di questo e ha suggerito di riservare 2 dei 32 core per il sistema operativo.

Funziona benissimo, ora il picco di utilizzo massimo è appena inferiore al 90%. Inoltre, il recupero lento dei dati da vari utenti non viene più segnalato.

Esiste un motivo per NON utilizzare WSRM (Gestione risorse di sistema di Windows) in questo modo, anziché SQL Resource Governor?


Vuoi davvero usare tutta la CPU? Salvare un paio di core per il sistema operativo sembra prudente, vero? Sulla mia workstation, se uso tutti i core per un certo numero di scricchiolii la mia macchina si ferma. Tengo sempre alcuni core liberi. Non sarebbe una buona pratica anche su una macchina dedicata a SQL Server?
ManInMoon

Che tipo di carico è in esecuzione su questo server? Che tipo di processo utilizza il 100% della CPU? Questo è OLTP o analitica o grafico o?
Max Vernon,

@Forrest Quando dici tuning - intendi lo stesso SQL Server - o la struttura delle query / tabelle? Se intendi SQL Server, ti prego di darmi un link a cosa guardare. Se queiries / tabelle, allora li scelgo quando posso, ma alcuni utenti sono meno attenti al design!
ManInMoon

Risposte:


14

C'è qualche motivo per NON utilizzare l'approccio che hai definito?Assolutamente.

Immagina di aver comprato un'auto - un'auto che quando colpisci 50 MPH il motore inizia a surriscaldarsi. La tua reazione a questa situazione sarebbe limitare artificialmente la vettura a 49 MPH o scoprire qual è il difetto del motore?

Perché dovresti limitare la tua auto a 49 MPH? Il produttore ha dichiarato che potrebbe guidare fino a 80 MPH - ti piace guidare la tua auto veloce quindi vuoi portarla a questa velocità - se non fosse per quel dannato problema di surriscaldamento.

L'auto che hai comprato era anche molto, molto costosa. Ogni cilindro del motore deve essere utilizzato al massimo in modo da non sprecare quei soldi!

Limitando artificialmente l'accesso dei server SQL alla CPU, si perdono le prestazioni. Potresti aver temporaneamente risolto i problemi di prestazioni assicurandoti che la CPU sia disponibile per l'uso da parte del sistema operativo, ma non hai risposto alla vera domanda: PERCHÉ SQL Server utilizza il 100% della CPU?

Il mio consiglio è il seguente:

Scopri qual è il vero problema e risolvilo. Non coprire il problema con ciò che è effettivamente un kludge. La questione SARÀ riapparire e si schiaffo in faccia tutta la linea quando il carico di lavoro del server aumenta naturalmente con la crescita.

Come soluzione temporanea , è possibile utilizzare il regolatore delle risorse per ridurre la CPU utilizzata, FINO A QUANDO NON SI TROVA IL PROBLEMA REALE.


11

Erik Darling ha menzionato il più grande motivo pratico per non usare WSRM in un commento alla tua domanda:

... non vi è alcuna limitazione reciproca dell'uso della CPU in altri processi. SQL Server non può usare questi due core, ma altre cose possono usare gli altri 30 SQL Server in uso. È un crapshoot, davvero.

Se questo funziona per te, allora seguici: siamo tutti occupati e puoi dedicare così tanto tempo a qualsiasi dato problema. La soluzione ideale sarebbe quella di risolvere le domande / problemi sottostanti che stanno guidando la CPU al punto da problemi evidenti all'utente (che George copre nella sua eccellente risposta ).

Erik continua a dire

Inoltre, stai pagando le licenze di SQL Server per loro.

Dal punto di vista aziendale, questa è probabilmente la parte peggiore dell'accordo WSRM: stai pagando le licenze per core per 2 core che non vengono esplicitamente utilizzati. Al momento in cui scrivo, sul tavolo restano $ 3k o $ 14k (a seconda di Standard vs Enterprise).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.