it-swarm-es.tech

¿Por qué esta conexión de red es tan lenta?

Tengo algunos problemas con la velocidad del rendimiento de la red en un servidor Linux que ejecuta Ubuntu 9.10. Las velocidades de transferencia en todo tipo de tráfico son de alrededor de 1,5 MB/s en una conexión Ethernet con cable de 1000mbit/s. Este servidor ha alcanzado 55 MB/s sobre samba en el pasado reciente. No he cambiado el hardware ni la configuración de la red. Ejecuto actualizaciones de forma regular y lo último y lo mejor de los repositorios de Ubuntu se está ejecutando en esta máquina.

Configuración de hardware

PC de escritorio con Windows - conmutador 1000 - conmutador 1000 - servidor Linux

Todos los interruptores son netgear, y todos muestran una luz verde para sus conexiones, lo que significa que la conexión es de 1000mbit/s. Las luces son amarillas cuando la conexión es de solo 100mbit/s. Otra información de diagnóstico:

[email protected]:~# 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)


[email protected]:~# 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

[email protected]:~# mii-tool
eth0: negotiated 1000baseT-FD flow-control, link ok

El servidor cree que tiene una conexión de 1000mbit/s. He probado la velocidad de transferencia copiando archivos usando Samba. También utilicé netcat (nc target 10000 <aBigFile) en el servidor para transferir a Windows (nc -l -p 10000) y vi niveles similares de bajo rendimiento.

Probé la velocidad de los discos duros usando hdparm y obtuve:

[email protected]:~# 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

La lectura del mismo archivo para su transferencia usando DD produjo lo siguiente:

[email protected]:/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

Estoy perplejo. ¿Qué podría estar causando el bajo rendimiento de la red, que es 2 órdenes de magnitud más bajo de lo que la red es capaz de hacer?

11
Paul Keeble

En mi experiencia profesional, he luchado por obtener un buen rendimiento de red sólido con Samba en GNU/Linux. Mencionaste que has logrado velocidades de 55 MBps con él, lo cual creo, así que supongo que definitivamente hay algo más en juego.

Sin embargo, ¿ha probado NFS, FTP y SCP? ¿Los problemas de ancho de banda son consistentes en los diferentes protocolos? Si es así, es probable que se reduzca a la conexión física. Si obtiene resultados inconsistentes, es probable que sea un problema de software.

Además de probar los otros protocolos, ¿está utilizando cifrado en la transferencia? Por ejemplo, usando rsync -z es bueno para habilitar la compresión, pero tiene un costo de CPU, que afecta severamente la velocidad general de la transferencia. Si usa SSH con rsync, entonces tiene cifrado además de la compresión, y su CPU estará bajo un poco de estrés, lo que provocará graves penalizaciones de velocidad.

6
Aaron Toponce

Algunas cosas que debe considerar verificar:

  1. Dúplex: si un lado piensa que el enlace es dúplex completo y el otro lado cree que el enlace es semidúplex, espere algo malo.
  2. Interruptor defectuoso? Evítalo/ellos.
  3. Tramas gigantes. La MTU de 9000 bytes reduce la sobrecarga, lo que debería aumentar el rendimiento (perdiendo un poco de latencia). Sin embargo, parece que su problema es tan grave que esto no ayudará.
  4. Funciones de TCP: ECN, SACK, control de congestión alg
  5. Tamaños de ventana de envío/recepción de TCP ( detalles para linux )

netperf es excelente para solucionar problemas de rendimiento de la red. Pero netcat no está mal en caso de apuro.

6
Brian Cain
  1. Tratar netstat -i y busque errores rx/tx.
  2. Tratar netstat -s y busque problemas de tcp: compare los valores antes y después de la copia del archivo y busque picos grandes en los reinicios o retransmisiones.
2
Rafael Ferreira

Puede comprobar la congestión de su red; ¿Quizás algunos otros dispositivos están consumiendo todo su ancho de banda?

Más allá de eso, tal vez algo esté mal con su interfaz de red y/o su controlador. Bastante raro.

0
pmalmsten

Si es posible, para eliminar la mayoría de las dudas de que se trate de un problema de sistema operativo/controlador/tarjeta, conecte las computadoras juntas usando un cable cruzado. Esto eliminará el conmutador y otros posibles problemas de red de su ecuación.

0
Stephen Jazdzewski