Partilhar via


Escolhendo um adaptador de rede

É possível usar este tópico para conhecer alguns dos recursos dos adaptadores de rede que podem afetar suas opções de compra.

Aplicativos com uso intensivo de rede exigem adaptadores de rede de alto desempenho. Esta seção explora algumas considerações ao escolher adaptadores de rede e como definir diferentes configurações de adaptador de rede para obter o melhor desempenho de rede.

Dica

Você pode definir as configurações do adaptador de rede usando o Windows PowerShell. Para obter mais informações, consulte Cmdlets de adaptador de rede no Windows PowerShell.

Recursos de descarregamento

O descarregamento de tarefas da CPU (unidade de processamento central) para o adaptador de rede pode reduzir o uso da CPU no servidor e isso melhora o desempenho geral do sistema.

A pilha de rede em produtos da Microsoft pode descarregar uma ou mais tarefas em um adaptador de rede se você selecionar um adaptador de rede que tenha os recursos de descarregamento adequados. A tabela a seguir fornece uma breve visão geral dos diferentes recursos de descarregamento disponíveis no Windows Server 2016.

Tipo de descarregamento Descrição
Cálculo da soma de verificação para TCP A pilha de rede pode descarregar o cálculo e a validação de somas de verificação TCP (protocolo TCP) ao enviar e receber demarcadores de código. Ele também pode descarregar o cálculo e a validação de somas de verificação IPv4 e IPv6 ao enviar e receber demarcadores de código.
Cálculo da soma de verificação para UDP A pilha de rede pode descarregar o cálculo e a validação de somas de verificação UDP (protocolo UDP) ao enviar e receber demarcadores de código.
Cálculo da soma de verificação para IPv4 A pilha de rede pode descarregar o cálculo e a validação de somas de verificação IPv4 ao enviar e receber demarcadores de código.
Cálculo da soma de verificação para IPv6 A pilha de rede pode descarregar o cálculo e a validação de somas de verificação IPv6 ao enviar e receber demarcadores de código.
Segmentação de pacotes TCP grandes A camada de transporte TCP/IP dá suporte ao LSOv2 (Descarregamento de Envio Grande v2). Com o LSOv2, a camada de transporte TCP/IP pode descarregar a segmentação de pacotes TCP grandes no adaptador de rede.
RSS (Receive Side Scaling) O RSS é uma tecnologia de driver de rede que permite a distribuição eficiente do processamento de recebimento de rede por várias CPUs em sistemas multiprocessadores. Mais tarde neste tópico são fornecidos mais detalhes sobre RSS.
Receive Segment Coalescing (RSC) RSC é a capacidade de unir pacotes para minimizar o processamento de cabeçalho necessário para que o host seja executado. Um máximo de 64 KB de carga recebida pode ser agrupado em um único pacote grande para processamento. Mais tarde neste tópico são fornecidos mais detalhes sobre a RSC.

Receive Side Scaling

Windows Server 2016, Windows Server 2012, Windows Server 2012 R2, Windows Server 2008 R2 e Windows Server 2008 suporte ao RSS (Receive Side Scaling).

Alguns servidores são configurados com vários processadores lógicos que compartilham recursos de hardware (como um núcleo físico) e que são tratados como pares SMT (Simultaneous Multi-Threading). A tecnologia de Hyper-threading da Intel é um exemplo. O RSS direciona o processamento de rede para até um processador lógico por núcleo. Por exemplo, em um servidor com a Hyper-threading da Intel, 4 núcleos e 8 processadores lógicos, o RSS usa no máximo 4 processadores lógicos para processamento de rede.

O RSS distribui pacotes de E/S de rede de entrada entre processadores lógicos para que os pacotes que pertencem à mesma conexão TCP sejam processados no mesmo processador lógico, o que preserva a ordenação.

