Partilhar via


Escolhendo um adaptador de rede

Você pode usar este tópico para aprender 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 para escolher adaptadores de rede, bem como como configurar diferentes configurações de adaptador de rede para obter o melhor desempenho de rede.

Tip

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

Capacidades de descarregamento

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

A pilha de rede nos produtos da Microsoft pode atribuir uma ou mais tarefas a um adaptador de rede, se escolheres um adaptador de rede com as capacidades adequadas de descarga. A tabela a seguir fornece uma breve visão geral dos diferentes recursos de descarregamento disponíveis no Windows Server 2016.

Tipo de descarga Description
Cálculo de soma de verificação para TCP A pilha de rede pode descarregar o cálculo e a validação dos somatórios de verificação TCP (Transmission Control Protocol) nos percursos de envio e receção de código. Ele também pode descarregar o cálculo e a validação de somas de verificação IPv4 e IPv6 em caminhos de código de envio e recebimento.
Cálculo do checksum para UDP A pilha de rede pode descarregar o cálculo e a validação de somas de verificação UDP (User Datagram Protocol) nas rotas de envio e receção de código.
Cálculo de 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 em caminhos de código de envio e recebimento.
Cálculo de soma de verificação para IPv6 A pilha de rede pode descarregar, nos caminhos de código de envio e recebimento, o cálculo e a validação das somas de verificação IPv6.
Segmentação de grandes pacotes TCP A camada de transporte TCP/IP suporta Large Send Offload v2 (LSOv2). Com LSOv2, a camada de transporte TCP/IP pode descarregar a segmentação de pacotes TCP grandes para o adaptador de rede.
Dimensionamento lateral de recebimento (RSS) RSS é uma tecnologia de driver de rede que permite a distribuição eficiente do processamento de receção de rede através de várias CPUs em sistemas multiprocessadores. Mais detalhes sobre RSS são fornecidos mais adiante neste tópico.
Coalescência de Segmentos Recebidos (RSC) RSC é a capacidade de agrupar pacotes para minimizar o processamento de cabeçalho necessário para o host executar. Um máximo de 64 KB de carga recebida pode ser aglutinado em um único pacote maior para processamento. Mais detalhes sobre o RSC são fornecidos mais adiante neste tópico.

Receber dimensionamento lateral

O Windows Server 2016, o Windows Server 2012, o Windows Server 2012 R2, o Windows Server 2008 R2 e o Windows Server 2008 suportam 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 de Multi-Threading Simultâneo (SMT). A tecnologia Intel Hyper-Threading é um exemplo. O RSS direciona o processamento de rede para até um processador lógico por núcleo. Por exemplo, em um servidor com Intel Hyper-Threading, 4 núcleos e 8 processadores lógicos, o RSS não usa mais de 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 ordem.

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 para cenários de recebimento intensivo para 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 que você veja e modifique parâmetros RSS por adaptador de rede.

Note

Para obter uma referência de comando detalhada para cada cmdlet, incluindo sintaxe e parâmetros, clique 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. Este comando desativa o RSS no adaptador de rede especificado.

  • Enable-NetAdapterRss. Este comando habilita o RSS no adaptador de rede especificado.

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

  • Set-NetAdapterRss. Este 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 este parâmetro são:

  • Closest. Os números do processador lógico que estão perto do processador RSS base do adaptador de rede são preferidos. Com esse perfil, o sistema operacional pode reequilibrar os processadores lógicos dinamicamente com base na carga.

  • ClosestStatic. Os números do processador lógico próximos ao processador RSS base do adaptador de rede são preferidos. Com esse perfil, o sistema operacional não reequilibra os processadores lógicos dinamicamente com base na carga.

  • 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 reequilibrar os processadores lógicos dinamicamente com base na carga.

  • NUMAStatic. Este é 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 reequilibrará os processadores lógicos dinamicamente com base na carga.

  • Conservative. O RSS usa o menor número possível de processadores para sustentar a carga. Esta 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:

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

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

Note

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 vinculado 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 do processador usada pelo RSS. Exemplo de sintaxe:

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

  • * MaxProcessorGroup: Define o grupo de processadores Max de um nó NUMA. Isso afeta a matriz do processador usada pelo RSS. Definir isso restringiria um grupo máximo de processadores 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 do processador base de um nó NUMA. Isso afeta a matriz do processador usada pelo RSS. Isso permite particionar processadores entre adaptadores de rede. Este é o primeiro processador lógico na gama de processadores RSS que é atribuído 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. Isso pode ser dentro de um grupo k ou de diferentes grupos k. Exemplo de sintaxe:

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

  • * NumberofReceiveQueues: Se seus processadores lógicos parecem estar subutilizados para o tráfego de recebimento (por exemplo, como visualizado no Gerenciador de tarefas), você pode tentar aumentar o número de filas RSS do padrão de 2 para o máximo que é suportado pelo seu adaptador de rede. O adaptador de rede pode 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 escalável: Eliminando o gargalo de processamento de recebimento — Introduzindo o RSS no formato Word.

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

