Por que só obtenho 300-400 Mbit / s na minha rede de 1000 Mbit / s?

17

Minha configuração é assim:

Notebook <--> Roteador <--> Desktop

Todos eles suportam Ethernet de gigabit. Estou usando o benchmark 'iperf' TCP / IP no laptop e na área de trabalho e nunca obtive mais de 400 Mbit / s de taxa de transferência bruta. O laptop é um Intel Core 2 Duo 2 GHz executando o Windows XP, a área de trabalho é um Intel Core 2 quad 2.4 GHz executando o Windows 7. Quais são as coisas que posso olhar para maximizar a velocidade da rede entre eles? Configurações de software? Uma maneira de saber se meu cabo não está dentro das especificações? Como saber se o controlador Ethernet de gigabit em um dos dispositivos simplesmente não é capaz de atingir a velocidade máxima?

davr
fonte

Respostas:

11

1 Gbit / s é o máximo teórico dessa conexão.

Muitas coisas podem afetar isso.

Espere um impacto no desempenho das suas NICs integradas, pois elas provavelmente serão (com base nas descrições de dispositivo "Laptop" e "Desktop") adaptadores baseados em host que dependem da CPU para processar o tráfego de rede. Portanto, a velocidade será afetada pela CPU fazendo outras coisas (como transferir os dados dos HDs para o subsistema de rede, por exemplo).

Além disso, dependendo do que é o "roteador", ele pode estar tentando processar os dados à medida que passa da porta LAN para a porta LAN, portanto, suas velocidades de processamento também podem afetar as velocidades de transferência de dados, independentemente da rapidez com que suas 'portas' estamos.

Se eu fosse você, meu próximo teste seria obter um cabo cruzado CAT6 'apenas o suficiente' e conectar o notebook diretamente ao PC (talvez você consiga se livrar de um cabo direto, como muitos dispositivos de suporte da NIC hoje em dia).

Dessa forma, você (pelo menos) pode facilmente eliminar ou identificar o roteador (e / ou a fiação existente) como um gargalo.

Ƭᴇcʜιᴇ007
fonte
Veja en.wikipedia.org/wiki/… para duas possíveis pinagens para fazer um cabo cruzado de gigabit.
Jun
Boa informação, com certeza. Nesse caso, se o usuário não está acostumado a fabricar um cabo, e o objetivo é eliminar possíveis lentidões, provavelmente é melhor usar um cabo fabricado na fábrica. Nada muito pior do que um friso solto. ;)
Ƭᴇcʜιᴇ007
14
Apenas para sua informação, com Ethernet de gigabit, os cabos crossover não são mais necessários. Todos os controladores Ethernet de gigabit precisam "detectar automaticamente" o cabo, para que você possa usar um cabo padrão para conectar-se a dispositivos Ethernet de gigabit juntos. Vou tentar conectar meu laptop diretamente à área de trabalho e ver se há alguma diferença.
davr
@davr você poderia ter algum sucesso?
ebrahim.mr 10/03
8

O iperf usa um tamanho de janela bem pequeno por padrão.

Aumente a janela ou execute-a no modo UDP e saturará facilmente uma conexão de 1 Gbit / s.

user23307
fonte
Não pensei nisso, vou tentar isso.
davr
1
Você não o saturará com hardware de nível de consumidor. A CPU geralmente fica limitada pelo barramento PCI ou PCI-Express. ou seja, a CPU não pode mover dados da RAM para a placa de rede com rapidez suficiente. O hardware de nível de servidor parece ter um desempenho melhor. Eu sei, sou programador e tenho tentado fazer exatamente isso. Chegando perto, mas agora limitado pelo meu próprio hardware.
Matt H
1
trabalhou para mim, estava batendo minha cabeça por uma hora tentando descobrir por que o iperf do Windows me dá 250mbit / seg e o Ubuntu inicializado na mesma máquina me dá 925mbit / seg. Acontece que o iperf no Windows tem como padrão o tamanho da janela de 8k tcp e o tamanho da janela de 88k no linux.
Omry
@ Omry, o iperf no Windows é um cão de várias perspectivas. Eu principalmente desistiu e só executar iperf sob linux
Mike Pennington
4

Jeff Atwood tem uma boa análise de por que o rendimento no mundo real de uma rede Gigabit está mais próximo, em seus cálculos, de 30 MB / s. (grande 'B', não pequeno 'b')

... você definitivamente não deve esperar o dimensionamento perfeito que alcançamos, passando de 10baseT para 100baseT. Sem grandes ajustes, você obterá apenas uma fração da melhoria de dez vezes na largura de banda esperada

