Desempenho em adaptadores de rede
Sempre há compensações na decisão de quais funções de hardware implementar em um adaptador de rede. Está se tornando cada vez mais importante considerar a adição de recursos de descarregamento de tarefas que permitam moderação de interrupção, ajuste dinâmico no hardware, melhoria do uso do barramento PCI e suporte a Quadros Jumbo. Esses recursos de descarregamento são importantes para o adaptador de rede high-end usado em configurações que exigem desempenho superior.
- Suporte ao descarregamento de soma de verificação TCP e IP
- Suporte ao descarregamento de envios grandes (LSO)
- Suporte ao descarregamento de segurança IP (IPSec)
- Melhorar a moderação de interrupção
- Usar o barramento PCI de forma eficiente
- Suporte a quadros jumbo
Suporte ao descarregamento de soma de verificação TCP e IP
Para o tráfego de rede mais comum, o descarregamento do cálculo da soma de verificação para o hardware do adaptador de rede oferece uma vantagem significativa de desempenho, reduzindo o número de ciclos de CPU necessários por byte. O cálculo da soma de verificação é a função mais cara na pilha do sistema de rede por dois motivos:
- Contribui para o comprimento do caminho longo.
- Causa efeitos de rotatividade de cache (normalmente no remetente).
O descarregamento do cálculo da soma de verificação para o remetente melhora o desempenho geral do sistema, reduzindo a carga na CPU do host e aumentando a eficácia do cache.
No Laboratório de Desempenho do Windows, medimos melhorias na taxa de transferência de TCP de 19% quando a soma de verificação foi descarregada durante cargas de trabalho com uso intensivo de rede. A análise dessa melhoria mostra que 11% da melhoria total se deve à redução do comprimento do caminho e 8% se deve ao aumento da eficácia dos caches.
Descarregar a soma de verificação no destinatário tem as mesmas vantagens que descarregar a soma de verificação no remetente. O aumento do benefício pode ser visto em sistemas que atuam como cliente e servidor, como um servidor proxy de soquetes. Em sistemas em que a CPU não está necessariamente ocupada, como um sistema cliente, o benefício de descarregar a soma de verificação pode ser visto em melhores tempos de resposta da rede, em vez de em uma taxa de transferência visivelmente melhorada.
Suporte ao descarregamento de envios grandes (LSO)
O Windows permite que o adaptador/driver de rede anuncie um tamanho máximo de segmento (MSS) maior do que o MTU para TCP, até 64K. Isso permite que o TCP aloque um buffer de até 64K para o driver, que divide o buffer grande em pacotes que cabem na MTU da rede.
O trabalho de segmentação TCP é feito pelo hardware do adaptador/driver de rede em vez da CPU do host. Isso resulta em uma melhoria significativa de desempenho se a CPU do adaptador de rede for capaz de lidar com o trabalho adicional.
Para muitos dos adaptadores de rede testados, houve pouca melhoria observada para atividades de rede puras quando a CPU do host era mais poderosa que o hardware do adaptador de rede. Entretanto, para cargas de trabalho comerciais típicas, foi medida uma melhoria geral no desempenho do sistema de até 9% da taxa de transferência, porque a CPU do host usa a maior parte de seus ciclos para executar transações. Nesses casos, o descarregamento da segmentação TCP para o hardware libera a CPU do host da carga de segmentação, permitindo ciclos extras para realizar mais transações.
Suporte ao descarregamento de segurança IP (IPSec)
O Windows oferece a capacidade de descarregar o trabalho de criptografia do IPSec para o hardware do adaptador de rede. A criptografia, especialmente 3 DES (também conhecida como DES triplo), tem uma proporção muito alta de ciclos/bytes. Portanto, não é surpresa que o descarregamento do IPSec para o hardware do adaptador de rede tenha medido um aumento de desempenho de 30% em testes seguros de Internet e VPN.
Melhorar a moderação de interrupção
Um adaptador de rede simples gera uma interrupção de hardware no host após a chegada de um pacote ou para sinalizar a conclusão de uma solicitação de envio de pacote. A latência de interrupção e os efeitos de rotatividade de cache resultantes adicionam sobrecarga ao desempenho geral da rede. Em muitos cenários (por exemplo, uso intenso do sistema ou tráfego de rede pesado), é melhor reduzir o custo da interrupção de hardware, processando vários pacotes para cada interrupção.
Com cargas de trabalho de rede pesadas, uma melhoria de desempenho de até 9% na taxa de transferência foi medida em cargas de trabalho com uso intensivo de rede. No entanto, ajustar os parâmetros de Moderação de Interrupção apenas para melhorias na taxa de transferência pode resultar em um impacto no desempenho no tempo de resposta. Para manter as configurações ideais e acomodar diferentes cargas de trabalho, é melhor permitir parâmetros ajustados dinamicamente, conforme descrito no Ajuste automático mais adiante neste artigo.
Usar o barramento PCI de forma eficiente
Um dos fatores mais importantes no desempenho do hardware do adaptador de rede é a eficiência com que ele usa o barramento PCI. Além disso, o desempenho do DMA do adaptador de rede afeta o desempenho de todos os cartões PCI que estão no mesmo barramento PCI. As seguintes diretrizes devem ser consideradas ao otimizar o uso do PCI:
Simplifique as transferências de DMA agregando páginas de destino quando apropriado.
Reduza a sobrecarga do protocolo PCI executando DMA em grandes partes (pelo menos 256 bytes). Se possível, cronometre o fluxo de dados para que pacotes inteiros sejam transferidos em uma única transação PCI. No entanto, considere como a transferência deve ocorrer. Por exemplo, não espere que todos os dados cheguem antes de iniciar as transferências, pois a espera aumentará a latência e consumirá espaço adicional no buffer.
É melhor preencher a transferência de pacotes DMA com bytes adicionais, em vez de exigir uma pequena transferência adicional para "limpar", transferindo os últimos bytes do pacote.
Use as transações Leitura de Memória, Linha de Leitura de Memória e Leitura de Memória Múltipla, conforme recomendado pela especificação PCI.
O hardware da interface de barramento do adaptador de rede deve detectar limitações no controlador de memória do host e ajustar o comportamento de acordo. Por exemplo, o hardware da interface de barramento do adaptador de rede deve detectar limitações de pré-busca do controlador de memória em leituras de memória DMA e aguardar um curto período antes de tentar a transação novamente. O hardware deve detectar repetições excessivas por parte do adaptador de rede e aumentar o tempo antes da primeira repetição em transações futuras quando cortado pelo host. Não faz sentido continuar a enviar transações para o controlador de memória quando você tem certeza de que ele ainda está ocupado buscando o próximo conjunto sequencial de dados.
Minimize a inserção de estados de espera, especialmente durante a transferências de dados. É melhor abandonar o barramento e deixar outro adaptador PCI usando o barramento fazer algum trabalho se mais de um ou dois estados de espera forem inseridos.
Use E/S mapeada na memória em vez de E/S programada. Isso também se aplica aos drivers.
Suporte a quadros jumbo
O suporte a MTUs (unidades máximas de transmissão) maiores e, portanto, a tamanhos de quadro maiores, especificamente Quadros Jumbo, reduz a sobrecarga da pilha de rede incorrida por byte. Um aumento de 20% na taxa de transferência TCP foi medido quando a MTU foi alterada de 1514 para 9000. Além disso, uma redução significativa da utilização da CPU é obtida devido ao menor número de chamadas da pilha de rede para o driver de rede.