Pregunta

Para paquetes UDP con una carga útil inferior a 1470, ¿es posible lograr un rendimiento de 1 Gbit?Debido al pequeño tamaño del paquete, debería haber algunos obstáculos para lograr dicho rendimiento (E/S, sistema operativo, red, etc.).Me imagino que es posible que los controladores y el hardware deban ajustarse a paquetes pequeños/alto rendimiento.¿Alguien ha intentado lograr con éxito un rendimiento de 1 Gbit con pequeños paquetes UDP?

¿Fue útil?

Solución

Anteriormente experimenté un poco con el rendimiento en enlaces gigabit en hardware de PC relativamente estándar, aunque solo transmití (a través de tcpreplay), en lugar de udp.

El mayor obstáculo que encontré fue simplemente enviar paquetes a la propia NIC.Esto se puede mejorar significativamente utilizando un bus de alta velocidad para interactuar con su NIC (p. ej.una NIC pci-express 4x).Pero incluso con esto había un límite de paquetes por segundo muy definido.Obviamente, aumentar el tamaño del paquete le permitiría utilizar una mayor cantidad de ancho de banda y al mismo tiempo reduciría la carga del procesador.

En la misma línea que el comentario de Steve Moyer, existe un límite teórico para la utilización de cualquier red.En mis experimentos (que se realizaron en una red completamente silenciosa) vi un máximo de aproximadamente (y solo en la parte superior de mi memoria) 900 Mb/s.Esto fue con cargas de CPU del 30 al 40%.

Es más probable que la limitación la imponga el hardware de su sistema (es decir,PC) que su infraestructura de red: cualquier conmutador de red que se precie debería ser capaz de mantener un acceso a la red a máxima velocidad con paquetes pequeños, ciertamente a velocidades mucho más altas que las que la mayoría de las PC pueden soportar.

Otros consejos

¿Qué tipo de conexión de red estás utilizando?Si está utilizando un enlace 1000BaseTx/Fx, no espere más del 80 % de rendimiento con paquetes de tamaño máximo.A medida que disminuye el tamaño de su paquete, la sobrecarga de espaciado, sincronización, encabezados Ethernet, encabezados IP y encabezados UDP aumenta en relación con la carga útil y, por lo tanto, degrada aún más su rendimiento máximo.

Consulte la documentación del conmutador que está utilizando.Los conmutadores están limitados en la cantidad de paquetes por segundo (pps) que pueden entregar y, a menudo, no pueden soportar 1 GBps si envía paquetes con un tamaño de carga útil significativamente menor que el máximo.

Otra cosa que debe verificar es si su tarjeta de red está interrumpiendo la fusión y cuál es la cantidad máxima de descriptores de envío/recepción que puede admitir.A ese nivel de rendimiento, el tiempo de servicio de interrupción y el tiempo de cambio de contexto pueden convertirse en una gran sobrecarga para el sistema host, incluso con un sistema de memoria y CPU moderno.

Además, si utiliza gigabit sobre cobre, la trama Ethernet más pequeña que emitirá la tarjeta es de 512 bytes, por lo que los mensajes más pequeños se rellenarán hasta ese tamaño.Esto se debe a los requisitos para la detección de colisiones/sentido de portadoras.

Descubrí que el hardware tiene un límite de paquetes por segundo significativamente menor que la capacidad teórica de la red.Para un Broadcomm BCM5704S alcancé esto a 69.000 pps en comparación con 1.488.100 pps de gigabit.

Algunos números más que informé aquí, http://code.google.com/p/openpgm/

Hay un buen tutorial sobre cómo modificar la configuración de red (en Linux) para lograr una verdadera velocidad gigabit aquí: http://datatag.web.cern.ch/datatag/howto/tcp.html

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top