tipos socket informatica electrico sockets networking udp

sockets - informatica - tcp socket c++



Tiene problemas para lograr un rendimiento UDP de 1 Gb (5)

Para los 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, debe haber algunos cuellos de botella para lograr dicho rendimiento (E / S, SO, red, etc.). Imagino que los controladores y el hardware podrían tener que ajustarse a paquetes pequeños / alto rendimiento. ¿Alguien ha intentado lograr con éxito un rendimiento de 1 Gb con pequeños paquetes UDP?


¿Qué tipo de conexión de red estás usando? 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 para espaciado, sincronización, encabezados Ethernet, encabezados IP y encabezados UDP aumenta en relación con la carga útil y, por lo tanto, degrada su rendimiento máximo aún más.



Verifique la documentación del interruptor que está usando. Los switches están restringidos en la cantidad de paquetes por segundo (pps) que pueden entregar y, a menudo, no pueden soportar 1GBps si está enviando paquetes con un tamaño significativamente más pequeño que el tamaño máximo de la carga útil.

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

Además, si está utilizando gigabit en cobre, el marco Ethernet más pequeño que la tarjeta emitirá es de 512 bytes, por lo que los mensajes más pequeños se ajustarán a ese tamaño. Esto se debe a los requisitos de detección de detección / detección de colisión del transportista.


He encontrado que el hardware tiene un límite de paquete por segundo significativamente menor que la capacidad teórica de la red. Para un Broadcomm BCM5704S llegué a 69,000 pps en comparación con 1,488,100 pps de gigabit.

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


Anteriormente, he experimentado con el rendimiento en enlaces gigabit en hardware de PC relativamente estándar, aunque solo transmite (a través de tcpreplay ), en lugar de udp.

El cuello de botella más grande que encontré fue simplemente obtener paquetes para el NIC. Esto se puede mejorar significativamente mediante el uso de un bus de alta velocidad para la interfaz con su NIC (por ejemplo, una NIC 4x pci-express). Pero incluso con esto hubo un límite muy definido de paquete / segundo. Obviamente, aumentar el tamaño del paquete le permitiría utilizar más ancho de banda y reducir 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 realizaban en una red completamente silenciosa) veía un máximo de aproximadamente 900 Mb / s (y solo en la parte superior de mi memoria). Esto fue con cargas de CPU de 30 a 40%.

Es más probable que el hardware del sistema (es decir, PC) imponga la limitación que su infraestructura de red; cualquier conmutador de red que valga la pena debería ser capaz de mantener un acceso a la red de alta velocidad con paquetes pequeños, ciertamente a tasas mucho más altas que la mayoría de las PC pueden soportarlo