Récemment, notre district scolaire a mis à niveau plusieurs serveurs de la version 2005 à 2016 et des serveurs physiques aux serveurs VM.
Notre équipe d'infrastructure a présenté les serveurs VM pour l'installation de SQL Server avec un seul cœur.
J'essaie d'expliquer au chef de ce département que SQL Server «déteste» être sur un seul cœur et qu'il veut voir la «preuve». Aucune des données que j'ai présentées n'a satisfait son besoin de preuve et il a donc demandé des articles sur les raisons pour lesquelles un VM SQL Server ne fonctionnera pas efficacement sur un seul cœur.
Quels articles utilisez-vous pour cela?
Toute aide pour moi pour faire mon cas serait appréciée!
Réponses:
Tout processus non SQL Server qui consomme de l'UC peut rendre l'ensemble de SQL Server complètement inutilisable.
Par exemple, Windows Update arrêtera SQL Server pendant le déballage des assemblys .Net.
Tout processus antivirus, même s'il est configuré pour exclure les fichiers et dossiers de données SQL Server, peut entraîner la non-réponse de SQL Server pendant qu'il analyse les fichiers et décompresse les fichiers de définition de virus mis à jour.
Si vous avez installé un logiciel de gestion, tel qu'IBM Tivoli Server Monitor, et qu'il décide d'utiliser 100% d'un cœur, vous ne pourrez probablement rien faire d'autre que l'arrêt à froid de la machine. Ne me demandez pas pourquoi j'en parle.
Je pourrais continuer, mais il suffit de dire que tout serveur avec un seul cœur demande simplement des problèmes de performances et de gestion. Vérifiez que tout ordinateur avec un seul cœur doit être considéré comme inutilisable aujourd'hui. Heck, mon téléphone a 8 cœurs.
Pendant que vous y êtes, convaincre le gars de la virtualisation de donner à chaque serveur SQL une réservation de mémoire raisonnable qui garantira que la mémoire de SQL Server ne sera pas paginée de la mémoire principale des hôtes sur le disque.
Pour les serveurs SQL hébergés par VMware, vous devez configurer VMware conformément au guide des meilleures pratiques d'architecture SQL Server sur VMware .
Cela se résume vraiment à une machine virtuelle à cœur unique ne peut exécuter qu'un seul thread à un moment donné. La virtualisation n'est pas une solution miracle pour cette situation d'un cœur par thread.
Les points ci-dessus tiennent compte du fait que Windows NT (la base de code de 1993 sur laquelle toutes les versions modernes de Windows sont construites) utilise le multitâche préemptif. Le multitâche préemptif permet au système d'exploitation d'appliquer le multitâche en forçant le changement de contexte à des horaires réguliers. Même avec le multitâche préemptif, un serveur avec un seul cœur souffrira toujours de très mauvaises performances si une seule tâche décide d'utiliser autant de CPU que possible, car l'O / S donnera à cette tâche autant de temps CPU que possible. tout en permettant l'exécution de tâches de priorité plus élevée, forçant le processeur à 100%. Si SQL Server est en cours d'exécution au moment où le CPU passe à 100%, le quantum de CPU de SQL Server sera réduit au point de devenir très visible. Dans les scénarios ci-dessus que j'ai décrits, je n'ai pasdisons que la machine (ou même SQL Server) "s'arrêtera" ou "mourra" complètement; ce serait tout simplement faux. Cependant, la machine peut devenir si occupée que, à toutes fins utiles, la machine devient inutilisable. L'ajout d'un deuxième cœur, bien que n'étant certainement pas une panacée, réduit la probabilité que la machine ne réponde plus complètement. Chaque cœur supplémentaire signifie qu'un autre thread peut fonctionner à 100% CPU sans que la machine devienne inutilisable.
la source
J'ai dû prouver la même chose auparavant. Ce qui est finalement parvenu à notre équipe de planification des capacités, c'est que nos bases de données étaient presque inutilisables lors d'une sauvegarde.
En tant que DBA, votre plus grande crainte devrait être la perte de données. Si vous ne pouvez pas exécuter des sauvegardes en toute confiance sans effectuer ou provoquer une panne, c'est un gros problème. Exécutez des tests pour vous assurer que les performances sont affectées lors d'une sauvegarde, puis expliquez qu'avec plusieurs cœurs, le problème devrait disparaître.
la source
Afin de fournir une preuve convaincante que votre serveur a besoin de plus d'un processeur, vous devrez fournir des informations sur la charge de travail et les requêtes exécutées sur le serveur. Si elle ne possède qu'une seule base de données de moins de 100 Mo, par exemple, et que toutes les requêtes sont très simples et efficaces, il peut être pratiquement inutile de disposer de plus de cœurs.
Je vous recommande de commencer à capturer des plans de requête qui vont en parallèle et le temps qu'il leur faut pour terminer. Cela démontrera que la charge de travail en cours d'exécution sur le système bénéficiera de la présence de plusieurs processeurs.
S'il est déjà en production dans l'environnement de machine virtuelle, vous devez également capturer les données de performances d'utilisation du processeur. Si vous pouvez montrer que le CPU atteint son maximum à 100% pendant de longues périodes, cela fournirait également une bonne preuve que le système a besoin de plus de CPU.
la source
NonParallelPlanReason="EstimatedDOPIsOne"
.Vous devriez peut-être leur demander pourquoi ils insistent sur le fait que ce serait une bonne idée de n'affecter qu'un seul cœur par machine virtuelle SQL Server.
Ensuite, en fonction de leur réponse, vous pourriez essayer de les convaincre sur la base du point 3.3.2 de ce lien:
SqlServer-on-vmware-best-pratices
Si cet élément n'est pas la raison pour laquelle l'équipe d'infrastructure ne provisionne qu'un seul cœur par VM, alors, sans doute, le matériel est gaspillé.
la source