Adaptadores de rede para ajuste do desempenho

Aplica-se a: Windows Server 2022, Windows Server 2019, Windows Server 2016, Azure Stack HCI, versões 21H2 e 20H2

Use as informações neste tópico para ajustar os adaptadores de rede de desempenho para computadores que estão executando Windows Server 2016 e versões posteriores. Se os adaptadores de rede fornecerem opções de ajuste, você poderá usar essas opções para otimizar a taxa de transferência de rede e o uso de recursos.

As corretas configurações de ajuste para seu adaptador de rede depende das seguintes variáveis:

  • O adaptador de rede e seu conjunto de recursos
  • O tipo de carga de trabalho que o servidor executa
  • Os recursos de hardware e software do servidor
  • Seus objetivos de desempenho para o servidor

As seções a seguir descrevem algumas de suas opções de ajuste de desempenho.

Habilitando recursos de descarregamento

O ajuste nos recursos de descarregamento do adaptador de rede normalmente é benéfico. No entanto, o adaptador de rede pode não ser poderoso o suficiente para lidar com os recursos de descarregamento com alta taxa de transferência.

Importante

Não use os recursos de descarregamento Descarregamento de Tarefa IPsec ou Descarregamento de TCP Chimney. Essas tecnologias foram preteridas em Windows Server 2016 e podem afetar negativamente o desempenho do servidor e da rede. Além disso, essas tecnologias podem não ter suporte da Microsoft no futuro.

Por exemplo, considere um adaptador de rede que tenha recursos de hardware limitados. Nesse caso, habilitar os recursos de descarregamento de segmentação pode reduzir a taxa de transferência máxima sustentável do adaptador. No entanto, se a taxa de transferência reduzida for aceitável, você deverá habilitar os recursos de descarregamento de segmentação.

Observação

Alguns adaptadores de rede exigem que você habilite recursos de descarregamento independentemente para os caminhos de envio e recebimento.

Habilitando RSS (Receive Side Scaling) para servidores Web

O RSS pode melhorar a escalabilidade e o desempenho da Web quando há menos adaptadores de rede do que processadores lógicos no servidor. Quando todo o tráfego está passando pelos adaptadores de rede habilitados para RSS, o servidor pode processar as solicitações da Web que entram de diferentes conexões simultaneamente em diferentes CPUs.

Importante

Evite usar adaptadores de rede não RSS e adaptadores de rede compatíveis com RSS no mesmo servidor. Devido à lógica de distribuição de carga no RSS e no protocolo HTTP (Hypertext Transfer Protocol), o desempenho pode ser drasticamente reduzido se um adaptador de rede não habilitado para RSS aceitar tráfego da Web em um servidor que possui um ou mais adaptadores de rede habilitados para RSS. Nesse caso, você deve usar adaptadores de rede habilitados para RSS ou desabilitar RSS na guia Propriedades Avançadas das propriedades do adaptador de rede.

Para determinar se um adaptador de rede está habilitado para RSS, você pode visualizar as informações RSS na guia Propriedades Avançadas das propriedades do adaptador de rede.

Perfis RSS e filas RSS

O perfil predefinido RSS padrão é NUMAStatic, que difere do padrão usado pelas versões anteriores do Windows. Antes de começar a usar os perfis RSS, revise os perfis disponíveis para entender quando eles são benéficos e como se aplicam ao seu ambiente de rede e hardware.

Por exemplo, se você abrir o Gerenciador de Tarefas e examinar os processadores lógicos em seu servidor, e eles parecerem subutilizados para receber tráfego, você pode tentar aumentar o número de filas RSS do padrão de dois para o máximo que seu adaptador de rede aceita. Seu adaptador de rede pode ter opções para alterar o número de filas RSS como parte do driver.

Aumentando recursos de adaptador de rede

Para adaptadores de rede que permitem configurar recursos manualmente, como buffers de recebimento e envio, você deve aumentar os recursos alocados.

