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.