Sobre lo de tarjetas de red...
Horst von Brand
vonbrand en inf.utfsm.cl
Sab Mayo 20 13:12:57 CLT 2006
Rodrigo Fuentealba <darkprox en gmail.com> wrote:
> [Falta un turro de atribuciones...]
> >/> 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.
> > Claro que no. Hay 5 tarjetas de red, /aquella/ que recibio datos genera una
> > interrupcion que se atiende lanzando los datos al stack TCP/IP. Las demas
> > no participan en nada mientras no haya trafico por ellas.
> ok, Doc, si entiendo y lo sé, pero como hace el procesador para
> atender las interrupciones que manda la tarjeta de red?
APIC interrumpe a la CPU de turno, que al recibir la interrupcion
basicamente entra a ejecutar una funcion designada al efecto. Esta funcion
va y negocia lo que debe hacer con los fierros del caso, y luego los
habilita para continuar trabajando. O sea, si recibe datos de la tarjeta de
red, en el handler se sacan los datos de la tarjeta (y se copian a RAM), se
avisa a la tarjeta que se sacaron los datos, y se deja registrado para que
un bottom half (en caso de Linux 2.6, un softirq) se haga cargo, luego
retorna a lo que estaba haciendo.
> No era que las
> pone en un buffer para sincronizar el trabajo interno? Me imagino qué
> pasarÃa si todos declararan interrupciones al mismo tiempo y fueran
> atendidas al mismo tiempo.
Si, puede ocurrir. En Linux 2.6 no seran atendidos por la misma CPU, eso
si.
> He visto semáforos descompuestos en carreteras
> y ha habido muertes por eso, y acá pasarÃa algo asà con los datos que
> circulan.
No entendi la relacion con lo que estamos hablando...
[...]
> >/> 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.
> > Tambien en NUMA, solo que si accedes a "tu" memoria es mas rapido que si
> > accedes a memoria "remota".
> Me faltó especificar que "una sola memoria" es "un sólo módulo" de
> memoria... pensé que era entendible.
No queria arriesgarme que alguien entendiera mal...
[...]
> NUMA está claro, no existe una cabeza que tenga mucha memoria, cada
> procesador tiene su propia memoria
Yep.
> y su propia asignacion de tareas,
Igual que siempre, cada CPU hace lo suyo. Y es responsabilidad del sistema
operativo asignarles tareas en forma equitativa.
> todos se comparten con todos y si hay una tarea que tengo que hacer pero
> estoy muy ocupado, la suelto y le digo al nodo más próximo que la realice
> (o me preste memoria para realizarla) y me devuelva el resultado. Pero
> luego hay que chequear que el resultado sea consistente y mantener un
> control en cada uno de los nodos sobre la cantidad de carga que existe en
> los demás.
No. Esa coordinacion la lleva el sistema operativo. Es perfectamente
posible para la CPU 3 ejecutar codigo/usar datos que residen en la memoria
de la CPU 14, pero el rendimiento sera feo.
--
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, Chile Fax: +56 32 797513
Más información sobre la lista de distribución Linux