Consulta para multiples tarjetas de red

2006-05-19 Por tema Rodrigo Fuentealba
>/ >> Una controladora  de interrupciones balanceando IRQs?  algo asi
/>/ >> como funcionan las APIC en sistemas SMP?
/
>/> Nop... las IRQ no se balancean. Simplemente se les controla el estado
/>/> para enviar informacion cuando estan desocupadas, si es que existe
/>/> dicha informacion.
/
> Como la IRQ puede estar "desocupada"?!

no ha generado una interrupción

>/ >> Pienso que el numero de la IRQ si tiene que ver con la prioridad ante
/>/ >> la CPU.
/
>>/ Sí, son por partes iguales,
/
> Que es "por partes iguales"?

A todas les toca el mismo tiempo de revisión.

>>/ pero se les destina distinta cantidad de
/>>/ informacion a cada uno.
/
> Que "distinta cantidad de informacion"? Simplemente se invoca un handler
> registrado para esa IRQ, no hay ninguna "informacion" involucrada que yo
> sepa... 

No es lo mismo enviar 1 kb de información por la red que una imagen de 1280x768 
a 32 bits
a la pantalla, ¿o sí profesor? OK, mezclé conceptos.

>>/ No existe un bloqueo exclusivo, porque podria
/>/> bloquear la computadora.
/
> Como, exactamente?

Que se genere una interrupción tras otra, antes de que el procesador suelte la 
tarea
que estaba realizando con la tarjeta de red.

>/ >> Talvez en las IRQs de uso general (como 9,10,11, 15) se deberia
/>/ >> preguntar al controlador de interrupciones a quien se le da mayor
/>/ >> prioridad (dependiendo del numero de interrupcion que use para llamar
/>/ a la CPU)
/
>>/ No lo creo... El mouse PS/2 va generalmente en IRQ 9, no? Pues, por
/>>/ que en los computadores antiguos se te pega cuando cargas muchas cosas
/>>/ desde el disco duro (controladora de discos: otra irq) y las envias
/>>/ por la tarjeta de sonido (tarjeta de sonido: otra irq)? Esto,
/>>/ logicamente, en tarritos pentium de 100, por ejemplo. Han cambiado la
/>>/ forma de transmitir, los buses, el manejo de RAM, pero la tecnologia
/>>/ en su fondo sigue siendo la misma.
/
> Y el manejo de IRQs es radicalmente diferente, y siempre si la CPU esta
> hasta las orejas dificilmente atiende al mouse. Mas con un sistema
> operativo mas bien tonto. Nada particularmente raro en eso...

Acaba de decir lo mismo que yo dije: un ejemplo del por qué NO se le da
mayor prioridad a una IRQ con otra. Pero yo lo hice con un ejemplo palpable.
Ningún aporte en particular.

>>/  Como dije en un correo anterior, hay varios
/>>/ relojes dentro de un controlador de IRQ's revisando tonterillas.
/
> No es asi.

Hasta en los videos explicativos de la Intel salía que era así...

>/ >> pero como saber si superamos cierto nivel de saturacion? No creo
/>/ >> que sea por que estamos cerca del limite del los 10/100 Mbps o si
/
Hablando de saturación de la tarjeta de red, es por velocidad.
Hablando de saturación del sistema, se pone lento.

> Estamos hablando a tarjeta de red constante.

Ahora el que no entendio fui yo. 

Saludos.


Consulta para multiples tarjetas de red

2006-05-18 Por tema Daniel Serpell
Hola!

El Thu, May 18, 2006 at 01:30:23PM -0400, Horst von Brand escribio:
> Miguel Oyarzo <[EMAIL PROTECTED]> 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.


Consulta para multiples tarjetas de red

2006-05-18 Por tema Rodrigo Fuentealba
At 16:57 17-05-2006, Victor Hugo dos Santos wrote:

> >El 17/05/06, Miguel Oyarzo<[EMAIL PROTECTED]> escribió:
>   
>> >>Estimados,
>> >>
>> >>Me asalta la duda respecto del funcionamiento de 4 o 5 placas de red 
>> >>ethernet PCI
>> >>en un mismo servidor Linux.
>> 
4 o 5? Ese servidor es algo así como un router y además un servidor?
>> >>Si cada tarjeta funciona gracias a una interrupcion y estas a su ves estan 
>> >>numeradas,
>> >>significa que algunas de las ethx podria tener menor precedencia que sus 
>> >>hermanas?
>> 
Nope... a ver, cómo te lo explico con una analogía didáctica...
Imagínate un reloj, en el que tienes una tarjeta de red a las 1, otra a
las 2, otra a las 3, otra a las 4 y otra a las 5... la tarjeta de video
a las 6, la de sonido a las 7 y así para todo el hardware. Cada vez que
la aguja del reloj avance una hora, existe un personaje que revisa si a
la hora determinada hay un evento que enviar por esa tarjeta. Si existe
dicho evento, entonces lo envía a la tarjeta antes de que avance a la
próxima hora, y luego repite el proceso nuevamente.

El reloj podría ser un contador interno del chipset, que mira a quién le
toca. Cada una de las horas es una pieza de hardware esperando por
peticiones, y el personaje que revisa es una especie de buffer que mira
el estado de ese hardware en particular.

Más de alguien diría "pero con eso estás diciendo que la computadora
trabaja como monotarea, atendiendo una petición por click". Pues, los
procesadores no tienen únicamente un "reloj", sino varios relojes
sincronizados para que nunca dos relojes revisen el mismo evento para la
misma pieza de hardware.

Ahora, en un PC que tiene 5 tarjetas de red, tienes 5 "horas" (ok,
definido de manera más técnica, son ciclos, y nada que ver con los
ciclos de procesador, eh?). En cambio, si tienes una sola tarjeta de
red, únicamente usas un ciclo para enviar información. Vuelvo a repetir,
no es la manera más real de explicarlo.
> >a no ser que estes utilizes un sistema NUMA y que associes diferentes
> >BUS/CPUs a los dispositivos...
>   
NUMA significa "Non Unified Memory Access", y te permite tener varios 
módulos de memoria independientes para cada procesador que tengas. El 
opuesto de NUMA es UMA, que es Unified Memory Access, y que es un módulo 
de memoria pero que puede ser accesado por cualquier cantidad de 
procesadores. Un ejemplo:

Con UMA: Una placa Dual tiene 2 procesadores y 2 Gb. de memoria RAM 
(ejemplo). Puede que tengas dos procesadores y todo eso, pero sigues 
teniendo "una sola memoria" que gestiona todo tu hardware.

Con NUMA: Cada procesador tiene su propia memoria, por lo que debería 
existir algún método de sincronización para enviarse tareas entre ellos: 
Un procesador ejecuta XMMS, otro ejecuta el Firefox, otro ejecuta una 
instancia de Apache, y así, sin perder la consistencia. Si un procesador 
requiere usar una pieza específica de hardware que esté disponible en 
ese momento, la usa pero sin perjudicar en la cuenta de ciclos a los 
otros procesadores. Ahí entramos a discutir que si es master-slave, que 
si es múltiples maestros y múltiples esclavos, etc.

>> >>o existe algun mastering que encola peticiones irq para placas de red y 
>> >>les da la misma
>> >>prioridad de uso de cpu?
>> 
En resumen y según tengo entendido yo, la prioridad para cada tarjeta no
la da el hardware, sino el sistema operativo y es por demanda... Se le
va a poner más atención a una tarjeta de red que envía un CD por e-mail
(no falta el gracioso que intenta), que a una tarjeta que no hace nada.
> >En el lado SW, tenemos básicamente dos cosas:
> >  - scheduler
> >  - un comando (creo que era tasksel)
> >
> >El scheduler distribuye cargas y con el comando puedes asociar tu
> >mismo los procesos.
>
> correcto, pero a eso se le conoce como "excepciones" yo mas bien hablo de 
> niveles mas 
> bajo que los procesos de sw . mas bien me refiero a las IRQ 
>   
Si quieres balancear las cargas de las tarjetas de red, creo que el eql
o eqn, no sé cómo es, deberías averiguar, te nivelan lo que envías entre
dos, tres o más tarjetas de red. Pero lee la documentación, porque es
sólo un concepto que tengo vagamente en mi memoria.
> >"socken des teufel" <[EMAIL PROTECTED]> dijo:
> >Desconosco como funciona exactamente, pero no creo que el sistema operativo 
> >tenga alguna priodidad sobre alguna irq mas >que otra (a no ser lo hayan 
> >fijado a mano asi)
> >Ademas el chipset de la system board es el encargado de balancear las irq de 
> >los dispositivos.
>   
El chipset de la tarjeta madre no hace tareas de balanceo, sino de
entrega de información por ciclos/eventos y procesamiento básico. La
función principal del chipset es alivianarle la carga al procesador en
su gestión de las posiciones de memoria donde cada pieza está.