Alguns adaptadores de rede configuram seus buffers de recebimento como baixos para preservar a memória alocada do host. O valor baixo resulta em pacotes descartados e desempenho reduzido. Portanto, para cenários de recebimento intenso, recomendamos aumentar o valor do buffer de recebimento para o máximo.

Observação

Se um adaptador de rede não expõe a configuração de recurso manual, ele configura os recursos dinamicamente, ou os recursos são definidos para um valor fixo que não pode ser alterado.

Habilitar moderação de interrupção

Para controlar a moderação de interrupção, alguns adaptadores de rede expõem diferentes níveis de moderação de interrupção, parâmetros de conciliação de buffer diferentes (às vezes separadamente para buffers de envio e recebimento) ou ambos.

Você deve considerar a moderação de interrupção para cargas de trabalho associadas à CPU. Ao usar a moderação de interrupção, considere a compensação entre a economia de CPU do host e a latência versus a maior economia de CPU do host devido a mais interrupções e menos latência. Se o adaptador de rede não executar a moderação de interrupção, mas expor a união de buffer, você poderá melhorar o desempenho aumentando o número de buffers agrupados para permitir mais buffers por envio ou recebimento.

Ajuste de desempenho para processamento de pacote de baixa latência

Muitos adaptadores de rede fornecem opções para otimizar a latência induzida pelo sistema operacional. A latência é o tempo decorrido entre o momento em que o driver de rede processa um pacote recebido e o driver de rede envia o pacote de volta. Esse tempo geralmente é medido em microssegundos. Para comparar, o tempo de transmissão nas transmissões de pacote em longas distâncias geralmente é medido em milissegundos (uma ordem de magnitude maior). Esse ajuste não reduzirá o tempo que um pacote gasta em trânsito.

A seguir estão algumas sugestões de ajuste no desempenho para redes sensíveis a microssegundo.

  • Defina o BIOS do computador para Alto Desempenho, com estados C desabilitados. Entretanto, observe que isso depende do sistema e do BIOS, alguns sistemas fornecerão maior desempenho se o sistema operacional controlar o gerenciamento de energia. Você pode verificar e ajustar as configurações de gerenciamento de energia em Configurações ou usando o comando powercfg. Para obter mais informações, veja POpções de linha de comando de Oscdimg.

  • Defina o perfil de gerenciamento de energia do sistema operacional para Sistema de alto desempenho.

    Observação

    Essa configuração não funcionará corretamente se o BIOS do sistema estiver definido para desabilitar o controle de gerenciamento de energia do sistema operacional.

  • Habilitar descarregamentos estáticos. Por exemplo, habilite somas de verificação UDP, somas de verificação TCP e LSO (Descarregamento de Envio Grande).

  • Se o tráfego for de vários fluxos, como ao receber tráfego multicast de alto volume, habilite o RSS.

  • Desabilite a configuração Moderação de interrupção dos drivers da placa de rede que requerem a menor latência possível. Lembre-se de que essa configuração pode usar mais tempo de CPU e representar um comprometimento.

  • Manipule as interrupções do adaptador de rede e DPCs em um processador de núcleo que compartilha cache de CPU com o núcleo que está sendo usado pelo programa (thread de usuário) que está lidando com o pacote. O ajuste na afinidade da CPU pode ser usado para direcionar um processo para determinados processadores lógicos em conjunto com a configuração de RSS com essa finalidade. O uso do mesmo núcleo para interrupção, DPC e thread de modo de usuário revela piora no desempenho na medida em que a carga aumenta, porque o ISR, DPC e thread disputam o uso do núcleo.

Interrupções de gerenciamento do sistema

Muitos sistemas de hardware usam Interrupções de gerenciamento de sistema (SMI) para uma variedade de funções de manutenção, incluindo relatório de erros de memória ECC (código de correção de erro), compatibilidade de USB herdada, controle do ventilador e gerenciamento de energia controlado do BIOS.

O SMI é a interrupção de prioridade mais alta no sistema e coloca a CPU em um modo de gerenciamento. Este modo interrompe todas as outras atividades enquanto o SMI executa uma rotina de serviço de interrupção, normalmente contida no BIOS.

