Não recebendo gigbit de um link gigabit?


2

Acabei de atualizar minha LAN para gigabit. É isso que a netperf tem a dizer sobre as coisas.

Antes:

marcus@lt:~$ netperf -H 192.168.1.1
TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.1.1 (192.168.1.1) 
port 0 AF_INET : demo
Recv   Send    Send                          
Socket Socket  Message  Elapsed              
Size   Size    Size     Time     Throughput  
bytes  bytes   bytes    secs.    10^6bits/sec  

 87380  16384  16384    10.02      94.13   

Depois de:

marcus@lt:~$ netperf -H 192.168.1.1
TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.1.1 (192.168.1.1) port 0 AF_INET : demo
Recv   Send    Send                          
Socket Socket  Message  Elapsed              
Size   Size    Size     Time     Throughput  
bytes  bytes   bytes    secs.    10^6bits/sec  

 87380  16384  16384    10.01     339.15   

Apenas 340 Mbps? O que há com isso?

Informações de fundo: estou conectando através de um switch gigabit a um plug-in sheeva. Eu tenho fiação de Cat5e nas paredes e a corrida é talvez 30 pés. Se você não está familiarizado com o netperf, ele tem uma tendência a dar resultados muito estáveis ​​e nunca mentir.


Isso é necessariamente uma questão do Linux? Você já tentou isso em um sistema operacional diferente (de preferência um BSD) para estabelecer que é um problema específico do sistema operacional? Caso contrário, eu recomendo remover a tag - soa como hardware para mim.
new123456

Bom ponto, vai fazer.
Marcusw

Quais são as configurações de velocidade / duplex no switch e no pc?
Chris

O switch mostra 1000Mb nas duas portas e a saída dmesg de ambas as caixas concorda com isso.
Marcusw

Sim, é um pouco lento, mas não inesperado. Eu já vi no máximo 500Mbps em gigabit, e esse foi um golpe de sorte. Eu normalmente espero algo de 250 - 450Mbps.

Respostas:


2

Confira este tópico . Um dos colaboradores (Frennzy) descreve isso muito bem. Vou citar:

A velocidade "real" do gigabit ethernet é ...

1 Gbps.

Ou seja, transferirá bits a uma taxa de 1 bilhão por segundo.

Quanto a taxa de transferência de dados obtida está relacionada a diversos fatores:

Conexão de NIC ao sistema (PCI vs PCIe vs Northbridge, etc).

Taxa de transferência do HD.

Contenção de ônibus.

Protocolo de camada 3/4 e sobrecarga associada.

Eficiência de aplicação (FTP vs. SMB / CIFS, etc)

Tamanho do quadro.

Distribuição do tamanho do pacote (em relação à eficiência total da taxa de transferência)

Compressão (hardware e software).

Contenção de buffer, janelamento, etc.

Capacidade de infraestrutura de rede e arquitetura (número de portas, capacidade de backplane, contenção, etc)

Em suma, você não saberá realmente até testá-lo. O NetCPS é uma boa ferramenta para isso, assim como muitos outros.

E isso, mais tarde no segmento (meu destaque):

Pare de pensar assim. Pare com isso agora. Todos vocês.

Por mais que você queira calcular quilo ou mega BYTE por segundo de transferência, o fato é que é variável, mesmo quando a velocidade da rede permanece constante. Rede "velocidade" (bits por segundo) é absoluta. Taxa de transferência de rede (dados reais de carga útil por segundo) não é.

Para o OP: você, em geral, verá transferências de dados mais rápidas ao mudar de 100Mbps para 1000Mbps? Quase definitivamente. Será em qualquer lugar perto do máximo teórico? Não. Vai valer a pena? Isso é para você decidir.

Se você quiser falar sobre velocidades de rede, fale sobre velocidades de rede. Se você quiser falar sobre taxa de transferência de dados, fale sobre a taxa de transferência de dados. Os dois não estão empatados em 1-1.


