¿Por qué solo obtengo 300-400 Mbit / s en mi red de 1000 Mbit / s?

17

Mi configuración es así:

Laptop <--> Router <--> Desktop

Todos admiten gigabit Ethernet. Estoy usando el punto de referencia TCP / IP 'iperf' en la computadora portátil y de escritorio, y nunca obtuve más de 400 Mbit / s de rendimiento bruto. El portátil es un Intel Core 2 Duo 2 GHz con Windows XP, el escritorio es un Intel Core 2 quad 2.4 GHz con Windows 7. ¿Qué cosas puedo mirar para maximizar la velocidad de red entre ellos? Configuraciones de software? ¿Una forma de saber si mi cable no cumple con las especificaciones? ¿Cómo saber si el controlador Gigabit Ethernet en uno de los dispositivos simplemente no es capaz de alcanzar la velocidad máxima?

davr
fuente

Respuestas:

11

1 Gbit / s es el máximo teórico de esta conexión.

Muchas cosas pueden afectar esto.

Espere un éxito en el rendimiento de sus NIC a bordo, ya que probablemente serán (según las descripciones del dispositivo "Laptop" y "Desktop") adaptadores basados ​​en host que dependen de la CPU para procesar el tráfico de red. Por lo tanto, la velocidad se verá afectada por la CPU que hace otras cosas (como obtener los datos de los HDD al subsistema de red, por ejemplo).

Además, dependiendo de cuál sea el "enrutador", puede estar tratando de procesar los datos a medida que pasan del puerto LAN al puerto LAN, por lo que sus velocidades de procesamiento también pueden estar afectando las velocidades de transferencia de datos, independientemente de qué tan rápido sus 'puertos' son.

Si yo fuera usted, mi próxima prueba sería conseguirme un cable de conexión cruzada CAT6 'lo suficientemente largo' y conectar el portátil directamente a la PC (es posible que pueda escapar con un cable directo, ya que muchos NIC admiten automáticamente -crossover en estos días).

De esa forma, usted (al menos) puede eliminar o identificar fácilmente el enrutador (y / o el cableado existente) como un cuello de botella.

Ƭᴇcʜιᴇ007
fuente
Vea en.wikipedia.org/wiki/… para ver dos posibles pines para hacer un cable cruzado de gigabit.
once81
Buena información con seguridad. En este caso, si el usuario no está acostumbrado a hacer un cable y el objetivo es eliminar posibles ralentizaciones, entonces probablemente sea mejor usar un cable fabricado en fábrica. Nada mucho peor que un rizo suelto. ;)
Ƭᴇcʜιᴇ007
14
Solo para su información, con ethernet gigabit, ya no se necesitan cables cruzados. Se requiere que todos los controladores de ethernet gigabit puedan 'detectar automáticamente' el cable, por lo que puede usar un cable estándar para conectarse a dispositivos ethernet gigabit juntos. Intentaré conectar mi computadora portátil directamente al escritorio y ver si hay alguna diferencia.
davr
@davr ¿podrías tener algún éxito?
ebrahim.mr
8

iperf usa un tamaño de ventana bastante pequeño por defecto.

Aumente la ventana o ejecútela en modo UDP y saturará fácilmente una conexión de 1 Gbit / s.

usuario23307
fuente
No pensé en eso, lo intentaré.
davr
1
No lo saturará con hardware de grado de consumo. La CPU generalmente se ve limitada por el bus PCI o PCI-Express. es decir, la CPU no puede mover datos de la RAM a la tarjeta de red lo suficientemente rápido. El hardware de grado de servidor parece funcionar mejor. Lo sé, soy programador y he estado tratando de hacer esto. Acercándome pero ahora limitado por mi propio hardware.
Matt H
1
funcionó para mí, me golpeó la cabeza durante una hora tratando de descubrir por qué Windows iperf me da 250mbit / sec y Ubuntu arrancado en la misma máquina me da 925mbit / sec. Resulta que iperf en Windows tiene un tamaño predeterminado de ventana de 8k tcp y un tamaño de ventana de 88k en Linux.
Omry
@Omry, iperf en Windows es un perro desde varias perspectivas. La mayoría de las veces me he rendido y solo ejecuto iperf bajo Linux
Mike Pennington
4

Jeff Atwood tiene un buen análisis de por qué el rendimiento del mundo real de una red Gigabit está más cerca, en sus cálculos, de 30 MB / s. (grande 'B', no pequeña 'b')

... definitivamente no debe esperar la escala perfecta que logramos pasar de 10baseT a 100baseT. Sin ningún ajuste importante, obtendrá solo una fracción de la mejora de diez veces el ancho de banda que podría esperar