> No creo que chipset (o el controlador de interrupciones) balancee nada, 
> su unica funcion es  encolar las peticiones y establecer prioridades del HW 
> que hablara a la CPU.

> La p

Consulta para multiples tarjetas de red

2006-05-18 Por tema Miguel Oyarzo
At 00:46 18-05-2006, Horst von Brand wrote:
>Miguel Oyarzo <[EMAIL PROTECTED]> wrote:
>
>[...]
>
>> >"socken des teufel" <[EMAIL PROTECTED]> dijo:
>
>[Reformateado para hacerlo comprensible, espero sin cambiar el sentido]
>
>> > > Desconosco como funciona exactamente, pero no creo que el sistema
>> > > operativo tenga alguna priodidad sobre alguna irq mas que otra (a no ser
>> > > lo hayan fijado a mano asi) 
>> > > Ademas el chipset de la system board es el encargado de balancear las
>> > > irq de los dispositivos.
>
>> No creo que chipset (o el controlador de interrupciones) balancee nada,
>> su unica funcion es encolar las peticiones y establecer prioridades del
>> HW que hablara a la CPU.
>
>Balancean la atencion de las IRQs de parte de las CPUs.

Una controladora  de interrupciones balanceando IRQs?  
algo asi como funcionan las APIC en sistemas SMP? 

Pense que ese balanceo era solo para systemas multiprocesadores. Me pregunto 
que 
sentido tiene balancear IRQs con un solo procesador. No digo que no, pero
me suena raro.


>> La pregunta es si la IRQ asignada a cada tarjeta establece o no prioridad
>> ante la CPU.
>
>No.

No?  es decir, el reloj (irq0) tiene la misma prioridad que el puerto paralelo 
(irq7) ?
Pienso que el numero de la IRQ si tiene que ver con la prioridad  ante la CPU.

Talvez en las IRQs de uso general (como 9,10,11, 15) se deberia preguntar al 
controlador
de interrupciones a quien se le da mayor prioridad (dependiendo del numero de 
interrupcion 
que use para llamar a la CPU)


>> Creo que eso permitiria distruibuir mejor el rendimiento de un conjunto
>> de placas en un mismo servidor, (la placa con mayor trafico no mantendria
>> la atencion de la CPU tanto tiempo) podra ser efectivo esto?
>
>No. Solo si las tarjetas estan saturadas podria hacer alguna diferencia.
>Las tarjetas son /harto/ mas inteligentes de lo que pareces creer.

Si... puede ser... 
quizas en rendimiento nomal no haria diferencia alguna...

pero como saber si superamos cierto nivel de saturacion? 
No creo que sea por que estamos cerca del limite del los 10/100 Mbps o si?

Saludos

Miguel Oyarzo
Austro Internet S.A.
Punta Arenas








Consulta para multiples tarjetas de red

2006-05-18 Por tema Victor Hugo dos Santos
El 18/05/06, Horst von Brand<[EMAIL PROTECTED]> escribió:
> Victor Hugo dos Santos <[EMAIL PROTECTED]> wrote:

[...]

> > ... se enchufas varios dispositivos en un PC estes comparten el
> > BUS y cuanto mas dispositivos, menor sera el desempeno..
>
> En teoria. Que pueda medirse en la practica es otro cuento... si el bus da
> mas que la suma de las Eth, no hay drama. Si quieres maximo rendimiento,
> piensa en una tarjeta multi-Eth, y/o tarjetas de red mas sofisticadas
> (filtros por MAC mas complejos, CRC en hardware, mayor memoria para frames
> recibidos/por enviar, ...).

En teoria, con las 4/5 tarjetas mencionadas + disco (esto sin
considerar otros dispositivos que comparten el BUS)... ya deberian de
ser suficientes para superar los 133MB/s del BUS pci !!!

... por cierto. estamos suponiendo que las tarjetas son de
100Mb/s... se son tarjetas de red de 1G en barramentos PCI de
32bits... olvidalo...bastaria una sola  para saturar el BUS !!!

> > a no ser que estes utilizes un sistema NUMA y que associes diferentes
> > BUS/CPUs a los dispositivos...
>
> Urgh.

alguna mala experiencia que queira compartir ???