Eu li isso antes de postar e estou familiarizado com as questões envolvidas. O netperf mede bits / segundo com base no throughput e você notará que eu incluí resultados de 100Mbps para comparação. Minha placa ethernet é PCIe em uma extremidade pelo menos. Eu não tenho certeza sobre o sheevaplug, mas presumo que, sendo principalmente um dispositivo de rede, é capaz de aproveitar ao máximo o hardware de rede dentro dele. O que eu realmente estou perguntando aqui é se os números que recebo podem ser melhorados significativamente, configurando algo diferente.
Marcusw

Eu duvido. Além do SheevaPlug, não vejo nada que você possa fazer de forma diferente. Como eu disse no meu comentário sobre a sua pergunta, parece um pouco lento, mas cai no intervalo que eu esperaria em gigabit. FWIW, eu quero um SheevaPlug.

1
Seu comentário sobre as velocidades que você consegue realmente responde a coisa toda. E se você está procurando por um roteador linux, o sheevaplug e um NIC USB para a interface da internet são certamente o caminho mais barato (e mais legal). Adicione um hub USB e um disco rígido externo e você terá um servidor completo. Foi o que eu fiz, prendi a debian lenny lá, e é incrível. Basta ficar longe do sistema operacional que vem com ... está muito quebrado de muitas maneiras (até mesmo as consultas DNS não funcionam). Mas eu divago. Obrigado!
Marcusw

Obrigado pela dica. Eu gosto do Lenny, então acho que é uma boa opção.

Você provavelmente encontrará uma melhoria significativa se habilitar quadros Jumbo em todos os lugares e seus comutadores o suportarem. O típico frame ethernet de 1500 byte tem um overhead bastante alto (como proporção), e isso se torna mais notório quando em gigabit (mais pacotes, mais latência, mais overheads para ACKs, etc etc). Veja se jumbo frames com um tamanho de cerca de 6-7K são possíveis. É provável que você veja uma melhoria de mais de 10% se fizer isso. (No Windows, vejo uma melhoria de> 50% ao fazer isso.)
quick_now

2

O termo 'máximo teórico' é usado, mas ele tem uma aplicação prática com tecnologias Ethernet. Em um sistema CSMA / CD como o da Ethernet, você só pode enviar cerca de metade da largura de banda do tráfego à medida que o cabo é conectado, geralmente um pouco menos. A razão é porque uma vez que você tenta ir além do 'máximo', então os transceptores começarão a detectar colisões mais do que eles estão transmitindo pacotes. Então o back-off exponencial entra em jogo e a transmissão de pacotes se degrada ainda mais. Token ring contornou isso, mas ele tinha muitos problemas e não é muito usado, acredito. Ethernet / IP tornou-se o padrão de fato.

As tecnologias de uplink, como T3, usam pares assíncronos que permitem o throughput total em cada fio, mas também não é um protocolo baseado em Ethernet.

Enquanto você estiver usando dispositivos Ethernet básicos e padrão, sempre haverá o "máximo teórico".


1
É por isso que as redes Ethernet comutadas modernas não usam mais o CSMA / CD.
Grawity

Um único link em um switch não. Mas o que acontece dentro do switch?
soon_now

1

Falar sobre o CSMA / CD no contexto do GbE é totalmente falso. Gigabit Ethernet, ou qualquer Ethernet "full-duplex", não usa CSMA / CD. E, embora a GbE ainda mantivesse a possibilidade teórica de operação half-duplex, não tenho certeza de que alguma vez houve algum kit GbE de produção real que fizesse half-duplex.

Quanto ao motivo de o OP ter alcançado apenas 300 Mbit / s através de um link de 1000 Gbit / s, sugiro que você colete estatísticas do netstat para o TCP antes e depois de cada execução do netperf e inclua as opções de linha de comando -c e -C para ver qual é a utilização da CPU nos dois lados. Talvez algo esteja descartando pacotes, ou talvez a CPU de um lado ou de outro esteja saturada. Se os sistemas em ambas as extremidades forem multicore, verifique as utilizações por núcleo com uma ferramenta externa ou através da saída de depuração netperf.

Outras perguntas sobre netperf provavelmente são deixadas para a netperf-talk na lista de discussão da netperf.org.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.