Consulta para multiples tarjetas de red

Daniel Serpell daniel_serpell en yahoo.com
Jue Mayo 18 15:41:31 CLT 2006


Hola!

El Thu, May 18, 2006 at 01:30:23PM -0400, Horst von Brand escribio:
> Miguel Oyarzo <admin en aim.cl> wrote:
> 
> > Si... puede ser... 
> > quizas en rendimiento nomal no haria diferencia alguna...
> 
> Y en rendimiento "no normal" (red saturada) estan pensando en usar polling,
> no interrupciones (no se si esta ya implementado, y para que tarjetas; es
> importante a 1Gbps, y a 10Gbps sera indispensable...).

Las tarjetas e1000 (serie Intel PRO/1000) limitan el número de
interrupciones utilizando contadores de eventos y timers.

Si quieres ancho de banda y no te importa la latencia, le indicas
que mande una interrupción sólo después de muchos paquetes o si han
transcurrido varios milisegundos desde el último paquete recibido.

Si quieres mejor latencia, le indicas que mande una interrupción
despues de sólo unos pocos paquetes y que no espere antes de enviarla.

Existe la posibilidad de adaptar estos contadores en función de la
carga de la red.

Como estas tarjetas soportan múltiples transacciones con dma
scatter/gatter, pueden procesar muchos paquetes TCP diréctamente,
reconstruyendo el stream en memoria sin intervención de la CPU.

Esto es posible además porque se puede programar al hardware para
que mire ciertos bytes en el encabezado de los paquetes y utilice
esa información para indexar una tabla de acciones a realizar.
Esta tabla podría tener información de pares destino/puerto que
indiquen como reensamblar los stream TCP.

Pese a todo esto, en mi experiencia la saturación de la CPU en gigabit
ethernet sucede siempre debido al uso de paquetes muy pequeños, en Linux
es complicado programar aplicaciones que puedan procesar UDP a la tasa
requerida con un MTU de 1.5kb. Jumbo-Frames ayuda mucho.

Utilizando TCP no es dificil llegar a unos 260MBps punto a punto con
hardware "pc". Más que eso requiere buena infraestructura (red/disco),
además de jumbo-frames.

Moraleja: si te interesa el rendimiento, usa TCP...

   Daniel.



Más información sobre la lista de distribución Linux