O ajuste do RSS requer a compreensão da configuração e da lógica de balanceamento de carga. Para verificar se as configurações de RSS entraram em vigor, você pode revisar a saída ao executar o cmdlet Get-NetAdapterRss do Windows PowerShell. Segue-se um exemplo de saída deste 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 dos parâmetros de eco que foram definidos, o elemento chave da saída é o resultado da tabela de indireção. A tabela de indireção apresenta os buckets da tabela de hash que são usados para distribuir o tráfego de entrada. Neste exemplo, a notação n:c designa o par de índice Numa K-Group:CPU que é usado para direcionar o tráfego de entrada. Vemos exatamente 2 entradas únicas (0:0 e 0:4), que representam o grupo k 0/cpu0 e o grupo k 0/cpu 4, respectivamente.

Há apenas um grupo k para este sistema (k-grupo 0) e uma entrada na tabela de indireção n (onde n <= 128). Como o número de filas de recebimento é definido como 2, apenas 2 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 está a realizar um hash do tráfego de entrada para utilizar apenas 2 processadores dos 8 disponíveis.

Para utilizar totalmente as CPUs, o número de filas de recebimento RSS deve ser igual ou maior que Max Processors. No exemplo anterior, a Fila de Recebimento deve ser definida como 8 ou superior.

Agrupamento NIC e RSS

O RSS pode ser ativado em um adaptador de rede que está associado a outra placa de interface de rede usando o agrupamento NIC. Nesse cenário, somente o adaptador de rede física subjacente pode ser configurado para usar RSS. Um utilizador não pode definir cmdlets RSS no adaptador de rede associado.

Coalescência de Segmentos Recebidos (RSC)

O Receive Segment Coalescing (RSC) contribui para um melhor desempenho ao reduzir o número de cabeçalhos IP que precisam ser processados para uma certa quantidade de dados recebidos. Ele deve ser usado para ajudar a dimensionar o desempenho dos dados recebidos, agrupando (ou aglutinando) 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. Recomenda-se que o RSC aumente a taxa de transferência para cargas de trabalho pesadas recebidas. Considere a implantação de adaptadores de rede que ofereçam suporte a RSC.

Nesses adaptadores de rede, verifique se o RSC está ativado (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 mostrem benefícios de o RSC estar desativado.

Noções básicas sobre o diagnóstico RSC

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

A seguir está um 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 o RSC está habilitado na interface e se o TCP permite que o RSC esteja em um estado operacional. O motivo da falha fornece detalhes sobre a falha ao habilitar o RSC nessa interface.

No cenário anterior, o RSC IPv4 é suportado e operacional na interface. Para entender as falhas de diagnóstico, pode-se ver os bytes unidos ou as exceções geradas. Isso fornece uma indicação das questões de coalescência.

A seguir está um 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

O RSC só é suportado no host físico quando o adaptador de rede do host não está vinculado ao Comutador Virtual Hyper-V. O RSC é desativado pelo sistema operacional quando o host está vinculado ao Comutador Virtual Hyper-V. Além disso, as máquinas virtuais não obtêm o benefício do RSC porque os adaptadores de rede virtual não suportam RSC.

O RSC pode ser habilitado para uma máquina virtual quando a Virtualização de Entrada/Saída de Raiz Única (SR-IOV) está habilitada. Neste caso, as funções virtuais suportam a capacidade RSC; portanto, as máquinas virtuais também recebem o benefício do RSC.

Recursos do adaptador de rede

Alguns adaptadores de rede gerenciam ativamente seus recursos para alcançar o melhor desempenho. Vários adaptadores de rede permitem que você configure manualmente os recursos usando a guia Rede avançada para o adaptador. Para esses adaptadores, você pode definir os valores de vários 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 seguintes cmdlets do Windows PowerShell.

Para mais informações, consulte os cmdlets do adaptador de rede no Windows PowerShell.

Para obter links para todos os tópicos deste guia, consulte Ajuste de Desempenho do Subsistema de Rede .