Infelizmente, esse comportamento pode resultar em picos de latência de 100 microssegundos ou mais.

Se for necessário obter a menor latência, você deve solicitar uma versão do BIOS, junto a seu fornecedor de hardware, que reduza as SMIs para o menor nível possível. Essas versões do BIOS são frequentemente chamadas de "BIOS de baixa latência" ou "BIOS livre de SMI". Em alguns casos, não é possível que uma plataforma de hardware elimine completamente a atividade de SMI porque ela é usada para controlar funções essenciais (por exemplo, ventiladores de resfriamento).

Observação

O sistema operacional pode não controlar as SMIs, porque o processador lógico está executando em um modo de manutenção especial, que impede a intervenção do sistema operacional.

TCP de ajuste de desempenho

Você pode usar os itens a seguir para ajustar o desempenho do TCP.

Ajuste automático da janela de recebimento de TCP

No Windows Vista, Windows Server 2008 e versões posteriores do Windows, a pilha de rede do Windows usa um recurso chamado nível de ajuste automático da janela de recebimento TCP para negociar o tamanho da janela de recebimento TCP. Esse recurso pode negociar um tamanho de janela de recebimento definido para cada comunicação TCP durante o Handshake TCP.

Em versões anteriores do Windows, a pilha de rede do Windows usava uma janela de recebimento de tamanho fixo (65.535 bytes) que limitava a taxa de transferência potencial geral para conexões. A taxa de transferência total alcançável de conexões TCP pode limitar cenários de uso de rede. O ajuste automático da janela de recebimento TCP permite que esses cenários usem totalmente a rede.

Para uma janela de recebimento TCP que tenha um tamanho específico, você pode usar a equação a seguir para calcular a taxa de transferência total de uma única conexão.

Taxa de transferência total alcançável em bytes = Tamanho da janela de recebimento TCP em bytes * (latência de conexão de 1/em segundos)

Por exemplo, para uma conexão que tem uma latência de 10 ms, a taxa de transferência total alcançável é de apenas 51 Mbps. Esse valor é razoável para uma grande infraestrutura de rede corporativa. No entanto, usando o ajuste automático para ajustar a janela de recebimento, a conexão pode obter a taxa de linha completa de uma conexão de 1 Gbps.

Alguns aplicativos definem o tamanho da janela de recebimento TCP. Se o aplicativo não definir o tamanho da janela de recebimento, a velocidade do link determinará o tamanho da seguinte maneira:

  • Menos de 1 megabit por segundo (Mbps): 8 quilobytes (KB)
  • 1 Mbps a 100 Mbps: 17 KB
  • 100 Mbps a 10 gigabits por segundo (Gbps): 64 KB
  • 10 Gbps ou mais rápido: 128 KB

Por exemplo, em um computador que tenha um adaptador de rede de 1 Gbps instalado, o tamanho da janela deve ser de 64 KB.

Esse recurso também faz uso completo de outros recursos para melhorar o desempenho da rede. Esses recursos incluem o restante das opções TCP definidas no RFC 1323. Usando esses recursos, os computadores baseados em Windows podem negociar tamanhos de janela de recebimento TCP menores, mas que são dimensionados com um valor definido, dependendo da configuração. Esse comportamento facilita o processamento dos tamanhos para dispositivos de rede.

Observação

Você pode enfrentar um problema no qual o dispositivo de rede não está em conformidade com a opção de escala de janela TCP, conforme definido no RFC 1323 e, portanto, não dá suporte ao fator de escala. Nesses casos, consulte esta KB 934430, A conectividade de rede falha quando você tenta usar o Windows Vista atrás de um dispositivo de firewall ou contata a equipe de suporte do fornecedor do dispositivo de rede.

Examinar e configurar o nível de ajuste automático da janela de recebimento TCP

Você pode usar comandos netsh ou cmdlets Windows PowerShell para examinar ou modificar o nível de ajuste automático da janela de recebimento TCP.

Observação

