Partilhar via


Limites de capacidade de computação por edição do SQL Server

Aplica-se a:SQL Server

Este artigo discute os limites da capacidade de computação para edições do SQL Server e como eles diferem em ambientes físicos e virtualizados com processadores SMT (simultaneous multithreading). Em CPUs Intel, o SMT é chamado Hyper-Threading.

Visão geral

Diagrama mostrando os mapeamentos para calcular limites de capacidade.

Esta tabela descreve as notações no diagrama anterior:

Valor Descrição
0..1 Zero ou um
1 Exatamente um
1..* Um ou mais
0..* Zero ou mais
1..2 Um ou dois

Para elaborar mais detalhadamente:

  • Uma máquina virtual (VM) tem um ou mais processadores virtuais.
  • Um ou mais processadores virtuais são alocados para exatamente uma máquina virtual.
  • Zero ou um processador virtual é mapeado para zero ou mais processadores lógicos. Quando a associação de processadores virtuais para processadores lógicos é:
    • Um a zero: representa um processador lógico não acoplado não usado pelos sistemas operacionais convidados.
    • Um para muitos: representa um excesso de compromisso.
    • Zero a muitos: representa a ausência de máquina virtual no sistema host. Portanto, as VMs não usam processadores lógicos.
  • Um soquete é mapeado para zero ou mais núcleos. Quando o mapeamento de socket para núcleo é:
    • Um a zero: representa um soquete vazio. Nenhum chip está instalado.
    • Um a um: representa um chip single-core instalado no soquete. Este mapeamento é raro nos dias de hoje.
    • Um para muitos: representa um chip multi-core instalado no soquete. Os valores típicos são 2, 4 e 8.
  • Um núcleo é mapeado para um ou dois processadores lógicos. Quando o mapeamento de núcleos para processadores lógicos é:
    • Um a um: SMT está desligado.
    • Um a dois: SMT está ligado.

As seguintes definições aplicam-se aos termos utilizados neste artigo:

  • Um thread ou processador lógico é um mecanismo de computação lógica da perspetiva do SQL Server, do sistema operacional, de um aplicativo ou de um driver.

  • Um núcleo é uma unidade de processador. Pode consistir em um ou mais processadores lógicos.

  • Um processador físico pode consistir em um ou mais núcleos. Um processador físico é o mesmo que um encapsulamento de processador ou um soquete.

Limite o número de núcleos lógicos por nó NUMA para 64

Você pode enfrentar problemas como despejos de pilha em servidores com mais de 64 processadores lógicos por nó NUMA. Uma configuração de BIOS ou firmware pode reduzir a contagem de núcleos lógicos apresentados ao sistema operacional para um máximo de 64 processadores lógicos por nó NUMA.

Atenção

A Atualização Cumulativa 11 do SQL Server 2022 (16.x) introduziu uma alteração crítica, na qual o Mecanismo de Banco de Dados não é iniciado se detetar mais de 64 núcleos lógicos por nó NUMA.

A partir da Atualização Cumulativa 15 do SQL Server 2022 (16.x), a Instalação produz um aviso de que essa configuração não tem suporte e resultará na interrupção e desativação do serviço Mecanismo de Banco de Dados. O aviso também está incluído nos logs de instalação.

Você pode reduzir a contagem de núcleos lógicos por nó NUMA em um de Máquina Virtual doAzure desativando o SMT. Para instâncias bare-metal SQL Server, você pode reduzir a contagem de núcleos lógicos com opções de cluster sub-NUMA (SNC) ou nós por soquete (NPS).

Desabilitar o SMT em uma máquina virtual do Azure

O SQL Server suporta um limite de 64 núcleos lógicos por nó NUMA. Em alguns casos, a VM da série Azure Mv3 pode exceder esse limite, o que impede que o SQL Server seja iniciado ou permita que ele seja executado com desempenho degradado. Para desativar o SMT, faça as seguintes alterações usando o PowerShell e o Editor do Registro (reg.exe). Certifique-se de fazer backup do seu registro antes de editá-lo.

  1. Verifique o número de núcleos lógicos. O SMT é ativado se a proporção for 2:1 (o número de núcleos lógicos é o dobro do número de núcleos).

    Get-CimInstance -ClassName Win32_Processor | Select-Object -Property "NumberOfCores", "NumberOfLogicalProcessors"
    
  2. Desative o SMT com as duas alterações de registro a seguir e reinicie a VM.

    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride /t REG_DWORD /d 8264 /f
    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverrideMask /t REG_DWORD /d 3 /f
    
  3. Verifique o número de núcleos lógicos mais uma vez. O número de núcleos lógicos deve corresponder ao número de núcleos.

    Get-CimInstance -ClassName Win32_Processor | Select-Object -Property "NumberOfCores", "NumberOfLogicalProcessors"
    

Reduzir o número de núcleos lógicos em instâncias bare-metal

As seções a seguir descrevem como reduzir a contagem de núcleo lógico em instâncias bare-metal do SQL Server.

Intel Xeon CPU

Na terceira, quarta e quinta gerações CPUs Intel Xeon, você pode habilitar o cluster sub-NUMA (SNC), anteriormente chamado de Cluster-on-Die (CoD), resultando em dois domínios NUMA dentro de um único soquete físico.

Observação

