Limiter l'utilisation maximale du processeur SQL SERVER avec WSRM

10

J'ai un serveur physique exécutant une instance de SQL Server.

Je remarque que ce serveur fonctionne assez souvent à 100% d'utilisation du processeur.

Mon équipe informatique n'est pas satisfaite de cela et a suggéré de réserver 2 des 32 cœurs pour le système d'exploitation.

Cela fonctionne très bien, maintenant le pic d'utilisation maximum un peu moins de 90%. De plus, la récupération lente des données de divers utilisateurs n'est plus signalée.

Y a-t-il une raison de NE PAS utiliser WSRM (Gestionnaire de ressources système Windows) de cette manière - au lieu du gouverneur de ressources SQL?

ManInMoon
la source
Voulez-vous vraiment utiliser tout le CPU? Enregistrer quelques cœurs pour le système d'exploitation semble prudent, n'est-ce pas? Sur mon poste de travail, si j'utilise tous les cœurs pour un certain nombre de calculs, ma machine s'arrête. Je garde toujours quelques cœurs libres. Ne serait-ce pas également une bonne pratique sur une machine dédiée à SQL Server?
ManInMoon
Quel type de charge s'exécute sur ce serveur? Quel type de processus utilise 100% du CPU? Est-ce OLTP ou analytique ou graphique ou?
Max Vernon
@Forrest Quand vous parlez de réglage - voulez-vous dire le serveur SQL lui-même - ou la structure des requêtes / tables? Si vous voulez dire SQL Server, veuillez me donner un lien vers ce que vous devez regarder. Si des requêtes / tables, je les optimise quand je peux, mais certains utilisateurs sont moins soucieux de la conception!
ManInMoon

Réponses:

14

Y a-t-il une raison de NE PAS utiliser l'approche que vous avez définie? Absolument.

Imaginez que vous ayez acheté une voiture - une voiture qui, lorsque vous atteignez 50 mi / h, le moteur commence à surchauffer. Souhaitez-vous réagir à cette situation pour limiter artificiellement la voiture à 49 MPH, ou pour découvrir quel est le problème avec le moteur?

Pourquoi devriez-vous limiter votre voiture à 49MPH? Le fabricant a déclaré qu'il pouvait rouler aussi vite que 80 MPH - vous aimez conduire votre voiture rapidement, donc vous voulez l'amener à cette vitesse - sans ce putain de problème de surchauffe.

La voiture que vous avez achetée était aussi vraiment, vraiment chère. Chaque cylindre du moteur doit être utilisé au maximum pour ne pas gaspiller cet argent!

En limitant artificiellement l'accès des serveurs SQL au processeur, vous manquez les performances. Vous pouvez avoir résolu temporairement les problèmes de performances en vous assurant que le processeur est disponible pour le système d'exploitation, mais vous n'avez pas répondu à la vraie question - POURQUOI SQL Server utilise-t-il 100% du processeur?

Mon conseil est le suivant:

Découvrez quel est le vrai problème et corrigez-le. Ne couvrez pas le problème avec ce qui est effectivement un coup de coude. La question FERA réapparaît et vous gifler face à la ligne lorsque la charge de travail du serveur augmente naturellement avec la croissance.

En tant que correctif temporaire , le gouverneur de ressources peut être utilisé pour réduire le processeur utilisé, JUSQU'À CE QUE VOUS TROUVEZ LE VRAI PROBLÈME.

George.Palacios
la source
11

Erik Darling a mentionné la principale raison pratique de ne pas utiliser WSRM dans un commentaire sur votre question:

... il n'y a pas de limitation réciproque de l'utilisation du processeur dans d'autres processus. SQL Server peut ne pas utiliser ces deux cœurs, mais d'autres choses peuvent utiliser les 30 autres que SQL Server utilise. C'est vraiment un jeu de dés.

Si cela fonctionne pour vous, alors respectez-le - nous sommes tous occupés et vous ne pouvez passer autant de temps que sur un problème donné. La solution idéale serait de corriger les requêtes / problèmes sous-jacents qui conduisent le processeur au point de problèmes visibles par l'utilisateur (ce que George couvre dans son excellente réponse ).

Erik poursuit en disant

De plus, vous payez des licences SQL Server pour eux.

D'un point de vue commercial, c'est probablement la pire partie de l'accord WSRM - vous payez des licences par cœur pour 2 cœurs qui ne sont explicitement pas utilisés. Au moment d'écrire ces lignes, il restait 3 000 $ ou 14 000 $ sur la table (selon Standard vs Enterprise).

Josh Darnell
la source