JMD
fonte
Essa ferramenta "pcattcp" que ele está usando é uma porcaria. Meu netbook de 900mhz linux (que provavelmente é tão rápido quanto sua máquina em 2005) faz 300MB / s em loopback.
precisa saber é o seguinte
Sim, o iperf oferece um desempenho notavelmente melhor em loopback do que o pcattcp. Vou me ater ao iperf para testes por enquanto, a menos que ouça de outra coisa que seja melhor.
davr
1
Também já estou acima do seu 240mbit, e esse artigo tem 5 anos, então não é mais tão relevante, eu acho, já que a tecnologia deveria ter avançado muito desde então.
davr
Bem, considerando que a interface de loopback é virtual (nada é transferido para a placa de rede), você esperaria um desempenho muito melhor (basicamente é então processo a processar e nenhum disco rígido é tocado). Estou recebendo 8,09 Gbits / s (1035Mbytes / s) na interface de loopback.
Matt H
3

Se tudo for gigabit, você pode tentar ativar os jumbo-frames . Um dos meus amigos fez isso com o computador doméstico e notou um grande aumento na taxa de transferência. No entanto, existem algumas desvantagens para aplicativos de baixa latência como o VOIP, conforme mencionado no artigo.

roubar
fonte
O aumento não deve ser tão dramático para a maioria dos aplicativos. Tudo isso fará com que signifique menos sobrecarga de protocolo TCP ou UDP por pacote. Além disso, para obter melhores resultados, seu switch / roteador também deve suportar quadros jumbo. Eu duvido que ele faria.
Matt H
Para qualquer resultado, seus comutadores precisam suportar quadros jumbo. Não há como o dispositivo apenas L2 enviar de volta um erro ICMP 'Pacote muito grande' para informar à sua máquina que ele precisa usar um tamanho de pacote menor.
Ct_fink 21/11
1

Você disse que está usando um roteador? é um roteador pronto para consumo (não switch)?

Eu diria que esse é provavelmente o seu gargalo. Para verificar isso, conecte o laptop diretamente na área de trabalho. Defina seu laptop e área de trabalho para usar um endereço IP estático como 192.168.1.10 (laptop), 192.168.1.11 (área de trabalho).

Isso deve permitir que o laptop fale diretamente com a área de trabalho. Execute o iperf entre eles e relate o resultado aqui.

Isso deve funcionar, pois a maioria das placas de rede modernas pode detectar automaticamente os fios de transmissão / recepção, diferentemente dos velhos tempos em que era necessário montar um cabo cruzado.

Se você observar um aumento acentuado, seu roteador é o culpado. Alguns deles têm comutadores na parte traseira, outros podem realmente rotear entre portas. Muitos desses roteadores são péssimos. Se você achar que esse é o problema, se eu fosse você, atualizaria o roteador (o que provavelmente é bom para o uso da Internet) ou compraria um switch GigE e o colocaria em cascata no switch do roteador. Conecte seu laptop e desktop ao switch. Dessa forma, eles desviarão o roteador para conversar entre si.

Altere o laptop e a área de trabalho de volta para DHCP quando concluir a experiência.

Para se ter uma idéia, você deveria ter pensado em 650Mbit / se acima. O iperf não usa o disco rígido, a menos que você o solicite. Portanto, é memória para memória ou realmente está testando a rede.

Um dos outros gargalos é a rapidez com que sua CPU pode transferir dados da memória para a placa de rede. As redes que estão no PCI Express parecem operar melhor. Eu acho que os laptops geralmente são fabricados de maneira bastante barata atualmente, então se você não vê muito acima disso, esse pode ser o outro gargalo.

Além disso, os comutadores de nível consumidor geralmente podem lidar com comutação de 1 GB entre duas portas, enquanto os comutadores gerenciados de ponta podem alternar na velocidade do fio em todas as portas simultaneamente. Isso é parte do motivo pelo qual eles custam muito mais.

Matt H
fonte
1

Realizamos vários testes e ele se resumiu ao sistema operacional.

Se formos do Ubuntu 11.04 para o Ubuntu 11.04 (o mesmo com máquinas CentOS para Linux), a taxa de transferência de velocidade é de ~ 938-941 MBits / s constante. Se formos do Windows 7 x64 SP1 Ultimate para o Ubuntu 11.04, ele varia de ~ 440-475 MBits / s. Se passarmos do Windows 2008 R2SP1 x64 para o Ubuntu 11.04, a velocidade medirá ~ 435-635 MBits / s.

Como você pode ver, as máquinas baseadas em Linux utilizam totalmente os links Gigabit em comparação com o Windows. Agora estamos investigando configurações no Windows que resultariam na mesma taxa de transferência que o Linux no mesmo hardware. As limitações do disco rígido não são um fator, pois isso está na memória. Para o registro, as máquinas que usamos usavam unidades de 7200 RPM com SATA 3.0. O Ubuntu 11.04 (ou base Linux) e o Windows excederam a velocidade teórica desses links SATA.

