Por que essa conexão de rede é tão lenta?

11

Estou tendo alguns problemas com a velocidade de desempenho da rede em um servidor Linux executando o Ubuntu 9.10. As velocidades de transferência em todos os tipos de tráfego são de cerca de 1,5 MB / s em uma conexão Ethernet com fio de 1000mbit / s. Este servidor alcançou 55 MB / s sobre o samba no passado recente. Não alterei o hardware ou a configuração de rede. Realizo atualizações regularmente e o melhor e o mais recente dos repositórios do Ubuntu estão sendo executados nesta máquina.

Configuração de hardware

PC Windows Desktop - switch 1000 - switch 1000 - servidor Linux

Todos os comutadores são de rede e todos mostram uma luz verde para suas conexões, o que significa que a conexão é de 1000mbit / s. As luzes ficam amarelas quando a conexão é de apenas 100mbit / s. Outras informações de diagnóstico:

root@server:~# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0c:6e:3e:ae:36
          inet addr:192.168.1.30  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:6eff:fe3e:ae36/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:28678 errors:0 dropped:0 overruns:0 frame:0
          TX packets:73531 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:2109780 (2.1 MB)  TX bytes:111039729 (111.0 MB)
          Interrupt:22

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:113 errors:0 dropped:0 overruns:0 frame:0
          TX packets:113 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:23469 (23.4 KB)  TX bytes:23469 (23.4 KB)


root@server:~# ethtool eth0
Settings for eth0:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Advertised auto-negotiation: Yes
        Speed: 1000Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 0
        Transceiver: internal
        Auto-negotiation: on
        Supports Wake-on: pg
        Wake-on: g
        Current message level: 0x00000037 (55)
        Link detected: yes

root@server:~# mii-tool
eth0: negotiated 1000baseT-FD flow-control, link ok

O servidor acha que possui uma conexão de 1000mbit / s. Testei a velocidade da transferência, copiando arquivos usando o Samba. Também usei o netcat (nc target 10000 <aBigFile) no servidor para transferir para o Windows (nc -l -p 10000) e vi níveis semelhantes de desempenho ruim.

Testei a velocidade dos discos rígidos usando o hdparm e obtive:

root@server:~# hdparm -tT /dev/md0
/dev/md0:
 Timing cached reads:   1436 MB in  2.00 seconds = 718.01 MB/sec
 Timing buffered disk reads:  444 MB in  3.02 seconds = 147.24 MB/sec

A leitura do mesmo arquivo para transferência usando DD produziu o seguinte:

paul@server:/home/share/Series/New$ dd if=aBigFile of=/dev/null
3200369+1 records in
3200369+1 records out
1638589012 bytes (1.6 GB) copied, 12.7091 s, 129 MB/s

Estou perplexo. O que poderia estar causando o desempenho ruim da rede, que é duas ordens de magnitude menor do que o que a rede é capaz?

Paul Keeble
fonte
O serverfault é provavelmente o melhor lugar para fazer essas perguntas.
Maciej Piechotka 18/08/10
Experimente esta pergunta ServerFault para obter técnicas gerais úteis para solucionar problemas de uma conexão de rede lenta.
Se nada mudar, culpe o desgaste (cabos).
Mel

Respostas:

6

Algumas coisas que você deve considerar verificar:

  1. Duplex - se um lado pensa que o link é full duplex e o outro lado pensa que o link é half duplex, espere que seja ruim.
  2. Interruptor com defeito? Ignore-os.
  3. Jumbo frames. A MTU de 9000 bytes diminui a sobrecarga, o que deve aumentar a taxa de transferência (perdendo um pouco de latência). Parece que seu problema é tão ruim que isso não vai ajudar.
  4. Recursos de TCP: ECN, SACK, controle de congestionamento
  5. Tamanhos de janela de envio / recebimento de TCP ( detalhes para linux )

O netperf é excelente para solucionar problemas de desempenho da rede. Mas netcat não é ruim em uma pitada.

Brian Cain
fonte
6

Na minha experiência profissional, lutei para obter um bom desempenho sólido de rede com o Samba no GNU / Linux. Você mencionou que alcançou velocidades de 55 MBps com ele, o que eu acredito, então acho que outra coisa está definitivamente em jogo.

No entanto, você já experimentou NFS, FTP e SCP? Os problemas de largura de banda são consistentes nos diferentes protocolos? Nesse caso, é provável que tenha se reduzido à conexão física. Se você obtiver resultados inconsistentes, é provável que seja um problema de software.

Além de testar os outros protocolos, você está usando criptografia na transferência? Por exemplo, usar rsync -zé bom para ativar a compactação, mas tem um custo de CPU, o que afeta severamente a velocidade geral da transferência. Se estiver usando SSHcom rsync, você terá criptografia em cima da compactação e sua CPU sofrerá um pouco de estresse, causando severas penalidades de velocidade.

Aaron Toponce
fonte
2
  1. Tente netstat -iprocurar por erros rx / tx.
  2. Tente netstat -sprocurar por problemas de tcp - compare os valores antes e depois da cópia do arquivo e procure picos grandes em redefinições ou retransmissões.
Rafael Ferreira
fonte
Infelizmente não existem erros TX / RX em todos depois de 100MB e o número de resets tem sido consistentemente 4 do começo ao fim do teste
Paul Keeble
0

Você pode verificar o congestionamento da sua rede; talvez alguns outros dispositivos estejam consumindo toda a sua largura de banda?

Além disso, talvez algo esteja errado com sua interface de rede e / ou seu driver. Bem estranho.

pmalmsten
fonte
No momento do teste, esses eram os únicos dois dispositivos na rede, nada mais estava ligado.
Paul Keeble
0

Se possível, para remover a maior dúvida de que é realmente um problema de SO / driver / cartão, conecte os computadores usando um cabo cruzado. Isso removerá o switch e outros possíveis problemas de rede da sua equação.

Stephen Jazdzewski
fonte