Pergunta

Para os pacotes UDP com uma carga menos de 1470, é possível alcançar 1 Gbit rendimento? Devido ao pequeno tamanho de pacote, deve haver alguns gargalos em alcançar tal rendimento (E / S, SO, rede, etc.). Imagino motoristas e hardware pode ter que ser ajustado para pequeno pacote / alto rendimento. Alguém tentou alcançado com êxito 1 Gbit rendimento com pequenos pacotes UDP?

Foi útil?

Solução

Eu já anteriormente feito algumas experiências com transferência em links gigabit em hardware pc relativamente padrão, embora fazendo apenas transmite (via tcpreplay ), em vez de UDP.

A maior gargalo que eu encontrei foi em apenas recebendo pacotes para o próprio NIC. Isto pode ser significativamente melhorada através de um barramento de alta velocidade para fazer a interface para o seu NIC (ex. Um 4x PCI-Express NIC). Mas mesmo com este havia um segundo limite / pacote muito definate. Obviamente, aumentando o tamanho do pacote que lhe permitem utilizar mais da sua largura de banda, reduzindo a carga do processador.

Ao longo das mesmas linhas que o comentário de Steve Moyer , há um limite teórico para a utilização de qualquer rede. Em minhas experiências (que estavam sendo feitas em uma rede completamente silencioso) eu estava vendo um máximo de cerca de (e só em cima da minha memória) 900MB / s. Este foi com cargas da CPU de 30 a 40%.

É mais provável que a limitação vai ser imposta por seu sistema de hardware do que a sua infra-estrutura de rede (ou seja PC.) - qualquer valor switch de rede o seu sal deve ser capaz de sustentar o acesso à rede a toda velocidade com pequenos pacotes - certamente em muito taxas mais elevadas do que a maioria dos PCs pode lidar com isso.

Outras dicas

Que tipo de conexão de rede que você está usando? Se você estiver usando um link 1000BaseTX / Fx, não espere mais de 80% taxa de transferência com pacotes de tamanho máximo. Como seu tamanho do pacote diminui, a sobrecarga de espaçamento, sincronização Ethernet cabeçalhos, IP cabeçalhos e aumenta UDP cabeçalhos em relação à carga e, portanto, degrada o seu máximo rendimento ainda mais.

Verifique a documentação para a chave que você está usando. Switches são limitados no número de pacotes por segundo (pps) que eles podem entregar e muitas vezes não pode sustentar 1Gbps, se você está enviando pacotes com significativamente menor do que o tamanho máximo de carga útil.

Outra coisa a verificar é se a sua placa de rede está fazendo interrupção coalescentes, e qual é o número máximo de enviar / receber descritores que pode suportar. A esse nível de rendimento o tempo de serviço de interrupção e tempo de comutação de contexto pode se tornar uma grande sobrecarga no sistema host, mesmo com um sistema de CPU e memória moderna.

Além disso, se você estiver usando gigabit sobre cobre, o quadro ethernet menor o cartão irá emitir é de 512 bytes, para que as mensagens menores serão preenchidos para esse tamanho. Isso é por causa das exigências para a detecção de sensor de portadora / colisão.

hardware

Eu encontrei tem um limite significativamente menor de pacotes por segundo do que as redes de capacidade teórica. Para uma Broadcomm BCM5704S eu acertar isso em 69.000 pps comparação com 1,488,100pps de gigabit.

Alguns mais números eu relatei aqui, http://code.google.com/p/openpgm /

Há um bom tutorial sobre aprimorando suas configurações de rede (em Linux) para alcançar a verdadeira velocidade gigabit aqui: http://datatag.web.cern.ch/datatag/howto/tcp.html

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top