Accends
fonte
Obrigado pela informação, por favor atualize sua resposta se você encontrar quaisquer definições que afetam a velocidade nas janelas
davr
Isto faz-me pergunto se iperf não é a única parte do Windows que tem como padrão um tamanho de pacote menor do que o Linux, consulte superuser.com/a/95587/16966
Matt Wilkie
0

As velocidades de transferência são tão boas quanto o elo mais fraco da corrente. Pode não ser a velocidade da rede, mas a velocidade de gravação / leitura dos seus discos rígidos.

Você pode baixar o software RamDisk e criar um RamDisk nos dois computadores. Coloque um arquivo de tamanho decente dentro dele e faça uma transferência pela rede entre os RamDisks. Isso deve mostrar a velocidade real da sua rede que não será prejudicada pelas velocidades do disco rígido.

Marcin
fonte
2
Por isso mencionei 'iperf', mas acho que não é uma ferramenta tão comum. Basicamente, ele testa a velocidade da rede diretamente, sem ler / gravar no disco rígido, portanto esse não é o gargalo. Percebo que o HDD pode ser um gargalo no uso no mundo real.
davr
0

Não é uma resposta direta à sua pergunta, mas recentemente obtivemos o seguinte resultado iperfentre duas caixas Linux (8 núcleos, 2,66 GHz cada):

------------------------------------------------------------
Client connecting to 192.168.74.15, TCP port 5001
TCP window size:  192 KByte (default)
------------------------------------------------------------
[  3] local 192.168.74.25 port 54016 connected with 192.168.74.15 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.10 GBytes   941 Mbits/sec

com MTU = 1500 (ou seja, não usa quadros jumbo). Isso deve lhe dar uma idéia de qual desempenho é, em princípio, possível.

As placas de rede (saída lspci) são:

82571EB Gigabit Ethernet Controller

em ambos os lados.

Convém verificar a carga da CPU no servidor e, especialmente, no lado do cliente e ver se isso é próximo de 100%. Embora eu tenha que dizer que em nosso sistema, o núcleo mais ocupado está ocioso de 80% (83%) no lado do receptor (remetente), enquanto os outros 7 parecem estar 100% ociosos (verificado com mpstat).

Isso está sendo executado iperfsem a -uopção, isto é, usa o TCP.

Andre Holzner
fonte
Eu acho que você deve obter> 500 ou 600 mbits / s em hardware de desktop de 1 a 2 anos.
Matt H
-4

davr, Ao contrário do canal de fibra e tecnologias similares que usam esquemas sofisticados de alocação de largura de banda, a ethernet é um protocolo de "escuta e gritaria". A Ethernet primeiro escuta se alguém está transmitindo no momento; caso contrário, aguarde se não estiver, em seguida, envie. O problema é que, se duas ou mais partes que desejam transmitir estiverem ouvindo ao mesmo tempo, elas enviarão ao mesmo tempo! Isso causará colisões e retransmissões. Opções sofisticadas eliminam muito disso, mas não tudo.

Com a Ethernet, você deve esperar cerca de 30 a 40% da largura de banda (parece que você está conseguindo isso ... Eu posso estar errado no número exato, depende muito da qualidade do comutador e etc.) antes que muitas colisões comecem a ocorrer, com a tecnologia de malha algo como 80%. Ethernet é barata, canal de fibra não é. . . Não sei ao certo o que a Ethernet 4G faz para contornar isso. . . pode ter uma topologia de rede mais semelhante à da rede, semelhante ao Fibre Channel e aos amigos. Essa é uma simplificação excessiva, mas é essencialmente correta.

TheEruditeTroglodyte
fonte
2
Sim, eu não estou usando um hub 'burro'. Acho que a maioria das pessoas hoje em dia usa comutadores ou roteadores inteligentes que lidam com dispositivos de conexão diretamente entre si, eliminando colisões. Além disso, meu teste envolve apenas dois dispositivos conectados a um único roteador; portanto, colisões não seriam um problema no meu caso específico.
davr
davr - desculpe enquanto interpreto o advogado dos demônios por um momento. . . O que impede seus dois hosts de tentar falar ao mesmo tempo? Além disso, você não mencionou que tipo de dados está sendo transmitido. . . é quase exclusivamente TCP ou há muita transmissão de dados (áudio, vídeo, etc.)? Os dois computadores estão transmitindo dados simultaneamente ou há uma relação cliente / servidor demarcada com mais precisão?
TheEruditeTroglodyte
2
Estou usando um programa especial de benchmarking TCP / IP para o qual apenas um computador envia e o outro escuta. Mas, mesmo assim, a Ethernet é full duplex ... se você tiver apenas duas máquinas, elas poderão enviar e receber largura de banda total uma à outra ao mesmo tempo.
Davr