> > > o existe algun mastering que encola peticiones irq para placas de red y
> > > les da la misma prioridad de uso de cpu?
>
> > En el lado SW, tenemos básicamente dos cosas:
> >   - scheduler
>
> Nada tiene que ver con el manejo de IRQs, administra procesos (tasks).

por esto agregar las iniciales de software (SW)  a mi frase !! :-D
pero tienes razon... nada que ver scheduler con el tema de IRQ... sorry .

> >   - un comando (creo que era tasksel)
>
> No esta por aca. Hay taskset(8), que asocia un proceso con una CPU, pero
> eso es otro tema.

mmm... si..creo que era taskset 


> > El scheduler distribuye cargas y con el comando puedes asociar tu
> > mismo los procesos.
>
> Con que?

puedes asociar los procesos con las CPUs.

salu2.

-- 
-- 
Victor Hugo dos Santos
Linux Counter #224399


Consulta para multiples tarjetas de red

2006-05-18 Por tema Horst von Brand
Miguel Oyarzo <[EMAIL PROTECTED]> wrote:

[...]

> >"socken des teufel" <[EMAIL PROTECTED]> dijo:

[Reformateado para hacerlo comprensible, espero sin cambiar el sentido]

> > > Desconosco como funciona exactamente, pero no creo que el sistema
> > > operativo tenga alguna priodidad sobre alguna irq mas que otra (a no ser
> > > lo hayan fijado a mano asi) 
> > > Ademas el chipset de la system board es el encargado de balancear las
> > > irq de los dispositivos.

> No creo que chipset (o el controlador de interrupciones) balancee nada,
> su unica funcion es encolar las peticiones y establecer prioridades del
> HW que hablara a la CPU.

Balancean la atencion de las IRQs de parte de las CPUs.

> La pregunta es si la IRQ asignada a cada tarjeta establece o no prioridad
> ante la CPU.

No.

> Si alguien sabe que comente porfavor... por que si es asi, en uno de mis
> servidores Linux colocare la placa de red mas cargada con IRQ mas alta
> (osea una prioridad baja para el sistema).

Se supone que PCI asigna IRQs por si mismo, debiera arreglar que no se
compartan (eso disminuye un pelito el tiempo de respuesta a la IRQ), pero
fuera de eso...

> Creo que eso permitiria distruibuir mejor el rendimiento de un conjunto
> de placas en un mismo servidor, (la placa con mayor trafico no mantendria
> la atencion de la CPU tanto tiempo) podra ser efectivo esto?

No. Solo si las tarjetas estan saturadas podria hacer alguna diferencia.
Las tarjetas son /harto/ mas inteligentes de lo que pareces creer.
-- 
Dr. Horst H. von Brand   User #22616 counter.li.org
Departamento de Informatica Fono: +56 32 654431
Universidad Tecnica Federico Santa Maria  +56 32 654239
Casilla 110-V, Valparaiso, ChileFax:  +56 32 797513
From [EMAIL PROTECTED]  Thu May 18 00:40:20 2006
From: [EMAIL PROTECTED] (Horst von Brand)
Date: Thu May 18 08:19:33 2006
Subject: Consulta para multiples tarjetas de red 
In-Reply-To: Your message of "Wed, 17 May 2006 16:57:30 -0400."
<[EMAIL PROTECTED]> 
Message-ID: <[EMAIL PROTECTED]>

Victor Hugo dos Santos <[EMAIL PROTECTED]> wrote:
> El 17/05/06, Miguel Oyarzo<[EMAIL PROTECTED]> escribió:
> > Estimados,

> > Me asalta la duda respecto del funcionamiento de 4 o 5 placas de red
> > ethernet PCI en un mismo servidor Linux.

Un i486 es capaz de saturar (!) varias 100baseT...

> > No se trata de algun error, solo es una duda de hardware:

> > Si cada tarjeta funciona gracias a una interrupcion y estas a su ves
> > estan numeradas, significa que algunas de las ethx podria tener menor
> > precedencia que sus hermanas?

Si, podria ser.

> ... se enchufas varios dispositivos en un PC estes comparten el
> BUS y cuanto mas dispositivos, menor sera el desempeno..

En teoria. Que pueda medirse en la practica es otro cuento... si el bus da
mas que la suma de las Eth, no hay drama. Si quieres maximo rendimiento,
piensa en una tarjeta multi-Eth, y/o tarjetas de red mas sofisticadas
(filtros por MAC mas complejos, CRC en hardware, mayor memoria para frames
recibidos/por enviar, ...).