JMD
fuente
Esa herramienta "pcattcp" que está usando es una mierda. Mi netbook Linux de 900mhz (que probablemente sea tan rápido como su máquina en 2005) tiene 300MB / s sobre loopback.
user23307
Sí, iperf ofrece un rendimiento notablemente mejor en loopback que pcattcp. Me quedaré con iperf para realizar pruebas por ahora, a menos que escuche de otra cosa que sea mejor.
davr
1
Además, ya estoy más alto que su 240mbit, y ese artículo tiene 5 años, por lo que creo que ya no es tan relevante, ya que la tecnología debería haber avanzado mucho desde entonces.
davr
Bueno, teniendo en cuenta que la interfaz de bucle invertido es virtual (ni siquiera se transfiere nada a la tarjeta de red), se esperaría un rendimiento mucho mejor (básicamente se trata de procesar y no tocar el HDD). Estoy obteniendo 8.09 Gbits / s (1035Mbytes / s) a través de la interfaz de bucle invertido.
Matt H
3

Si todo es gigabit, podría intentar habilitar las tramas gigantes . Uno de mis amigos hizo esto con la computadora de su casa y notó un gran aumento en el rendimiento. Sin embargo, hay algunos inconvenientes para las aplicaciones de baja latencia como VOIP, como se menciona en el artículo.

robar
fuente
El aumento no debería ser tan dramático para la mayoría de las aplicaciones. Todo esto hará que signifique menos sobrecarga del protocolo TCP o UDP por paquete. Además, para obtener mejores resultados, sus conmutadores / enrutadores también deberían admitir tramas gigantes. Dudo que lo haga.
Matt H
Para cualquier resultado, sus interruptores deben admitir tramas gigantes. No hay forma de que el dispositivo solo L2 envíe un error ICMP 'Paquete demasiado grande' para decirle a su máquina que necesita usar un tamaño de paquete más pequeño.
cpt_fink
1

¿Dijiste que estás usando un enrutador? ¿Es eso un enrutador de grado de consumo (no interruptor)?

Diría que probablemente sea tu cuello de botella. Para verificar esto, conecte la computadora portátil directamente al escritorio. Configure su computadora portátil y de escritorio para usar una dirección IP estática como 192.168.1.10 (computadora portátil), 192.168.1.11 (computadora de escritorio).

Esto debería permitir que la computadora portátil se comunique directamente con el escritorio. Ejecute iperf entre ellos e informe el resultado aquí.

Eso debería funcionar, ya que la mayoría de las tarjetas de red modernas pueden detectar automáticamente los cables de transmisión / recepción a diferencia de los viejos tiempos cuando solía tener que construir un cable cruzado.

Si ve un aumento marcado, entonces su enrutador es el culpable. Algunos de ellos tienen interruptores en la parte posterior, otros en realidad pueden enrutar entre puertos. Muchos de estos enrutadores tienen un rendimiento terrible. Si encuentra que este es el problema, si yo fuera usted, actualizaría el enrutador (que probablemente esté bien para el uso de Internet) o iría a comprar un conmutador GigE y conectarlo en cascada al conmutador del enrutador. Conecte su computadora portátil y de escritorio al conmutador. De esa manera, evitarán el enrutador para hablar entre ellos.

Asegúrese de cambiar su computadora portátil y de escritorio a DHCP cuando haya completado el experimento.

Para darle una idea, debería obtener, creo que 650Mbit / sy más. iperf no usa el disco duro a menos que se lo indique. Entonces, es memoria a memoria o realmente prueba la red.

Uno de los otros cuellos de botella es en realidad qué tan rápido su CPU puede transferir datos desde la memoria a la tarjeta de red. Las redes que están en PCI express parecen funcionar mejor. Creo que las computadoras portátiles generalmente están construidas de manera bastante económica en estos días, por lo que si no ve mucho más arriba, entonces este podría ser el otro cuello de botella.

Además, los conmutadores de grado de consumidor a menudo solo pueden hacer frente a la conmutación de 1 GB entre dos puertos, mientras que los conmutadores administrados de gama alta pueden conmutar a velocidad de cable en todos los puertos simultáneamente. Esa es parte de la razón por la que cuestan mucho más.

Matt H
fuente
1

Hemos realizado numerosas pruebas y se redujo al sistema operativo.

Si pasamos de Ubuntu 11.04 a Ubuntu 11.04 (lo mismo con CentOS para máquinas Linux), el rendimiento de velocidad es ~ 938-941 MBits / s constante. Si pasamos de Windows 7 x64 SP1 Ultimate a Ubuntu 11.04, varía de ~ 440-475 MBits / s. Si pasamos de Windows 2008 R2SP1 x64 a Ubuntu 11.04, la velocidad mide ~ 435-635 MBits / s.