Ao contrário das versões do Windows que datam previamente Windows 10 ou o Windows Server 2019, você não pode mais usar o Registro para configurar o tamanho da janela de recebimento TCP. Para obter mais informações sobre as configurações preteridas, consulte Parâmetros TCP preteridos.

Observação

Para obter informações detalhadas sobre os níveis de ajuste automático disponíveis, consulte Níveis de ajuste automático.

Para usar netsh para examinar ou modificar o nível de ajuste automático

Para examinar as configurações atuais, abra uma janela do Prompt de Comando e execute o seguinte comando:

netsh interface tcp show global

O resultado desse comando deve ser semelhante ao seguinte:

Querying active state...

TCP Global Parameters
-----
Receive-Side Scaling State : enabled
Chimney Offload State : disabled
Receive Window Auto-Tuning Level : normal
Add-On Congestion Control Provider : default
ECN Capability : disabled
RFC 1323 Timestamps : disabled
Initial RTO : 3000
Receive Segment Coalescing State : enabled
Non Sack Rtt Resiliency : disabled
Max SYN Retransmissions : 2
Fast Open : enabled
Fast Open Fallback : enabled
Pacing Profile : off

Para modificar a configuração, execute o seguinte comando no prompt de comando:

netsh interface tcp set global autotuninglevel=<Value>

Observação

No comando anterior, <Value> representa o novo valor para o nível de ajuste automático.

Para obter mais informações sobre esse comando, consulte Comandos Netsh para o Protocolo de Controle de Transmissão de Interface.

Para usar PowerShell para examinar ou modificar o nível de ajuste automático

Para examinar as configurações atuais, abra uma janela do PowerShell e execute o cmdlet a seguir.

Get-NetTCPSetting | Select SettingName,AutoTuningLevelLocal

O resultado desse cmdlet deve ser semelhante ao seguinte:

SettingName           AutoTuningLevelLocal
-----------          --------------------
Automatic
InternetCustom       Normal
DatacenterCustom     Normal
Compat               Normal
Datacenter           Normal
Internet             Normal

Para modificar a configuração, execute o cmdlet a seguir no prompt de comando do PowerShell.

Set-NetTCPSetting -AutoTuningLevelLocal <Value>

Observação

No comando anterior, <Value> representa o novo valor para o nível de ajuste automático.

Para obter mais informações sobre esses cmdlets, consulte os seguintes artigos:

Níveis de ajuste automático

Você pode definir o ajuste automático da janela de recebimento para qualquer um dos cinco níveis. O nível padrão é Normal. A tabela a seguir descreve os níveis.

Nível Valor hexadecimal Comentários
Normal (padrão) 0x8 (fator de escala de 8) Defina a janela de recebimento TCP para aumentar para acomodar quase todos os cenários.
Desabilitado Nenhum fator de escala disponível Defina a janela de recebimento TCP com seu valor padrão.
Restritos 0x4 (fator de escala de 4) Defina a janela de recebimento TCP para crescer além de seu valor padrão, mas limite esse crescimento em alguns cenários.
Altamente restrito 0x2 (fator de escala de 2) Defina a janela de recebimento TCP para crescer além de seu valor padrão, mas faça isso de forma muito conservadora.
Habilitação 0xE (fator de escala de 14) Defina a janela de recebimento TCP para aumentar para acomodar os cenários extremos.