O RSS também balanceia a carga do tráfego unicast e multicast UDP e roteia fluxos relacionados (que são determinados pelo hash dos endereços de origem e destino) para o mesmo processador lógico, preservando a ordem das chegadas relacionadas. Isso ajuda a melhorar a escalabilidade e o desempenho em cenários com uso intensivo de recebimento dos servidores que têm menos adaptadores de rede do que processadores lógicos qualificados.

Configurando RSS

No Windows Server 2016, você pode configurar o RSS usando cmdlets do Windows PowerShell e perfis RSS.

Você pode definir perfis RSS usando o parâmetro –Profile do cmdlet Set-NetAdapterRss do Windows PowerShell.

Comandos do Windows PowerShell para configuração RSS

Os cmdlets a seguir permitem exibir e modificar parâmetros RSS por adaptador de rede.

Observação

Para obter uma referência de comando detalhada de cada cmdlet, incluindo sintaxe e parâmetros, você pode clicar nos links a seguir. Além disso, você pode passar o nome do cmdlet para Get-Help no prompt do Windows PowerShell para obter detalhes sobre cada comando.

  • Disable-NetAdapterRss. Esse comando desabilita o RSS no adaptador de rede que você especificar.

  • Enable-NetAdapterRss. Esse comando habilita o RSS no adaptador de rede que você especificar.

  • Get-NetAdapterRss. Esse comando recupera as propriedades RSS do adaptador de rede que você especificar.

  • Set-NetAdapterRss. Esse comando define as propriedades RSS no adaptador de rede que você especificar.

Perfis RSS

Você pode usar o parâmetro –Profile do cmdlet Set-NetAdapterRss para especificar quais processadores lógicos são atribuídos a qual adaptador de rede. Os valores disponíveis para esse parâmetro são:

  • Mais próximo. Os números do processador lógico que estão próximos ao processador RSS base do adaptador de rede são preferenciais. Com esse perfil, o sistema operacional pode redistribuir processadores lógicos baseados em carga de forma dinâmica.

  • ClosestStatic. Os números do processador lógico próximos ao processador RSS base do adaptador de rede são preferenciais. Com esse perfil, o sistema operacional não redistribui processadores lógicos baseados em carga de forma dinâmica.

  • NUMA. Os números do processador lógico geralmente são selecionados em diferentes nós NUMA para distribuir a carga. Com esse perfil, o sistema operacional pode redistribuir processadores lógicos baseados em carga de forma dinâmica.

  • NUMAStatic. Esse é o perfil padrão. Os números do processador lógico geralmente são selecionados em diferentes nós NUMA para distribuir a carga. Com esse perfil, o sistema operacional não redistribuirá processadores lógicos baseados em carga de forma dinâmica.

  • Conservador. O RSS usa o mínimo de processadores suficientes para sustentar a carga. Essa opção ajuda a reduzir o número de interrupções.

Dependendo do cenário e das características da carga de trabalho, você também pode usar outros parâmetros do cmdlet Set-NetAdapterRss do Windows PowerShell para especificar o seguinte:

  • Em uma base de adaptador por rede, quantos processadores lógicos podem ser usados por RSS.
  • O deslocamento inicial para o intervalo de processadores lógicos.
  • O nó a partir do qual o adaptador de rede aloca memória.

A seguir estão os parâmetros set-NetAdapterRss adicionais que você pode usar para configurar o RSS:

Observação