> a no ser que estes utilizes un sistema NUMA y que associes diferentes
> BUS/CPUs a los dispositivos...

Urgh.

> > o existe algun mastering que encola peticiones irq para placas de red y
> > les da la misma prioridad de uso de cpu?

> En el lado SW, tenemos básicamente dos cosas:
>   - scheduler

Nada tiene que ver con el manejo de IRQs, administra procesos (tasks).

>   - un comando (creo que era tasksel)

No esta por aca. Hay taskset(8), que asocia un proceso con una CPU, pero
eso es otro tema.

> El scheduler distribuye cargas y con el comando puedes asociar tu
> mismo los procesos.

Con que?

> mmm...sobre esto ultimo, hablo solamente basado en algo de teoria, ya
> que nunca lo utilice. !!!  :-(
> Pero no creo que serveria de mucho en un sistema que no sea SMP.
> pienso yo !!!

En PC, las IRQs se atienden sin prioridades, AFAIU, asi que esto no es
tema. Si se encargan los APICs de distribuir las interrupciones entre las
CPUs en SMP, pero con eso taskset(8) es aun menos relevante.
-- 
Dr. Horst H. von Brand   User #22616 counter.li.org
Departamento de Informatica Fono: +56 32 654431
Universidad Tecnica Federico Santa Maria  +56 32 654239
Casilla 110-V, Valparaiso, ChileFax:  +56 32 797513


Consulta para multiples tarjetas de red

2006-05-17 Por tema Miguel Oyarzo
At 16:57 17-05-2006, Victor Hugo dos Santos wrote:
>El 17/05/06, Miguel Oyarzo<[EMAIL PROTECTED]> escribió:
>>Estimados,
>>
>>Me asalta la duda respecto del funcionamiento de 4 o 5 placas de red ethernet 
>>PCI
>>en un mismo servidor Linux.
>>No se trata de algun error, solo es una duda de hardware:
>>
>>Si cada tarjeta funciona gracias a una interrupcion y estas a su ves estan 
>>numeradas,
>>significa que algunas de las ethx podria tener menor precedencia que sus 
>>hermanas?
>
>... se enchufas varios dispositivos en un PC estes comparten el
>BUS y cuanto mas dispositivos, menor sera el desempeno..
>a no ser que estes utilizes un sistema NUMA y que associes diferentes
>BUS/CPUs a los dispositivos...

no esta en mis libos NUMA...  buscaré a ver si es util.


>>o existe algun mastering que encola peticiones irq para placas de red y les 
>>da la misma
>>prioridad de uso de cpu?
>
>En el lado SW, tenemos básicamente dos cosas:
>  - scheduler
>  - un comando (creo que era tasksel)
>
>El scheduler distribuye cargas y con el comando puedes asociar tu
>mismo los procesos.


correcto, pero a eso se le conoce como "excepciones" yo mas bien hablo de 
niveles mas 
bajo que los procesos de sw . mas bien me refiero a las IRQ 

>"socken des teufel" <[EMAIL PROTECTED]> dijo:
>Desconosco como funciona exactamente, pero no creo que el sistema operativo 
>tenga alguna priodidad sobre alguna irq mas >que otra (a no ser lo hayan 
>fijado a mano asi)
>Ademas el chipset de la system board es el encargado de balancear las irq de 
>los dispositivos. 

No creo que chipset (o el controlador de interrupciones) balancee nada, 
su unica funcion es  encolar las peticiones y establecer prioridades del HW que 
hablara a la CPU.

La pregunta es si la IRQ asignada a cada tarjeta establece o no prioridad ante 
la CPU.

Si alguien sabe que comente porfavor... por que si es asi, en uno de mis 
servidores Linux 
colocare la placa de red mas cargada con IRQ mas alta (osea una prioridad baja 
para el sistema).

Creo que eso permitiria distruibuir mejor el rendimiento de un conjunto de 
placas en un mismo servidor,
(la placa con mayor trafico no mantendria la atencion de la CPU tanto tiempo)

podra ser efectivo esto?

Saludos

Miguel Oyarzo O.,
Austro Internet S.A.
Punta Arenas



>mmm...sobre esto ultimo, hablo solamente basado en algo de teoria, ya
>que nunca lo utilice. !!!  :-(
>Pero no creo que serveria de mucho en un sistema que no sea SMP.
>pienso yo !!!
>
>salu2
>Victor Hugo dos Santos
>Linux Counter #224399