Se você usar um aplicativo para capturar pacotes de rede, o aplicativo deverá relatar dados semelhantes aos seguintes para diferentes configurações de nível de ajuste automático de janela.

  • Nível de ajuste automático: normal (estado padrão)

    Frame: Number = 492, Captured Frame Length = 66, MediaType = ETHERNET
    + Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[D8-FE-E3-65-F3-FD],SourceAddress:[C8-5B-76-7D-FA-7F]
    + Ipv4: Src = 192.169.0.5, Dest = 192.169.0.4, Next Protocol = TCP, Packet ID = 2667, Total IP Length = 52
    - Tcp: [Bad CheckSum]Flags=......S., SrcPort=60975, DstPort=Microsoft-DS(445), PayloadLen=0, Seq=4075590425, Ack=0, Win=64240 ( Negotiating scale factor 0x8 ) = 64240
    SrcPort: 60975
    DstPort: Microsoft-DS(445)
    SequenceNumber: 4075590425 (0xF2EC9319)
    AcknowledgementNumber: 0 (0x0)
    + DataOffset: 128 (0x80)
    + Flags: ......S. ---------------------------------------------------------> SYN Flag set
    Window: 64240 ( Negotiating scale factor 0x8 ) = 64240 ---------> TCP Receive Window set as 64K as per NIC Link bitrate. Note it shows the 0x8 Scale Factor.
    Checksum: 0x8182, Bad
    UrgentPointer: 0 (0x0)
    - TCPOptions:
    + MaxSegmentSize: 1
    + NoOption:
    + WindowsScaleFactor: ShiftCount: 8 -----------------------------> Scale factor, defined by AutoTuningLevel
    + NoOption:
    + NoOption:
    + SACKPermitted:
    
  • Nível de ajuste automático: Desabilitado

    Frame: Number = 353, Captured Frame Length = 62, MediaType = ETHERNET
    + Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[D8-FE-E3-65-F3-FD],SourceAddress:[C8-5B-76-7D-FA-7F]
    + Ipv4: Src = 192.169.0.5, Dest = 192.169.0.4, Next Protocol = TCP, Packet ID = 2576, Total IP Length = 48
    - Tcp: [Bad CheckSum]Flags=......S., SrcPort=60956, DstPort=Microsoft-DS(445), PayloadLen=0, Seq=2315885330, Ack=0, Win=64240 ( ) = 64240
    SrcPort: 60956
    DstPort: Microsoft-DS(445)
    SequenceNumber: 2315885330 (0x8A099B12)
    AcknowledgementNumber: 0 (0x0)
    + DataOffset: 112 (0x70)
    + Flags: ......S. ---------------------------------------------------------> SYN Flag set
    Window: 64240 ( ) = 64240 ----------------------------------------> TCP Receive Window set as 64K as per NIC Link bitrate. Note there is no Scale Factor defined. In this case, Scale factor is not being sent as a TCP Option, so it will not be used by Windows.
    Checksum: 0x817E, Bad
    UrgentPointer: 0 (0x0)
    - TCPOptions:
    + MaxSegmentSize: 1
    + NoOption:
    + NoOption:
    + SACKPermitted:
    
  • Nível de ajuste automático: Desabilitado

    Frame: Number = 3, Captured Frame Length = 66, MediaType = ETHERNET
    + Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[D8-FE-E3-65-F3-FD],SourceAddress:[C8-5B-76-7D-FA-7F]
    + Ipv4: Src = 192.169.0.5, Dest = 192.169.0.4, Next Protocol = TCP, Packet ID = 2319, Total IP Length = 52
    - Tcp: [Bad CheckSum]Flags=......S., SrcPort=60890, DstPort=Microsoft-DS(445), PayloadLen=0, Seq=1966088568, Ack=0, Win=64240 ( Negotiating scale factor 0x4 ) = 64240
    SrcPort: 60890
    DstPort: Microsoft-DS(445)
    SequenceNumber: 1966088568 (0x75302178)
    AcknowledgementNumber: 0 (0x0)
    + DataOffset: 128 (0x80)
    + Flags: ......S. ---------------------------------------------------------> SYN Flag set
    Window: 64240 ( Negotiating scale factor 0x4 ) = 64240 ---------> TCP Receive Window set as 64K as per NIC Link bitrate. Note it shows the 0x4 Scale Factor.
    Checksum: 0x8182, Bad
    UrgentPointer: 0 (0x0)
    - TCPOptions:
    + MaxSegmentSize: 1
    + NoOption:
    + WindowsScaleFactor: ShiftCount: 4 -------------------------------> Scale factor, defined by AutoTuningLevel.
    + NoOption:
    + NoOption:
    + SACKPermitted:
    
  • Nível de ajuste automático: Altamente restrito

    Frame: Number = 115, Captured Frame Length = 66, MediaType = ETHERNET
    + Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[D8-FE-E3-65-F3-FD],SourceAddress:[C8-5B-76-7D-FA-7F]
    + Ipv4: Src = 192.169.0.5, Dest = 192.169.0.4, Next Protocol = TCP, Packet ID = 2388, Total IP Length = 52
    - Tcp: [Bad CheckSum]Flags=......S., SrcPort=60903, DstPort=Microsoft-DS(445), PayloadLen=0, Seq=1463725706, Ack=0, Win=64240 ( Negotiating scale factor 0x2 ) = 64240
    SrcPort: 60903
    DstPort: Microsoft-DS(445)
    SequenceNumber: 1463725706 (0x573EAE8A)
    AcknowledgementNumber: 0 (0x0)
    + DataOffset: 128 (0x80)
    + Flags: ......S. ---------------------------------------------------------> SYN Flag set
    Window: 64240 ( Negotiating scale factor 0x2 ) = 64240 ---------> TCP Receive Window set as 64K as per NIC Link bitrate. Note it shows the 0x2 Scale Factor.
    Checksum: 0x8182, Bad
    UrgentPointer: 0 (0x0)
    - TCPOptions:
    + MaxSegmentSize: 1
    + NoOption:
    + WindowsScaleFactor: ShiftCount: 2 ------------------------------> Scale factor, defined by AutoTuningLevel
    + NoOption:
    + NoOption:
    + SACKPermitted:
    
  • Nível de ajuste automático: Experimental

    Frame: Number = 238, Captured Frame Length = 66, MediaType = ETHERNET
    + Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[D8-FE-E3-65-F3-FD],SourceAddress:[C8-5B-76-7D-FA-7F]
    + Ipv4: Src = 192.169.0.5, Dest = 192.169.0.4, Next Protocol = TCP, Packet ID = 2490, Total IP Length = 52
    - Tcp: [Bad CheckSum]Flags=......S., SrcPort=60933, DstPort=Microsoft-DS(445), PayloadLen=0, Seq=2095111365, Ack=0, Win=64240 ( Negotiating scale factor 0xe ) = 64240
    SrcPort: 60933
    DstPort: Microsoft-DS(445)
    SequenceNumber: 2095111365 (0x7CE0DCC5)
    AcknowledgementNumber: 0 (0x0)
    + DataOffset: 128 (0x80)
    + Flags: ......S. ---------------------------------------------------------> SYN Flag set
    Window: 64240 ( Negotiating scale factor 0xe ) = 64240 ---------> TCP Receive Window set as 64K as per NIC Link bitrate. Note it shows the 0xe Scale Factor.
    Checksum: 0x8182, Bad
    UrgentPointer: 0 (0x0)
    - TCPOptions:
    + MaxSegmentSize: 1
    + NoOption:
    + WindowsScaleFactor: ShiftCount: 14 -----------------------------> Scale factor, defined by AutoTuningLevel
    + NoOption:
    + NoOption:
    + SACKPermitted:
    

Parâmetros TCP preteridos

As seguintes configurações de registro do Windows Server 2003 não são mais suportadas e são ignoradas em versões posteriores.

  • TcpWindowSize
  • NumTcbTablePartitions
  • MaxHashTableSize

Todas essas configurações estavam localizadas na seguinte subchave do Registro:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters

Plataforma de filtragem do Windows

O Windows Vista e o Windows Server 2008 introduziram a WFP (Plataforma de Filtragem do Windows). O WFP fornece APIs para os ISVs (fornecedores independentes de software) não pertencentes à Microsoft para criar filtros de processamento de pacotes. Exemplos incluem software de firewall e antivírus.

Observação

Um filtro WFP mal construído pode diminuir significativamente o desempenho de rede de um servidor. Para obter mais informações, consulte Portabilidade de drivers de processamento de pacote e aplicativos para WFP no Centro de Desenvolvimento do Windows.

Para obter os links para todos os tópicos neste guia, consulte Ajustar desempenho do subsistema de rede.