Como puede ver, las máquinas basadas en Linux utilizan completamente los enlaces Gigabit en comparación con Windows. Ahora estamos investigando configuraciones en Windows que resulten en el mismo rendimiento que Linux en el mismo hardware. Las limitaciones del disco duro no son un factor ya que esto está en la memoria. Para el registro, las máquinas que utilizamos tenían unidades de 7200 RPM con SATA 3.0. Tanto Ubuntu 11.04 (o base de Linux) como Windows excedieron la velocidad teórica de esos enlaces SATA.

Accede
fuente
Gracias por la información, actualice su respuesta si encuentra alguna configuración que afecte la velocidad en Windows
davr
Esto me hace pensar si iperf no es la única parte de Windows que por defecto a un tamaño de paquete más pequeño que Linux, ver superuser.com/a/95587/16966
Wilkie mate
0

Las velocidades de transferencia son tan buenas como el eslabón más débil de la cadena. Puede que no sea la velocidad de la red, sino la velocidad de escritura / lectura de sus discos duros.

Puede descargar el software RamDisk y crear un RamDisk en ambas computadoras. Coloque un archivo de tamaño decente dentro de él y realice una transferencia a través de la red entre los RamDisks. Esto debería mostrarle la velocidad real de su red que no se verá afectada por las velocidades de su disco duro.

Marcin
fuente
2
Es por eso que mencioné 'iperf', pero supongo que no es una herramienta tan común. Básicamente, prueba la velocidad de la red directamente, sin leer / escribir en el disco duro, por lo que ese no es el cuello de botella allí. Sin embargo, me doy cuenta de que HDD puede ser un cuello de botella en el uso del mundo real.
davr
0

No es una respuesta directa a su pregunta, pero recientemente obtuvimos el siguiente resultado con iperfdos cajas de Linux (8 núcleos, 2,66 GHz cada una):

------------------------------------------------------------
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

con MTU = 1500 (es decir, sin usar tramas gigantes). Eso debería darle una idea de qué rendimiento es en principio posible.

Las tarjetas de red (salida lspci) son:

82571EB Gigabit Ethernet Controller

a ambos lados.

Es posible que desee verificar la carga de la CPU en el servidor y especialmente en el lado del cliente y ver si esto está cerca del 100%. Aunque tengo que decir que en nuestro sistema, el núcleo más ocupado está 80% (83%) inactivo en el lado del receptor (remitente), mientras que los otros 7 parecen estar 100% inactivos (verificado con mpstat).

Esto se ejecuta iperfsin la -uopción, es decir, utiliza TCP.

Andre Holzner
fuente
Creo que debería obtener> 500 o 600 mbits / s en hardware de escritorio de 1 a 2 años.
Matt H
-4

davr, a diferencia del canal de fibra y tecnologías similares que utilizan esquemas sofisticados de asignación de ancho de banda, ethernet es un protocolo de 'escucha y graznido'. Ethernet primero escucha si alguien está transmitiendo actualmente, si es así, espere si no, luego envíe. El problema es que si dos o más partes que desean transmitir están escuchando al mismo tiempo, ¡también enviarán al mismo tiempo! Esto provocará colisiones y retransmisiones. Los interruptores elegantes eliminan mucho de esto, pero no todos.

Con Ethernet, debe esperar ver un ancho de banda del 30-40 por ciento (Parece que está obteniendo esto ... Podría estar equivocado en el # exacto, mucho depende de la calidad del interruptor, etc.) antes de que comiencen a ocurrir muchas colisiones, con la tecnología de la tela. algo así como el 80%. Ethernet es barato, el canal de fibra no lo es. . . No estoy seguro de qué hace 4G ethernet para solucionar esto. . . podría tener una topología de red más "similar" como el canal de fibra y amigos. Esto es una simplificación excesiva, pero es esencialmente correcto.

TheEruditeTroglodyte
fuente
2
Sí, no estoy usando un centro 'tonto'. Creo que la mayoría de la gente en estos días usará conmutadores o enrutadores inteligentes que manejan los dispositivos de conexión directamente entre sí, eliminando colisiones. Además, mi prueba involucra solo dos dispositivos conectados a un solo enrutador, por lo que las colisiones no serían un problema en mi caso particular.
davr
davr: disculpe mientras juego al abogado de los demonios por un momento. . . ¿Qué impide que sus dos anfitriones intenten hablar al mismo tiempo? Además, no mencionó qué tipo de datos se transmiten. . . ¿Es casi exclusivamente TCP o hay mucha transmisión de datos (audio, video, etc.)? ¿Ambas computadoras transmiten datos simultáneamente o hay una relación cliente / servidor demarcada con mayor precisión?
TheEruditeTroglodyte
2
Estoy usando un programa especial de evaluación comparativa TCP / IP donde solo una computadora envía y la otra escucha. Pero aun así, Ethernet es full duplex ... si solo tiene dos máquinas, ambas pueden enviarse y recibir ancho de banda completo entre sí al mismo tiempo.
davr