As CPUs Intel Xeon de sexta geração vêm com cluster sub-NUMA (SNC2 ou SNC3) ativado por padrão. Em alguns modelos de CPU, a configuração padrão SNC pode resultar em mais de 64 processadores lógicos por nó NUMA. Você deve ativar o recurso NUMA virtual Intel no BIOS/firmware, juntamente com SNC2 ou SNC3, para esses modelos de CPU.

Definição de configuração Descrição
SNC desativado 1 Desativa o agrupamento sub-NUMA.
SNC2 ativado 2 Apresenta dois nós NUMA por socket.
SNC3 ativado 2 Apresenta três nós NUMA por soquete.
Intel VirtualNuma ativado 3 Cria vários nós virtuais dentro de um único nó NUMA físico.

1 padrão para CPUs Intel Xeon de terceira, quarta e quinta gerações.

2 padrão para CPUs Intel Xeon de sexta geração e posteriores.

3 Disponível apenas em CPUs Intel Xeon de sexta geração e posteriores. Use essa configuração para CPUs de alta contagem de núcleos, onde o número de processadores lógicos por nó NUMA excede 64 ao usar os padrões SNC.

AMD CPU

Em CPUs AMD , pode-se ativar várias opções de Nodos por Soquete (NPS).

Definição de configuração Descrição
NPS0 Em um sistema com dois soquetes, NUMA apresenta-se como um único nó com todos os canais de memória intercalados por todo o nó.
NPS1 (padrão) Esta configuração apresenta um nó NUMA por soquete.
NPS2 Esta configuração apresenta dois nós NUMA por soquete, semelhante ao SNC.
NPS4 Esta configuração apresenta quatro nós NUMA por soquete.

Comentários

Sistemas com mais de um processador físico ou sistemas com processadores físicos com vários núcleos e/ou SMT permitem que o sistema operacional execute várias tarefas simultaneamente. Cada thread de execução aparece como um processador lógico. Por exemplo, se o computador tiver dois processadores quad-core com SMT habilitado e dois threads por núcleo, você terá 16 processadores lógicos: 2 processadores x 4 núcleos por processador x 2 threads por núcleo. Vale a pena notar que:

  • A capacidade de computação de um processador lógico a partir de um único thread de um núcleo SMT é menor do que a capacidade de computação de um processador lógico desse mesmo núcleo com SMT desativado.

  • A capacidade de computação dos dois processadores lógicos no núcleo SMT é maior do que a capacidade de computação do mesmo núcleo com SMT desativado.

Cada edição do SQL Server tem dois limites de capacidade de computação:

  • Um número máximo de soquetes (ou processadores físicos ou encapsulamentos de processador)

  • Um número máximo de núcleos conforme relatado pelo sistema operacional

Esses limites se aplicam a uma única instância do SQL Server. Eles representam a capacidade máxima de computação que uma única instância usa. Eles não restringem o servidor onde a instância pode ser implantada. Na verdade, implantar várias instâncias do SQL Server no mesmo servidor físico é uma maneira eficiente de usar a capacidade de computação de um servidor físico com mais soquetes e/ou núcleos do que os limites de capacidade permitem.

A tabela a seguir especifica os limites de capacidade de computação para uma única instância de cada edição do SQL Server:

Edição do SQL Server Capacidade máxima de computação para uma única instância (Mecanismo de Banco de Dados do SQL Server) Capacidade máxima de computação para uma única instância (AS, RS)
Enterprise edition: Licenciamento baseado em núcleo 1 Máximo do sistema operativo Máximo do sistema operativo
Programador Máximo do sistema operativo Sistema operativo máximo
Padrão Limitado a menos de 4 soquetes ou 24 núcleos Limitado a menos de 4 soquetes ou 24 núcleos
Expresso Limitado a menos de 1 soquete ou 4 núcleos Limitado a menos de 1 soquete ou 4 núcleos

1 Enterprise Edition com licenciamento Server + Client Access License (CAL) é limitado a 20 núcleos por instância do SQL Server. (Este licenciamento não está disponível para novos contratos.) Não há limites no modelo de Licenciamento de Servidor baseado em Core.

Em um ambiente virtualizado, o limite de capacidade de computação é baseado no número de processadores lógicos, não núcleos. O motivo é que a arquitetura do processador não é visível para os aplicativos convidados.

Por exemplo, um servidor que tem quatro soquetes preenchidos com processadores quad-core e a capacidade de habilitar dois threads SMT por núcleo contém 32 processadores lógicos com SMT habilitado. Mas contém apenas 16 processadores lógicos com SMT desativado. Esses processadores lógicos podem ser mapeados para máquinas virtuais no servidor. A carga de computação das máquinas virtuais nesse processador lógico é mapeada para um thread de execução no processador físico no servidor host.

Talvez você queira desativar o SMT quando o desempenho de cada processador virtual for importante. Você pode configurar o SMT usando uma configuração do BIOS para o processador durante a configuração do BIOS, mas normalmente é uma operação com escopo de servidor que afeta todas as cargas de trabalho em execução no servidor. Você pode considerar separar cargas de trabalho executadas em ambientes virtualizados de cargas de trabalho que se beneficiariam do aumento de desempenho SMT em um ambiente físico de sistema operacional.

Obter ajuda

Contribuir para a documentação SQL

Você sabia que você mesmo pode editar conteúdo SQL? Se o fizer, não só ajudará a melhorar a nossa documentação, como também será creditado como contribuidor da página.

Para obter mais informações, consulte Como contribuir para a documentação do SQL Server