Na sintaxe de exemplo para cada parâmetro abaixo, o nome do adaptador de rede Ethernet é usado como um valor de exemplo para o parâmetro –Name do comando Set-NetAdapterRss. Ao executar o cmdlet, verifique se o nome do adaptador de rede usado é apropriado para seu ambiente.

  • * MaxProcessors: define o número máximo de processadores RSS a serem usados. Isso garante que o tráfego do aplicativo esteja associado a um número máximo de processadores em uma determinada interface. Exemplo de sintaxe:

    Set-NetAdapterRss –Name "Ethernet" –MaxProcessors <value>

  • * BaseProcessorGroup: define o grupo de processadores base de um nó NUMA. Isso afeta a matriz de processadores usada pelo RSS. Exemplo de sintaxe:

    Set-NetAdapterRss –Name "Ethernet" –BaseProcessorGroup <value>

  • * MaxProcessorGroup: define o grupo processador máximo de um nó NUMA. Isso afeta a matriz de processadores usada pelo RSS. Essa definição restringiria um grupo processador máximo para que o balanceamento de carga seja alinhado dentro de um grupo-k. Exemplo de sintaxe:

    Set-NetAdapterRss –Name "Ethernet" –MaxProcessorGroup <value>

  • * BaseProcessorNumber: define o número de processadores base de um nó NUMA. Isso afeta a matriz de processadores usada pelo RSS. Isso permite particionar processadores entre adaptadores de rede. Esse é o primeiro processador lógico no intervalo de processadores RSS atribuídos a cada adaptador. Exemplo de sintaxe:

    Set-NetAdapterRss –Name "Ethernet" –BaseProcessorNumber <Byte Value>

  • * NumaNode: o nó NUMA do qual cada adaptador de rede pode alocar memória. Ele pode estar em um grupo-k ou em grupos-k diferentes. Exemplo de sintaxe:

    Set-NetAdapterRss –Name "Ethernet" –NumaNodeID <value>

  • * NumberofReceiveQueues: se os processadores lógicos parecerem subutilizados para receber tráfego (por exemplo, como exibido no Gerenciador de tarefas), você pode tentar aumentar o número de filas RSS do padrão de 2 para o máximo a que seu adaptador de rede oferece suporte. Seu adaptador de rede deve ter opções para alterar o número de filas RSS como parte do driver. Exemplo de sintaxe:

    Set-NetAdapterRss –Name "Ethernet" –NumberOfReceiveQueues <value>

Para obter mais informações, clique no link a seguir para baixar Rede escalonável: eliminação do gargalo de processamento de recebimento – Introdução ao RSS no formato do Word.

Noções básicas sobre o desempenho do RSS

O ajuste do RSS exige a compreensão da configuração e da lógica de balanceamento de carga. Para verificar se as configurações do RSS entraram em vigor, você pode examinar a saída ao executar o cmdlet Get-NetAdapterRss do Windows PowerShell. Confira a seguir o exemplo de saída desse cmdlet.


PS C:\Users\Administrator> get-netadapterrss
Name                           : testnic 2
InterfaceDescription           : Broadcom BCM5708C NetXtreme II GigE (NDIS VBD Client) #66
Enabled                        : True
NumberOfReceiveQueues          : 2
Profile                        : NUMAStatic
BaseProcessor: [Group:Number]  : 0:0
MaxProcessor: [Group:Number]   : 0:15
MaxProcessors                  : 8

IndirectionTable: [Group:Number]:
     0:0    0:4    0:0    0:4    0:0    0:4    0:0    0:4
