Em nosso artigo anterior , discutimos os recursos de suporte ao hardware de algumas placas de rede topo de linha. Vamos dar uma olhada agora em como você pode usar algumas dessas configurações para tirar melhor vantagem delas. Lembre-se de que as configurações corretas dependem da sua placa de rede, do trabalho executado, dos recursos de seu computador e, é claro, de seus objetivos de desempenho.
Habilite recursos de offload
Habilitar recursos de offload em placas de rede normalmente beneficia o desempenho. Entretanto, certas vezes a placa de rede pode não ser poderosa o suficiente para dar conta do offload com o throughput necessário. Por exemplo, habilitar a segmentação de offload pode reduzir o máximo throughput sustentado em algumas placas, por conta de recursos limitados de hardware. Contudo, se não se espera que o throughput seja uma limitação, você deve habilitar o offload, mesmo para essas placas. Algumas delas necessitam que o offload seja habilitado independentemente para o recebimento e o envio.
Habilitar RSS para cenários Web
O RSS pode melhorar a escalabilidade e o desempenho se você tiver menos adaptadores de rede do que processadores lógicos no seu servidor. Quando todo o tráfego web está passando pela placa capaz de realizar RSS, requisições web recebidas de diferentes conexões podem ser processadas simultaneamente em diferentes CPUs. Por conta da lógica da distribuição de carga do HTTP e do RSS, o desempenho pode cair se uma placa sem suporte para RSS aceitar tráfego web em um servidor que possui uma ou mais placas com suporte para RSS. É recomendado que você utilize as placas com RSS ou desabilite o RSS a partir da aba de Propriedades Avançadas. Para determinar quais placas de rede possuem suporte para RSS, veja as informações do RSS na aba de Propriedades Avançadas para o dispositivo.
Perfis e filas RSS
Perfis RSS são novos no Windows Server 2012. O perfil padrão é NUMA Static, o que altera o comportamento padrão em relação às versões anteriores do Windows. Sugerimos que você estude os perfis disponíveis e entenda em que situações eles podem ser benéficos. Por exemplo, você pode utilizar o Gerenciador de Tarefas para examinar se os processadores lógicos estão subutilizados para receber tráfego e tentar aumentar o número de filas RSS do atual padrão (que é 2) para o máximo que a sua placa de rede suportar. Alterar o número de filas RSS é uma opção que a sua placa de rede talvez tenha como parte de seu driver.
Aumentando os recursos da placa de rede
Para placas de rede que permitem a configuração manual dos recursos, tais como buffers de recebimento e envio, deve-se aumentar a alocação dos recursos. Algumas placas definem buffers de recebimento pequenos para preservar a memória alocada no host. O baixo valor resulta em pacotes perdidos e decréscimo do desempenho. Para isso, em cenários de intenso recebimento de dados, é recomendável aumentar o buffer de recebimento para seu valor máximo. Se sua placa não suporta ou não expõe a configuração manual, é mais provável que ela configure dinamicamente o recurso, ou que ele tenha um valor fixo que não possa ser alterado.
Habilitar a moderação de interrupção
Para controlar a moderação de interrupção, algumas placas expõem diferentes níveis de moderação, parâmetros de agregação de buffers (às vezes separados para recebimento e envio) ou ambos. Você deve considerar a moderação de interrupção para trabalhos atrelados à CPU e considerar os prós e os contras entre a economia de CPU e latência versus o aumento na economia de CPU do host por conta de mais interrupções e menos latência. Se a placa não for capaz de executar a moderação de interrupção, mas possuir agregação de buffer, habilitá-la irá resultar no aumento do número de buffers agregados, resultando em mais buffers por envio ou recebimento, o que melhora o desempenho.
Ajustes específicos para o trabalho
Sua placa de rede possui várias opções para melhorar a latência causada pelo sistema operacional. Essa latência é o tempo entre o processamento de um pacote recebido pelo driver de rede e seu envio de volta, o que normalmente é medido em microsegundos. Como comparação, o tempo de envio para pacotes transmitidos por longas distâncias é normalmente medido em milisegundos. Esse ajuste não reduzirá o tempo que um pacote perde na transmissão.
Alguns ajustes sugerem que redes sensíveis a microssegundos incluam:
- Ajustar a BIOS do computador para Alta Performance, com estados-C (C-states) desabilitados. Entretanto, isso depende da bios e do sistema em questão. Alguns sistemas são capazes de executar em alto desempenho mesmo que o sistema operacional controle o gerenciamento de energia. Você pode checar e ajustar as configurações de gerenciamento de energia no Painel de Controle ou utilizar o comando powercfg.
- Configure o perfil de gerenciamento de energia do sistema operacional para o modo Alta Performance. Para que isso funcione conforme esperado, a BIOS de seu sistema precisa estar configurada para permitir que o sistema operacional controle o gerenciamento de energia.
- Habilite Static Offload. Por exemplo, UDP Checksums, TCP Checksums, e Send Large Offload (LSO).
- Habilite o RSS caso o tráfego seja multi-streamed, tal como em um alto volume de dados multicast recebidos.
- Desabilite a moderação de interrupção para drivers de redes que necessitam da latência mais baixa possível. A desvantagem é que isso pode utilizar mais tempo da CPU.
- Manipule interrupções de placas de rede e de DCPs em núcleos de processadores que compartilham cache de CPU com o núcleo que está sendo usado pelo programa que está manipulando o pacote. O ajuste de afinidade de CPU pode ser utilizado para direcionar um processo para um determinado processador lógico em conjunção com a configuração RSS que acompanha isso. Utilizar o mesmo núcleo para interrupções, DPC e threads em modo usuário exibe um desempenho pior à medida que a carga aumenta, por conta do conteúdo das threads, DCPs e ISRs que querem utilizar o núcleo.
Gerenciamento de interrupções do sistema
Muitos sistemas de hardwares possuem SMI (System Management Interrupts) para uma variedade de funções de manutenção, incluindo informar erros de memória ECC, compatibilidade com USB legado, controle da ventoinha e gerenciamento de energia pela BIOS. O SMI é a interrupção com a prioridade mais alta no sistema e coloca a CPU em modo de gerenciamento, o que adia todas as outras atividades enquanto se executa uma rotina de interrupção de serviço, normalmente contida na BIOS.
Esse comportamento pode resultar em picos de latência de 100 microssegundos ou mais. Se você precisar alcançar as latências mais baixas possíveis, veja uma versão de BIOS do seu fornecedor do hardware que reduza SMIs para o menor grau possível, chamada de “BIOS de baixa latência” ou “SMI free BIOS”. Não é possível eliminar toda atividade SMI porque ela é usada para controlar funções essenciais, tais como o controle da ventoinha.
Ajuste de TCP
Janela de autoajuste de recebimento do TCP
Antes do Windows Server 2008, a pilha de rede utilizava uma janela de recebimento cujo valor era fixo, o que limitava o potencial total de throughput para as conexões. Uma das mudanças mais significantes na pilha TCP foi o autoajuste da janela de recebimento TCP. Você pode calcular o throuput total de uma única conexão quando utiliza um tamanho fixo, da seguinte forma:
Throughput total atingível em bytes = janela TCP * (1/latência da conexão)
Como exemplo, o throughput total atingível é de apenas 51 Mbps em uma conexão de 1 GB com 10ms de latência. Com o autoajuste, a janela do lado do recebimento é ajustável, e pode crescer para atender à demanda do remetente. É possível que uma conexão atinja toda a banda de uma conexão com 1 GB. Cenários de utilização de rede que no passado podem ter sido limitados pelo throughput total atingível em conexões TCP agora podem fazer uso total da largura da rede.
Plataforma de filtro do Windows
O WFP (Windows Filtering Plataform), que foi introduzido no Windows Vista e Windows Server 2008, fornece APIs para fabricantes independentes de software criarem filtros de processamento de pacotes. Exemplos incluem softwares de firewall e antivírus. Tome cuidado, pois um filtro WPF mal escrito pode diminuir muito o desempenho da rede.
Parâmetros TCP
As seguintes palavras-chave do Windows Server 2003 não são mais suportadas e são ignoradas no Windows Server 2012, assim como no Windows Server 2008 R2 e Windows Server 2008:
- TcpWindowSize – HKLM\System\CurrentControlSet\Services\Tcpip\Parameters
- · NumTcbTablePartitions – HKLM\system\CurrentControlSet\Services\Tcpip\Parameters
- · MaxHashTableSize – HKLM\system\CurrentControlSet\Services\Tcpip\Parameters
Contadores de desempenho relativo à rede
Esta seção lista os contadores que são relevantes para o gerenciamento de desempenho de rede.
Utilização do recurso
IPv4, IPv6
- Datagramas Receibidos/seg
- Datagramas Enviadas/seg
TCPv4, TCPv6
- Segmentos Recebidos/seg
- Segmentos Enviados/seg
- Segmentos Retransmitidos/seg
Interface de Rede(*), Adaptador de Rede(*)
- Bytes Recebidos/seg
- Bytes Enviados/seg
- Pacotes Recebidos/seg
- Pacotes Enviados/seg
- Tamanho da fila de saída
This counter is the length of the output packet queue (in packets). If this is longer than 2, delays occur. You should find the bottleneck and eliminate it if you can. Because NDIS queues the requests, this length should always be 0.
Esse contador é o comprimento da fila de pacote de saída (em pacotes). Se for mais longo que 2, ocorrem atrasos. Você deve achar o obstáculo e eliminá-lo, se conseguir. Por causa das filas NDIS das solicitações, esse comprimento deve sempre ser 0.
- Informação do processador
- Tempo do processador em %
- Interrupções/seg
- Fila de DPCs/seg
Esse contador é uma taxa média na qual DPCs são adicionados à fila DPC do processador lógico. Cada processador lógico possui sua própria fila DPC. Esse contador mede a taxa com a qual os DPCs são adicionados à fila, e não o número de DPCs na fila. Ele exibe a diferença entre os valores que são observados nos dois últimos exemplos, divididos pela duração do intervalo da amostra.
Possíveis problemas de rede
Interface de Rede(*), Adaptador de Rede(*)
- Pacotes Recebidos Descartados
- Pacotes Recebidos com Erro
- Pacotes Enviados Descartados
- Pacotes Enviados com Erro
WFPv4, WFPv6
- Pacotes Descartados/seg
UDPv4, UDPv6
- Datagramas Recebidas com Erros
TCPv4, TCPv6
- Conexões com Falhas
- Conexões Refeitas
Política de QoS de Rede
- Pacotes descartados
- Pacotes descartados/seg
Atividade da Interface de rede por processador
- Indicações de baixo recurso recebidos/seg
- Pacotes recebidos com baixos recursos/seg
Microsoft Winsock BSP
- Datagramas rejeitadas
- Datagramas rejeitadas/seg
- Conexões rejeitadas
- Conexões rejeitadas/seg
Desempenho do Receive Side Coalescing (RSC)
Adaptador de Rede(*)
- Conexões TCP RSC Ativas
- Tamanho médio do pacote TCP RSC
- Pacotes TCP RSC agregados/seg
- Exceções TCP RSC/seg
***
Artigo traduzido pela Redação iMasters, com autorização do autor. Texto original da equipe Monitis, liderada por Hovhannes Avoyan, disponível em http://blog.monitis.com/index.php/2013/01/24/performance-tuning-windows-2012-network-subsystem-part-2/?attest=true&opt=vers