Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo descreve como otimizar o desempenho do adaptador de rede em ambientes do Windows Server. O ajuste de desempenho do adaptador de rede pode melhorar significativamente a taxa de transferência, reduzir a latência e maximizar a utilização de recursos para as cargas de trabalho do servidor.
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 configurações de ajuste ideais dependem da configuração de hardware, dos requisitos de carga de trabalho e dos objetivos de desempenho específicos. Antes de implementar as alterações, avalie o desempenho da rede atual e identifique as áreas para aprimoramento. Alguns recursos e configurações podem variar entre versões.
As seções a seguir descrevem algumas de suas opções de ajuste de desempenho.
Recursos de descarregamento
Os recursos de descarregamento de rede transferem tarefas de processamento da CPU para o hardware do adaptador de rede, reduzindo a sobrecarga do sistema e melhorando o desempenho geral da rede. Os recursos de descarregamento comuns incluem descarregamento de soma de verificação TCP, descarregamento de envio grande (LSO) e RSS (Receive Side Scaling).
Ativar os recursos de descarregamento do adaptador de rede costuma ser 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. Por exemplo, considere um adaptador de rede com 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.
Alguns adaptadores de rede exigem que você habilite recursos de descarregamento independentemente para os caminhos de envio e recebimento.
Important
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, a Microsoft pode não dar suporte a essas tecnologias no futuro.
Escalonamento do lado da recepção (RSS) para servidores da 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.
Important
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. Nesta circunstância, você deve usar adaptadores de rede compatíveis com RSS ou desabilitar o RSS na guia Propriedades Avançadas das propriedades do adaptador de rede.
Para determinar se um adaptador de rede é compatível com RSS, você pode exibir as informações do RSS na guia Propriedades Avançadas das propriedades do adaptador de rede.
Perfis RSS e filas RSS.
O perfil predefinido do RSS padrão é NUMAStatic. Antes de começar a usar os perfis RSS, analise os perfis disponíveis para entender quando eles são úteis e como se aplicam ao seu ambiente de rede e ao seu hardware.
Por exemplo, abra o Gerenciador de Tarefas e examine os processadores lógicos em seu servidor. Se eles parecerem subutilizados para receber tráfego, você poderá tentar aumentar o número de filas RSS do padrão de duas para o máximo compatível com o adaptador de rede. Seu adaptador de rede pode ter opções para alterar o número de filas RSS como parte do driver.
Recursos do 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.
Se um adaptador de rede não expõe a configuração manual de recursos, ele configura dinamicamente os recursos ou os recursos são definidos com um valor fixo que não pode ser alterado.
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 conciliação de buffer, você poderá melhorar o desempenho aumentando o número de buffers conciliados para permitir mais buffers por envio ou recebimento.
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 reduz o tempo que um pacote passa em trânsito.
A lista a seguir apresenta algumas sugestões de ajuste de desempenho para redes sensíveis a microssegundos:
Se o BIOS der suporte a ele, defina o BIOS do computador como alto desempenho, com
C-statesdesabilitado. Alguns sistemas fornecem um desempenho mais alto se o sistema operacional controlar o gerenciamento de energia. Você pode verificar e ajustar as configurações de gerenciamento de energia de configurações de energia ou usando o comandopowercfg. 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. Essa configuração não funcionará corretamente se o BIOS do sistema estiver definido para desabilitar o controle do sistema operacional do gerenciamento de energia.
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 de Moderação de Interrupção para drivers de cartão de rede que exigem 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 de afinidade de CPU pode ser usado para direcionar um processo para determinados processadores lógicos com configuração de RSS. 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 várias 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 sem SMI. Em alguns casos, não é possível que uma plataforma de hardware elimine totalmente a atividade de SMI porque ela é usada para controlar funções essenciais, como ventiladores de resfriamento.
O sistema operacional não pode controlar as SMIs porque o processador lógico está sendo executado em um modo de manutenção especial, o que impede a intervenção do sistema operacional.
Ajuste automático da janela de recebimento de TCP
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 e pode melhorar o desempenho das conexões TCP.
Anteriormente, a pilha de rede do Windows usava uma janela de recebimento de tamanho fixo de 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 do TCP permite que esses cenários usem totalmente a rede.
Para uma janela de recepção TCP que tenha um tamanho específico, você pode usar a seguinte equação 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 de 1 Gbps 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 alcançar a taxa de linha completa 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:
| Velocidade do link | Tamanho da janela de recebimento |
|---|---|
| Menos de 1 Mbps | 8 KB |
| 1 Mbps a 100 Mbps | 17 KB |
| 100 Mbps a 10 Gbps | 64 KB |
| 10 Gbps ou mais rápido | 128 KB |
Por exemplo, em um computador com 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. Computadores baseados em Windows podem usar esses recursos para 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 manuseio dos tamanhos pelos dispositivos de rede.
Note
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 oferece suporte ao fator de escala. Nesses casos, entre em contato com o fornecedor do dispositivo de rede.
Níveis de ajuste automático
Você pode definir o ajuste automático da janela de recepção do TCP em qualquer um dos cinco níveis. O nível padrão é Normal. A tabela a seguir descreve os níveis.
| Level | Valor hexadecimal | Comments |
|---|---|---|
| Normal (padrão) | 0x8 (fator de escala de 8) | Defina a janela de recebimento TCP para aumentar para acomodar quase todos os cenários. |
| Disabled | Nenhum fator de escala disponível | Defina a janela de recebimento TCP com seu valor padrão. |
| Restricted | 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. |
| Experimental | 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 exemplos a seguir para diferentes configurações de nível de ajuste automático de janela.
Nível de ajuste automático: normal (estado padrão)
Este exemplo mostra a saída de uma ferramenta de captura de pacotes quando o nível de ajuste automático da janela de recebimento TCP é definido como Normal. O fator de escala é 8.
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
Este exemplo mostra a saída de uma ferramenta de captura de pacotes quando o nível de ajuste automático da janela de recebimento TCP é definido como Desabilitado. O fator de escala não é usado.
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
Este exemplo mostra a saída de uma ferramenta de captura de pacotes quando o nível de ajuste automático da janela de recebimento TCP é definido como Restrito. O fator de escala é 4.
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
Este exemplo mostra a saída de uma ferramenta de captura de pacotes quando o nível de ajuste automático da janela de recebimento TCP é definido como Altamente Restrito. O fator de escala é 2.
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
Este exemplo mostra a saída de uma ferramenta de captura de pacotes quando o nível de ajuste automático da janela de recebimento TCP é definido como Experimental. O fator de escala é 14.
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:
Examinar e configurar o nível de ajuste automático da janela de recebimento TCP
Você pode usar cmdlets do Windows PowerShell ou o comando do netsh Windows para examinar ou alterar o nível de ajuste automático da janela de recebimento TCP.
Note
A partir do Windows Server 2019, você não pode mais usar o registro para configurar o tamanho da janela de recebimento do TCP. Para obter mais informações sobre as configurações preteridas, consulte Parâmetros TCP preteridos.
Você pode usar o cmdlet Get-NetTCPSetting para examinar ou modificar o nível de ajuste automático. Para examinar e alterar a configuração atual:
Abra o PowerShell como um administrador e execute o seguinte cmdlet:
Get-NetTCPSetting | Select SettingName,AutoTuningLevelLocalA saída deverá ser semelhante ao seguinte exemplo:
SettingName AutoTuningLevelLocal ----------- -------------------- Automatic InternetCustom Normal DatacenterCustom Normal Compat Normal Datacenter Normal Internet NormalPara alterar a configuração, execute o seguinte comando. Certifique-se de definir
<value>para o nível de ajuste automático desejado. Para obter mais informações, consulte Set-NetTCPSetting.Set-NetTCPSetting -AutoTuningLevelLocal <value>
Plataforma de filtragem do Windows
A Plataforma de Filtragem do Windows (WFP), introduzida no Windows Server 2008, fornece APIs para ISVs (fornecedores de software independentes) não microsoft para criar filtros de processamento de pacotes. A WFP permite que software de terceiros inspecione, modifique ou filtre o tráfego de rede em várias camadas da pilha de rede. Embora essa funcionalidade seja essencial para aplicativos de segurança, ela pode introduzir sobrecarga de desempenho se não for implementada corretamente. Exemplos incluem software de firewall e antivírus.
Um filtro WFP mal escrito pode reduzir significativamente o desempenho da 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.
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