Compartilhar via


Computar limites de capacidade por edição do SQL Server

Aplica-se:SQL Server

Este artigo discute os limites de capacidade de computação das edições diferentes do SQL Server e quais suas diferenças em ambientes físicos e virtuais com processadores de multithreading simultâneo (SMT). Em CPUs Intel, o SMT é chamado Hyper-Threading.

Visão geral

Diagrama mostrando os mapeamentos para calcular os limites de capacidade.

Esta tabela descreve as notações do 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:

  • Uma VM (máquina virtual) tem um ou mais processadores virtuais.
  • Uma ou mais processadores virtuais são alocados a exatamente uma máquina virtual.
  • Zero ou um processador virtual é mapeado para zero ou mais processadores lógicos. Quando o mapeamento dos processadores virtuais para os processadores lógicos é:
    • Um para zero: representa um processador lógico não associado não usado pelos sistemas operacionais convidados.
    • Um para muitos: representa uma superconfirmação.
    • Zero para muitos: representa a ausência de máquina virtual no sistema host. Portanto, as VMs não usam nenhum processador lógico.
  • Um soquete é mapeado para zero ou mais núcleos. Quando o mapeamento do soquete para núcleo é:
    • Um para zero: representa um soquete vazio. Não há chip instalado.
    • Um para um: representa um chip de núcleo único instalado no soquete. Esse mapeamento é raro nos dias atuais.
    • Um para muitos: representa um chip de vários núcleos 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 dos núcleos cores para os processadores lógicos é:
    • Um a um: SMT desligado.
    • Um a dois: SMT ligado.

As definições a seguir aplicam-se aos termos usados neste artigo:

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

  • Um núcleo é uma unidade de processador. Ele 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 pacote de processadores ou um soquete.

Limitar o número de núcleos lógicos por nó NUMA a 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 apresentada ao sistema operacional para um máximo de 64 processadores lógicos por nó NUMA.

Cuidado

A Atualização Cumulativa 11 do SQL Server 2022 (16.x) introduziu uma alteração interruptiva que impede a inicialização do Mecanismo de Banco de Dados se o servidor detectar mais de 64 núcleos lógicos por nó NUMA.

No SQL Server 2022 (16.x) Atualização Cumulativa 15 e versões posteriores, a Instalação produz um aviso de que essa configuração não tem suporte e resultará na interrupção e desabilitação do serviço mecanismo de banco de dados. O aviso também está incluído nos logs de instalação.

Desabilitando o SMT, você pode reduzir a contagem de núcleos lógicos por nó NUMA em uma Máquina Virtual do Azure. Para Instâncias bare-metal do SQL Server, você pode reduzir a contagem de núcleos lógicos com as opções de SNC (clustering sub-NUMA) ou NPS (Nós por Soquete).

Desabilitar SMT em uma máquina virtual do Azure

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

  1. Verifique o número de núcleos lógicos. O SMT será habilitado 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. Desabilite o SMT com as duas alterações de registro a seguir e reinicialize 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 a contagem de núcleos lógicos em instâncias bare-metal

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

Intel Xeon CPU

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

Nota

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

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

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

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

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

AMD CPU

Em CPUs AMD, você pode habilitar várias opções de nós por soquete (NPS).

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

Comentários

Os sistemas com mais de um processador físico ou sistemas com processadores físicos que têm 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 você tiver um computador com dois processadores com núcleo quádruplo, 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 observar que:

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

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

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

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

  • Um número máximo de núcleos como 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 é um modo eficiente de usar a capacidade de computação de um servidor físico com mais soquetes e/ou núcleos que os permitidos pelos limites de capacidade.

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

SQL Server edição Capacidade máxima de computação para uma só instância (Mecanismo de Banco de Dados do SQL Server) Capacidade máxima de computação para uma única instância (AS, RS)
Edição Enterprise: licenciamento baseado em núcleo 1 Máximo do sistema operacional Máximo do sistema operacional
Desenvolvedor Máximo do sistema operacional Máximo do sistema operacional
Standard Limitado a menos de 4 soquetes ou 24 núcleos Limitado a menos de 4 soquetes ou 24 núcleos
Express Limitado a menos de 1 soquete ou 4 núcleos Limitado a menos de 1 soquete ou 4 núcleos

1 O licenciamento da Edição Enterprise com Servidor + CAL (licença de acesso para cliente) é limitado a 20 núcleos por Instância do SQL Server. (Esse licenciamento não está disponível para novos contratos.) Não há limites no modelo de Licenciamento de Servidor Baseado em Núcleo.

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

Por exemplo, um servidor com quatro soquetes preenchidos com processadores com núcleo quádruplo e com a capacidade para habilitar dois threads SMT por núcleo contém 32 processadores lógicos com o SMT habilitado. No entanto, ele contém só 16 processadores lógicos com SMT desabilitado. 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.

Quando o desempenho de cada processador virtual for importante, você poderá desabilitar o SMT. Você pode configurar o SMT usando uma configuração de BIOS para o processador durante a instalação da BIOS, mas é geralmente uma operação no escopo do servidor, que afeta todas as cargas de trabalho que estiverem sendo executadas no servidor. Você pode considerar separar as cargas de trabalho que são executadas em ambientes virtualizados das cargas de trabalho que se beneficiariam do aumento de desempenho do SMT em um ambiente de sistema operacional físico.

Obter ajuda

Contribua com a documentação do SQL

Você sabia que pode editar conteúdo do SQL por conta própria? Ao fazer isso, além de melhorar nossa documentação, você também será creditado como um colaborador da página.

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