Documentos de Académico
Documentos de Profesional
Documentos de Cultura
El resto del artículo está organizado de la siguiente void source_init(source_t s, long clock,
source_e type, ...);
manera. En la Sección II describiremos el modelo de
funcionamiento de TrGen. Después, daremos algunos
detalles de la implementación de la herramienta en las Estas funciones permiten crear una fuente de tráfico e
secciones III (tráfico sintético y trazas) y IV (tráfico inicializarla. Los parámetros relevantes son s, la fuente
de tráfico, y type, que define el tipo de tráfico que
conducido por ejecución). Terminamos con una serie de
generara la fuente. En estos momentos, las clases de
conclusiones, así como una enumeración de las líneas de
tráfico disponible son STREAMED para tráfico sintético
trabajo futuro, en la Sección V.
y FILED para trazas de aplicaciones reales. La función
source_init() recibe un número de parámetros
II. DISEÑO DEL GENERADOR DE TRÁFICO TRGEN
variable que depende del tipo de tráfico.
Simulador funcional
Tráfico sintético
FSIN
A. Tráfico sintético
El tráfico sintético es el más sencillo de generar. Está
caracterizado por tres distribuciones: temporal, espacial
Simulador con modelado
Tráfico semi-sintético
de tiempos SICOSYS
y de tamaño del paquete.
API de
generación
de tráfico 1. La distribución temporal determina el tiempo de
Trazas Simulador VHDL
llegada entre paquetes, y su correlación.
2. La distribución espacial determina los nodos de
destino de los paquetes.
Simulación conducida por
3. La distribución del tamaño determina el tamaño
Prototipos hardware
ejecución de los paquetes generados.
Fig. 1. Modelo de funcionamiento de TrGen. A través de una interfaz A modo de ejemplo, una forma frecuente de evaluar en
única, los simuladores de redes de interconexión acceden a muy
diversas formas de generadores de tráfico. la fase preliminar una red es usando tráfico sintético con
una distribución temporal de Bernouilli, una distribución
B. API espacial uniforme o con un patrón muy regular, y un
tamaño de paquete constante. Es posible sin embargo
En estos momentos disponemos de un prototipo de especificar fuentes de tráfico sintético muy diversas,
TrGen que implementa un API básico, sujeto a futuras para simular distintos tipos de aplicaciones. Las
ampliaciones. Dicho API consta de las siguientes posibilidades para cada distribución son muy amplias,
funciones: permitiendo cada una, según su tipo, evaluar distintos
void source_new(source_t * s);
aspectos de la red.
XV JORNADAS DE PARALELISMO—ALMERÍA, SEPTIEMBRE 2004 3
TrGen define el concepto de flujo para definir una que sigan con fidelidad los patrones definidos
fuente de tráfico sintético. Cada flujo tiene un origen, explícitamente en las mismas, al menos en lo que se
una distribución espacial, una distribución temporal y refiere a la distribución espacial, a las relaciones
una distribución de tamaño. Cada origen puede tener causales, y a los tamaños de los paquetes.
varios flujos distintos, permitiendo modelar el Para obtener ficheros de trazas con las que alimentar a
comportamiento del tráfico con mayor precisión. Las TrGen empleamos una versión modificada de MPICH,
distribuciones son parametrizables, y la colección de una de las implementaciones más populares de MPI [4].
distribuciones disponibles es extensible. En el prototipo MPICH incorpora un mecanismo sencillo de obtención
actual están disponibles las siguientes: de trazas de aplicaciones en ejecución, aunque estas
trazas no son útiles para nuestros propósitos: las
Temporales: operaciones colectivas aparecen como tales en el fichero
- Bernouilli de trazas, sin reflejar el intercambio real de mensajes
- Ráfagas constantes que, en una red, representa dicha operación (suponiendo
- Markov (con distintas variantes) redes sin soporte nativo para operaciones colectivas).
Espaciales: Internamente, MPICH implementa las operaciones
- Uniforme colectivas sobre operaciones punto a punto cuando no
- Distribuida hay alternativas mejores. Nuestra modificación ha
- Zipf consistido en hacer visibles esas operaciones, y
- Hotspot registrarlas en el fichero de trazas en lugar de la
- Constante: transpuesta, mariposa, barajado, operación colectiva correspondiente.
inversa, complementaria, literal, etc. Los ficheros de trazas necesitan cierto preproceso para
De tamaño del paquete: poder ser empleados con TrGen. Este preproceso
- Constante consiste en una selección de los campos relevantes (tipo
- Uniforme de evento, nodo en que ocurrió, nodo que lo provocó y
- Polinomial tamaño del evento) y un cambio de formato. Sería
posible emplear otros métodos para obtener ficheros de
Estas distribuciones son frecuentes en la literatura. Para trazas utilizables por TrGen, por ejemplo, tomando
una descripción más detallada, ver [2,3]. como punto de partida las capturas de tráfico obtenidas
por un sniffer en una red Ethernet, y aplicando el
B. Trazas preproceso oportuno.
Aunque es sencillo hacerse una idea de la carga que es Parte del preproceso realizado con las trazas es la
capaz de soportar la red con patrones de tráfico sintético, eliminación de los timestamps de los eventos que las
los resultados obtenidos pueden ser poco realistas: las forman, manteniendo el orden temporal y las relaciones
aplicaciones no muestran, normalmente, patrones de causales. Así sometemos a la red simulada a la máxima
comunicación aleatorios, por lo que es difícil modelarlas “presión” posible, como si fuese utilizada por unos
con tales patrones. Los procesos se comunican entre sí procesadores infinitamente rápidos, y comprobamos de
en un orden determinado y momento preciso. Además, esta manera hasta qué punto la red es un cuello de
el envío de un mensaje suele producirse como botella para la ejecución de la aplicación. Una futura
consecuencia directa de la recepción de otro. El patrón ampliación de TrGen consistirá en tener en cuenta la
de comunicación viene definido, pues, por una relación velocidad de procesamiento de los nodos, escalando la
de causalidad entre los envíos y recepciones de mensajes separación temporal de los eventos en función de esta
entre los nodos. Con TrGen es posible emplear trazas de velocidad.
ejecución de aplicaciones reales para generar tráficos
Fichero de
trazas
E 15 R2
R 15
E1
NODO 0 … R0
E0
NODO 15
R1 Recepciones E 15 R1 Recepciones R2
Envíos
Notificaciones
Red de interconexión
Fig. 2. Estructuras de datos utilizadas para mantener la causalidad en el tráfico basado en trazas. El nodo 0 está a la espera de la recepción de un
paquete del nodo 1, al que luego responderá. Después esperará a recibir un paquete del nodo 15, paquete que ya ha sido recibido, puesto que se
encuentra en la lista de notificaciones pendientes.
4 RIDRUEJO, GONZÁLEZ Y MIGUEL-ALONSO: TRGEN: SISTEMA DE GENERACIÓN DE TRÁFICO...
La figura 2 nos permite hacernos una idea de cómo TrGen al PC huésped indicado. Todo esto puede verse
funciona el tráfico basado en trazas. Cada nodo de la en la Figura 3.
aplicación simulada tiene una cola de eventos. La cola
se alimenta a partir del fichero de trazas e inyecta un N o ti
Huésped fic a
paquete en la red cuado en su cabecera hay un envío. Si (nodo de
c
ió n
d e ll
e ga
cómputo) Iny e men s
en la cabecera hay una recepción, comprobará si dicha da
n
de
ció
c ció a je s
n de
iz a
recepción ha sido ya notificada y, si no es así, esperará a me
n
n sa
ro
je s
nc
. Simulador
que la red la notifique. Cada nodo tiene una lista de SIMICS
Si
. TrGen API
Central je s de redes
. e nsa
notificaciones pendientes. Estas notificaciones se (nodo de
em
Si
e
nd ad
nc
sincronización)
ció ad
ro
ec eg
corresponden a eventos de recepción que aún no deben
ni
Iny e ll
za
d
ión
ci
ac jes
ón
ocurrir y se guardan en la lista hasta que llegue su turno. Huésped
(nodo de No
tific
me
nsa
IV. TRÁFICO CONDUCIDO POR LA EJECUCIÓN DE Fig. 3. Esquema de conexión entre los nodos de cómputo (huéspedes,
APLICACIONES simulados por una instancia de SIMICS), el coordinador SIMICS
Central, TrGen y el simulador de la red de interconexión.
red. Desde el punto de vista de la máquina huésped, se Del mismo modo, este módulo se encarga de recoger
trata de un segundo adaptador Ethernet. Desde nuestro los mensajes que le llegan desde TrGen e inyectarlos en
punto de vista, será la interfaz con TrGen. El primer el huésped correspondiente mediante la escritura en su
adaptador Ethernet (ISA) se mantiene, conectado a memoria de dispositivo PCI. También realizará
SIMICS Central, para conservar la sincronización entre notificaciones en forma de interrupciones. Ante una
elementos. interrupción, el driver le da servicio y se encarga de
Cada vez que la aplicación paralela ejecutándose en un mandar el mensaje recibido a la aplicación que lo está
huésped envía un mensaje MPI a otro proceso (residente esperando.
en otro nodo de cómputo), lo hace a través de su Como se puede comprobar, las piezas clave en nuestro
adaptador de red (el PCI). El mensaje llega primero al diseño son (1) el módulo SIMICS que simula un
driver de ese adaptador, que se encuentra en el espacio adaptador de red conectada a un bus PCI, y (2) el driver,
de núcleo del sistema simulado. Dicho driver ha sido para el kernel de Linux, que interactúa con ese
creado por nosotros, basándonos en [1] y [8], y se dispositivo.
encarga de leer/escribir en el adaptador de red PCI La comunicación entre los dispositivos PCI simulados
simulado, que está implementado como un módulo y TrGen puede realizarse de múltiples formas (por
creado en C e incorporado al sistema SIMICS mediante ejemplo, mediante una serie de conexiones TCP). TrGen
su sistema de extensión y creación de nuevos módulos y actúa como puente con el simulador de red de
dispositivos. interconexión elegido, que será el que incorpore todos
Los mensajes generados por la aplicación se envían al los mecanismos propios de una red de interconexión
exterior mediante escrituras realizadas por el driver en para un cluster o un multicomputador.
los registros y en la memoria del adaptador PCI La Figura 4 representa todo el intercambio de
simulado. Tales escrituras en realidad son interceptadas mensajes (simulados y reales) implicados en una
por el módulo creado en SIMICS, que es en última comunicación entre máquinas simuladas.
instancia el punto de contacto con TrGen.
Aplicación paralela
Módulo SIMICS
SIMICS
del adaptador de
sincronización
red PCI Simulador de
TrGen API TrGen
redes
Comunicación TCP/IP
Fig. 4. Estructura del paso de los mensajes creados, desde su creación por la aplicación paralela, ejecutada en el nodo de cómputo simulado
mediante SIMICS, hasta su llegada al host que simula la red de interconexión.