…
(# indirection table entries are a power of 2 and based on # of processors)
…
                          0:0    0:4    0:0    0:4    0:0    0:4    0:0    0:4

Além de ecoar parâmetros que foram definidos, o aspecto principal da saída é a saída da tabela de indireção. A tabela de indireção exibe os buckets de tabela de hash usados para distribuir o tráfego de entrada. Neste exemplo, a notação n:c designa o par de índice Numa K-Group:CPU usado para direcionar o tráfego de entrada. Vemos exatamente duas entradas exclusivas (0:0 e 0:4), que representam k-group 0/cpu0 e k-group 0/cpu 4, respectivamente.

Há apenas um grupo-k para esse sistema (k-group 0) e uma entrada de tabela de indireção n (em que n <= 128). Como o número de filas de recebimento é definido como 2, apenas dois processadores (0:0, 0:4) são escolhidos, mesmo que o máximo de processadores esteja definido como 8. Na verdade, a tabela de indireção faz hash do tráfego de entrada para usar apenas 2 CPUs das 8 disponíveis.

Para utilizar totalmente as CPUs, o número de filas de recebimento RSS deve ser igual ou maior ao máximo de processadores. No exemplo anterior, a Fila de Recebimento deve ser definida como 8 ou superior.

Agrupamento NIC e RSS

O RSS pode ser habilitado em um adaptador de rede que é agrupado com outro cartão de adaptador de rede usando o Agrupamento NIC. Nesse cenário, somente o adaptador de rede física subjacente pode ser configurado para usar o RSS. Um usuário não pode definir cmdlets RSS no adaptador de rede agrupado.

Receive Segment Coalescing (RSC)

A RSC (União de Segmentos de Recebimento) ajuda no desempenho, reduzindo o número de cabeçalhos IP processados para uma determinada quantidade de dados recebidos. Ela deve ser usada para ajudar a dimensionar o desempenho dos dados recebidos agrupando (ou unindo) os pacotes menores em unidades maiores.

Essa abordagem pode afetar a latência com benefícios vistos principalmente em ganhos de taxa de transferência. É recomendável que a RSC aumente a taxa de transferência em cargas de trabalho pesadas recebidas. Considere implantar adaptadores de rede que dão suporte à RSC.

Nesses adaptadores de rede, verifique se a RSC está ativada (essa é a configuração padrão), a menos que você tenha cargas de trabalho específicas (por exemplo, baixa latência, rede de baixa taxa de transferência) que se beneficiem com a desativação da RSC.

Noções básicas do diagnóstico da RSC

Você pode diagnosticar a RSC usando os cmdlets Get-NetAdapterRsc e Get-NetAdapterStatistics do Windows PowerShell.

Confira a seguir o exemplo de saída quando você executa o cmdlet Get-NetAdapterRsc.


PS C:\Users\Administrator> Get-NetAdapterRsc

Name                       IPv4Enabled  IPv6Enabled  IPv4Operational IPv6Operational               IPv4FailureReason              IPv6Failure
                                            Reason
----                           -----------  -----------  --------------- --------------- ----------------- ------------
Ethernet                       True         False        True            False                  NoFailure       NicProperties

O cmdlet Get mostra se a RSC está habilitada na interface e se o TCP permite que a RSC esteja em um estado operacional. O motivo da falha fornece detalhes sobre a falha ao habilitar a RSC nessa interface.

No cenário anterior, há suporte para a RSC de IPv4 e está em operação na interface. Para entender as falhas de diagnóstico, é possível consultar os bytes unidos ou exceções causadas. Isso fornece uma indicação dos problemas da união.

Confira a seguir o exemplo de saída quando você executa o cmdlet Get-NetAdapterStatistics.

PS C:\Users\Administrator> $x = Get-NetAdapterStatistics "myAdapter"
PS C:\Users\Administrator> $x.rscstatistics

CoalescedBytes       : 0
CoalescedPackets     : 0
CoalescingEvents     : 0
CoalescingExceptions : 0

RSC e virtualização

Há suporte para a RSC somente no host físico quando o adaptador de rede host não está associado ao Comutador Virtual do Hyper-V. A RSC é desabilitada pelo sistema operacional quando o host está associado ao comutador virtual do Hyper-V. Além disso, as máquinas virtuais não obtêm o benefício da RSC porque os adaptadores de rede virtual não dão suporte à RSC.

A RSC pode ser habilitada para uma máquina virtual quando a SR-IOV (Virtualização de E/S de raiz única) está habilitada. Nesse caso, as funções virtuais dão suporte à funcionalidade RSC, sendo assim, as máquinas virtuais também recebem o benefício da RSC.

Recursos do adaptador de rede

Alguns adaptadores de rede gerenciam ativamente os próprios recursos para obter um desempenho ideal. Vários adaptadores de rede permitem configurar manualmente os recursos usando a guia Rede Avançada para o adaptador. Nesses adaptadores, você pode definir os valores de diversos parâmetros, incluindo o número de buffers de recebimento e de envio.

A configuração de recursos do adaptador de rede é simplificada pelo uso dos cmdlets do Windows PowerShell a seguir.

Para obter mais informações, consulte Cmdlets de adaptador de rede no Windows PowerShell.

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