Recentemente, nosso distrito escolar atualizou vários servidores da versão 2005 para 2016 e de servidores físicos para servidores VM.
Nossa equipe de infraestrutura apresentou os servidores VM para instalação do SQL Server com um único núcleo.
Estou tentando explicar ao chefe desse departamento que o SQL Server 'odeia' estar em um único núcleo e ele quer ver 'prova'. Nenhum dos dados que apresentei atendeu a sua necessidade de prova e, portanto, ele pediu alguns artigos sobre por que um VM SQL Server não funcionará com eficiência em um único núcleo.
Quais artigos você usa para isso?
Qualquer ajuda para mim fazer o meu caso seria apreciada!
Respostas:
Qualquer processo que não seja do SQL Server que consome CPU pode fazer com que todo o SQL Server seja completamente inutilizável.
Como exemplo, o Windows Update interromperá o SQL Server enquanto descompacta assemblies .Net.
Qualquer processo antivírus, mesmo que esteja configurado para excluir arquivos e pastas de dados do SQL Server, pode deixar de responder ao SQL Server enquanto verifica os arquivos e descompacta os arquivos de definição de vírus atualizados.
Se você tiver algum software de gerenciamento instalado, como o IBM Tivoli Server Monitor, e ele decidir usar 100% de um núcleo, provavelmente não poderá fazer nada além de desligar a máquina a frio. Não me pergunte por que estou falando disso.
Eu poderia continuar, mas basta dizer que qualquer servidor com um único núcleo está simplesmente pedindo problemas com desempenho e capacidade de gerenciamento. Verifique se qualquer computador com um único núcleo deve ser considerado inutilizável hoje. Caramba, meu telefone tem 8 núcleos.
Enquanto isso, convença o pessoal da virtualização a dar a cada SQL Server uma reserva de memória razoável que garantirá que a memória do SQL Server não seja paginada da memória principal do host para o disco.
Para servidores SQL sérios hospedados pela VMware, você deve configurar o VMware de acordo com o guia Arquitetando o SQL Server no VMware Best Practices .
Realmente, tudo se resume a uma VM de núcleo único, que só pode executar um único encadeamento a qualquer momento. A virtualização não é uma bala de prata para essa situação de um núcleo por segmento.
Os pontos acima levam em conta que o Windows NT (a base de código de 1993 em que todas as versões modernas do Windows são construídas) utiliza multitarefas preemptivas. A multitarefa preemptiva permite que o sistema operacional aplique a multitarefa forçando a alternância de contexto em agendas regulares. Mesmo com a multitarefa preemptiva, um servidor com um único núcleo ainda sofrerá com um desempenho muito ruim se uma única tarefa decidir usar o máximo de CPU possível, pois o sistema operacional dará a essa tarefa o tempo de CPU que puder ser poupado enquanto ainda permite a execução de tarefas de alta prioridade, forçando a CPU a 100%. Se o SQL Server estiver em execução no momento em que a CPU chegar a 100%, o quantum de CPU do SQL Server será reduzido a ponto de se tornar muito perceptível. Nos cenários acima descritos, eu não fizdigamos, a máquina (ou mesmo o SQL Server) "parará" ou "morrerá" completamente; isso seria simplesmente falso. No entanto, a máquina pode ficar tão ocupada que, para todos os efeitos, a máquina se torna inutilizável. Adicionar um segundo núcleo, embora certamente não seja uma panacéia, reduz a probabilidade de a máquina ficar completamente sem resposta. Cada núcleo adicional significa que outro encadeamento pode executar até 100% da CPU sem causar inutilização da máquina.
fonte
Eu tive que provar a mesma coisa antes. O que finalmente chegou à nossa equipe de planejamento de capacidade é que nossos bancos de dados estavam quase inutilizáveis durante um backup.
Como DBA, seu maior medo deve ser a perda de dados. Se você não pode executar backups com confiança sem tomar ou causar uma interrupção, esse é um grande problema. Execute alguns testes para garantir que o desempenho seja afetado enquanto um backup estiver ocorrendo e explique que, com mais de um núcleo, o problema deve desaparecer.
fonte
Para fornecer uma prova convincente de que seu servidor precisa de mais de uma CPU, você precisará fornecer informações sobre a carga de trabalho e as consultas que estão sendo executadas no servidor. Se ele tiver apenas um banco de dados com menos de 100 MB, por exemplo, e todas as consultas forem muito simples e eficientes, pode não haver quase nenhum benefício em ter mais núcleos.
Eu recomendo que você comece a capturar planos de consulta paralelos e o tempo que leva para serem concluídos. Isso demonstrará que a carga de trabalho em execução no sistema se beneficiará de ter várias CPUs.
Se já estiver em produção no ambiente da VM, você também precisará capturar dados de desempenho de uso da CPU. Se você puder mostrar que a CPU está atingindo o máximo de 100% por longos períodos, isso também forneceria boas evidências de que o sistema precisa de mais CPUs.
fonte
NonParallelPlanReason="EstimatedDOPIsOne"
.Talvez você deva perguntar a eles por que eles estão insistindo que seria uma boa ideia atribuir apenas um núcleo por VM do SQL Server.
Então, dependendo da resposta deles, você pode tentar convencê-los com base no item 3.3.2 neste link:
SqlServer-on-vmware-best-pratices
Se esse item não for o motivo da equipe de infraestrutura fornecer apenas 1 núcleo por VM, então, sem dúvida, o hardware está sendo desperdiçado.
fonte