Universidad Politécnica de Valencia

Anuncio
Universidad Politécnica de Valencia
Departamento de Informática de Sistemas y Computadores
TESIS DOCTORAL
Técnicas para el aprovechamiento
de redes de computadores heterogéneos
en la ejecución paralela
de modelos de simulación por eventos discretos
Presentada por:
D. Ángel F. Perles Ivars
Dirigida por:
Dr. D. Juan José Serrano Martín
Valencia, julio de 2003
A la meua família
A la meua dona Alícia,
per donar-me força en els pitjors moments
i estar ahí quan l’he necessitada.
Als meus fills Ana, Jorge, Miguel Ángel i Pablo,
que han donat un sentit nou a la meua vida,
fent-me entendre què és el primer
i vore les coses d’altra manera.
Als meus pares,
que m’han proporcionat el camí que m’ha portat fins ací.
Als pares d’Alícia,
perqué m’han fet sentir com un fill.
A Juanjo,
que m’ha donat aquesta oportunitat,
un treball apassionant.
A Maria Pilar,
que m’ha ajudat tant amb l’anglés.
Als companys,
que han fet més agradable el meu treball,
Alberto, Manolo, María Engracia, Miquel, Toni i Ximo.
A José Carlos, Toni, Xavi i Rafa,
que han revisat la meua feina
i m’han permés millorar el text final de la tesi amb els seus consells.
Resumen
La simulación por eventos discretos es una herramienta fundamental para el diseño y desarrollo de todo tipo de sistemas informáticos. Sin embargo, los nuevos sistemas son cada vez más complejos, lo que provoca que los modelos de simulación
resultantes sean más costosos de resolver, requiriendo más potencia de computación
para su evaluación y provocando largos tiempos de espera de los resultados.
Esta tesis ofrece una solución para disminuir los tiempos de ejecución de modelos
de simulación por eventos discretos en los que se pretenda hacer una estimación
puntual de una variable estadística de salida del modelo en régimen permanente.
Se aportan las técnicas que permiten aplicar el paralelismo a los modelos de simulación mediante la ejecución concurrente de réplicas de dichos modelos. Para la
ejecución de las réplicas se aprovecha la gran cantidad de computadores heterogéneos de Universidades y centros de investigación que están desocupados gran parte
del tiempo.
Se ha desarrollado el entorno paralelo capaz de gestionar este conjunto de computadores heterogéneos y se han diseñado y probado las técnicas que permiten adaptar fácilmente un modelo escrito en cualquier lenguaje de simulación para que pueda
emplearse en el entorno.
Para el análisis de los datos de salida de las simulaciones se ha diseñado un nuevo
analizador paralelo basado en el método estadístico de las réplicas independientes. El
diseño de la gestión de las réplicas permite sacar el máximo partido a los computadores, reduciendo considerablemente el tiempo de ejecución de los modelos.
Para aumentar la calidad estadística de los datos de salida se han propuesto y probado nuevos criterios de parada, que producen coberturas estadísticas superiores a
los criterios clásicos. Además, el desarrollo de un método de reducción del efecto del
transitorio inicial de las simulaciones de régimen permanente permite incrementar
más esta calidad sin incrementar el coste de la simulación.
Resum
La simulació per events discrets és una eina fonamental per al disseny i
desenvolupament de tot tipus de sistemes informàtics. Però, els nous sistemes són
cada vegada més complexos, fet que ocasiona que els models siguen més costosos de
resoldre, requerint més potència de computació per tal d’avaluar-los i provocant
llargs temps d’espera pels resultats.
Aquesta tesi ofereix una solució per a disminuir els temps d’execució de models
de simulació per events discrets en els quals es pretenga fer una estimació puntual
d’una variable estadística d’eixida del model en règim permanent.
Aquest treball aporta les tècniques que permeten aplicar paral·lelisme als models
de simulació mitjançant l’execució concurrent de rèpliques dels models. Per a la
execució de les rèpliques s’aprofita la gran quantitat d’ordinadors heterogenis
d’universitats i centres d’investigació que estan lliures gran part del temps.
S’ha desenvolupat l’entorn paral·lel capaç de gestionar aquest conjunt
d’ordinadors heterogenis i s’han dissenyat i provat les tècniques que permeten
adaptar fàcilment un model escrit en qualsevol llenguatge de simulació perquè puga
utilitzar-se dins l’entorn.
Per a l’anàlisi de les dades d’eixida de les simulacions s’ha dissenyat un nou
analitzador paral·lel basat en el mètode estadístic de les rèpliques independents. El
disseny de la gestió de les rèpliques permet traure el màxim profit als ordinadors,
reduint molt el temps d’execució dels models.
Per augmentar la qualitat estadística de les dades d’eixida s’han proposat i provat
nous criteris de parada de la simulació, que produeixen millors cobertures
estadístiques que els criteris clàssics. A més a més, el desenvolupament d’un métode
de reducció de l’efecte del transistori inicial de les simulacions de règim permanent
permet incrementar més aquesta qualitat sense pujar el cost de la simulació.
Abstract
Discrete-event simulation is an important tool for the design and development of
computer based systems. New systems based on computers are complex, so equivalent simulation models are big and they require a lot of computer time for its evaluation, causing long execution time.
This work offers a solution to diminish the execution time of the discrete–event
based models where the pourpose is to get a steady-state point estimator of an output
variable of the model.
In this work we provide methods to apply parallel techniques to simulation models. This is based on the execution of concurrent replications of such models. To run
the replications we benefit of lots of idle computers available at desk and laboratories
of universities and research centers.
A parallel environment has been developed to manage this set of heterogeneous
computers, and the techniques for adapting any simulation program for the environment have been designed and successfully tested.
In order to analyse the output data of the simulations, it has been designed a parallel analizator based on the statistical output analysis method of independent replications. The design of the management of the concurrent replications lets to get the
maximum benefit of computers, reducing considerably the execution time of the
models.
To increase the statistical quality of the output analysis method they have been
proposed and tested new stopping criteria. These criteria produce better coverage
results than the classical ones. Moreover, the design of a new method to reduce initial transient’s effect of the steady-state simulations lets to increase the statistical
quality of the parallel analizator without increasing the execution cost.
Índice
1. Introducción ............................................................................................................1
1.1 Motivación .........................................................................................................1
1.2 Objetivos ............................................................................................................5
1.3 Organización de la tesis .....................................................................................5
2. Estudio de las técnicas de aceleración de simulaciones por eventos discretos ..7
2.1 Bases de la simulación por eventos discretos ....................................................7
2.1.1 Qué es la simulación por eventos discretos................................................8
2.1.2 La entrada del modelo: números aleatorios..............................................11
2.1.3 La salida del modelo: variables aleatorias................................................15
2.1.4 Intervalos de confianza.............................................................................17
2.1.5 El efecto de la normalidad........................................................................19
2.1.6 Métodos para el análisis de la salida en régimen permanente..................19
2.1.6.1 El problema del arranque (warm-up)................................................20
2.1.6.2 Réplicas ............................................................................................22
2.1.6.3 Lotes (batch-means)..........................................................................27
2.1.6.4 Regeneración ....................................................................................29
2.1.6.5 Autorregresión ..................................................................................30
2.1.6.6 Espectral ...........................................................................................31
2.1.6.7 Series temporales estandarizadas......................................................33
2.1.7 Comentarios a los métodos de análisis de la salida..................................34
2.2 Técnicas de reducción de la varianza para acelerar simulaciones ...................36
2.2.1 Números aleatorios comunes....................................................................37
2.2.2 Variables antitéticas .................................................................................40
2.3 Técnicas paralelas para acelerar simulaciones .................................................41
2.3.1 Introducción..............................................................................................41
2.3.2 Descomposición de modelos de simulación.............................................43
2.3.2.1 Entornos disponibles.........................................................................49
2.3.2.2 Crítica a la simulación paralela por eventos .....................................50
2.3.3 Réplicas paralelas de modelos de simulación ..........................................54
2.3.3.1 Réplicas independientes terminantes................................................55
2.3.3.2 Réplicas independientes en régimen permanente .............................55
xiv
2.3.3.3 Regeneración ....................................................................................61
2.3.3.4 Lotes (batch-means) .........................................................................61
2.3.3.5 Espectral ........................................................................................... 61
2.3.3.6 Entornos disponibles ........................................................................62
2.3.3.7 Crítica a los métodos basados en réplicas paralelas .........................64
2.4 Conclusiones....................................................................................................66
3. Propuesta de un entorno paralelo para la ejecución de simulaciones .............71
3.1 Introducción .....................................................................................................72
3.2 Criterios de diseño del entorno paralelo de simulación...................................73
3.3 Elección de PVM como entorno de programación distribuida........................76
3.4 Propuesta de entorno de simulación paralela basada en réplicas..................... 82
3.4.1 Esquema de CSX......................................................................................83
3.4.2 Planteamiento de la interacción entre procesos distribuidos mediante
mensajes ............................................................................................................ 85
3.4.3 Instrumentación de los programas de simulación ....................................87
3.4.3.1 Resultados de las pruebas de sobrecarga de los modelos instrumentados..............................................................................................................92
3.4.4 Reparto de la carga...................................................................................95
3.4.4.1 Medida del potencial de simulación de una máquina.......................96
3.4.4.2 Medida de la velocidad de simulación de un modelo ......................97
3.4.4.3 Consideraciones sobre el efecto de los canales aleatorios..............100
3.4.5 La interfaz de usuario.............................................................................101
3.4.5.1 Prototipo de interfaz visual para Windows ....................................102
3.5 Introducción a la instrumentación de modelos SMPL y CSIM ..................... 110
3.5.1 Funciones comunes de instrumentación................................................. 110
3.5.2 Instrumentación específica para SMPL .................................................113
3.5.3 Instrumentación específica para CSIM ..................................................114
3.5.4 Ejemplo de modelo CSIM......................................................................114
3.6 Ejemplos de modelos instrumentados............................................................115
3.6.1 Modelo SMPL de una red Ethernet........................................................115
3.6.2 Plan factorial 23 equilibrado aplicado a un modelo SMPL de servidor
central..............................................................................................................117
3.6.3 Modelo CSIM de una cola M/M/3//k.....................................................125
3.6.4 Modelo CSIM de un servidor central mixto ..........................................127
3.7 Conclusiones..................................................................................................132
4. Desarrollo de un analizador paralelo basado en réplicas independientes.....135
4.1 Criterio de selección del método y propuesta básica de funcionamiento ......136
4.2 Propuesta de algoritmos para gestionar la ejecución de las réplicas independientes ..................................................................................................................137
4.3 Criterios de parada. Propuestas y su análisis .................................................144
4.3.1 Criterio 1: Comprobación de la precisión relativa del intervalo de confianza ...............................................................................................................145
4.3.2 Criterio 2: Comprobación del error relativo y su decrecimiento ........... 145
4.3.3 Criterio 3: Comprobación del error relativo y la pendiente de la media 146
4.3.4 Criterio 4: Combinación de los criterios 2 y 3 ....................................... 147
Índice
xv
4.3.5 Evaluación de los criterios .....................................................................148
4.3.5.1 Metodología....................................................................................148
4.3.5.2 Modelos con solución analítica ......................................................151
4.3.5.3 Resultados de cobertura y rendimiento en el modelo M/M/1 ........157
4.3.5.4 Resultados de cobertura y rendimiento en el modelo del servidor
central abierto .............................................................................................162
4.3.5.5 Resultados de cobertura y rendimiento en el modelo M/M/3//K ...166
4.3.5.6 Resultados de cobertura y rendimiento en el modelo del servidor
central cerrado ............................................................................................171
4.4 Técnica para la reducción del efecto del transitorio inicial............................178
4.4.1 Implementación ......................................................................................181
4.4.2 Resultados de cobertura y rendimiento ..................................................185
4.5 Técnica para el ajuste automático del punto de comprobación basado en tiempo simulado ..........................................................................................................190
4.6 Conclusiones ..................................................................................................191
5. Experimentos aplicando CSX a un modelo de red de almacenamiento ........197
5.1 El modelo de simulación SAN.......................................................................198
5.2 Estrategias de simulación...............................................................................200
5.2.1 Método A: ejecución secuencial.............................................................200
5.2.2 Método B: ejecución paralela.................................................................201
5.2.3 Método C: ejecución paralela ajustando el número de réplicas independientes..............................................................................................................202
5.2.4 Método D: ejecución paralela ajustando el número de réplicas y reduciendo el efecto del transitorio inicial .............................................................203
5.3 Resultados experimentales .............................................................................204
5.3.1 Método A: ejecución secuencial.............................................................205
5.3.2 Método B: ejecución paralela.................................................................205
5.3.3 Método C: ejecución paralela ajustando el número de réplicas independientes..............................................................................................................207
5.3.4 Método D: ejecución paralela ajustando el número de réplicas y reduciendo el efecto del transitorio inicial .............................................................209
5.4 Conclusiones ..................................................................................................211
6. Conclusiones ........................................................................................................213
6.1 Conclusiones generales y contribuciones.......................................................213
6.2 Publicaciones..................................................................................................216
6.2 Líneas de investigación abiertas.....................................................................217
Bibliografía ..............................................................................................................221
1. Introducción
1
Introducción
1.1 Motivación
Nadie discute hoy en día que la simulación es una herramienta fundamental en el
desarrollo de nuevos sistemas y en la sintonización y mejora de los existentes. Desde
el punto de vista de este trabajo, se entiende como simulación la explotación de un
modelo de un sistema real o ficticio construido como un programa que deberá ser
“ejecutado” en un computador.
Dado un problema a resolver, es necesario obtener un modelo de éste para poder
realizar la simulación, y así poder estudiar su comportamiento. El desarrollo de este
modelo puede realizarse desde distintos puntos de vista y enfoques matemáticos,
dependiendo mucho de cuáles sean las características a evaluar.
Para el desarrollo del modelo se pueden utilizar distintas aproximaciones que se
resuelven de manera diferente. Por ejemplo, se puede modelar un sistema utilizando
formalismos como redes de Petri, cadenas de Markov, redes de colas, métodos de
Monte-Carlo, elementos finitos, simulación discreta por eventos, sistemas de ecuaciones diferenciales, etc. Cada formalismo “ve” el sistema de forma determinada,
pero distintos formalismos pueden servir para obtener el mismo resultado e incluso
algunos formalismos pueden transformase automáticamente en otros.
Uno de los formalismos para la especificación y resolución de modelos es la simulación por eventos discretos, basada en técnicas numéricas. Un modelo por eventos discreto especifica la respuesta del sistema a determinados eventos que se producen en instantes definidos en el tiempo. La ejecución del modelo consiste en hacer
evolucionar el sistema en el tiempo mediante el procesamiento de los eventos que se
2
Introducción
van produciendo en instantes determinados de tiempo, y que harán que dicho tiempo
evolucione.
Los objetivos de este tipo de modelos pueden ser diferentes, en concreto:
•
Comprender el comportamiento de un sistema.
•
Obtener estimaciones medias de rendimiento.
•
Guiar en la selección de parámetros de diseño y/o estrategias de operación.
•
Ajustar un modelo sencillo de rendimiento a las medidas del sistema.
Los objetivos tienen un impacto en cómo se debe ejecutar la simulación. Por
ejemplo, si el objetivo es comprender el comportamiento del sistema, entonces se
podría desear una salida de presentación agradable y velocidad de simulación controlable con condiciones y parámetros iniciales ajustables. Si la simulación se hace
para hacer estimaciones de variables de salida, entonces se deben proveer intervalos
de confianza de determinada precisión, y la simulación se debe ejecutar tan rápido
como sea posible. En la selección de parámetros, la simulación se puede ver como
parte de un bucle de optimización. La información a ser obtenida por la simulación
puede consistir en estimaciones aleatorias correspondientes a los parámetros dados y
ser usados en algún método de aproximación estocástico, o consistir también de gradientes de estimaciones y ser usados en algoritmos de gradientes estocásticos. Las
propiedades estadísticas han de ser comparadas antes de seleccionar la metodología
apropiada. En el caso del ajuste de un modelo, se necesitará ejecutar una cantidad de
simulaciones con diferentes parámetros y las variables de salida de interés y sus propiedades estadísticas también necesitarán ser investigadas.
Los eventos que ocurren en el sistema modelado pueden tener su origen en una
“traza” tomada de un sistema real o pueden generarse probabilísticamente. En el segundo caso, estamos ante un problema que necesita de herramientas estadísticas para
su análisis, siendo un ingrediente fundamental un buen generador de números pseudoaleatorios para la generación probabilística de los eventos [L’Ecuyer 1999].
Suponiendo que el modelo de simulación por eventos discretos es “alimentado”
con un generador de números aleatorios, la salida de dicho modelo será una respuesta
a la entrada, produciéndose muestras estadísticas de una población desconocida. En
el presente trabajo interesa estimar el valor medio de una muestra E[X] (o esperanza
matemática) de una variable aleatoria de salida del modelo, es decir, hacer lo que se
denomina una estimación puntual. Sin embargo, la única manera de obtener dicha
Motivación
3
esperanza es teniendo una muestra de infinitos valores, lo cual no es posible con un
tiempo limitado de computación. Como máximo se podrá ofrecer una estimación
X de la verdadera esperanza E[X] dentro de un intervalo de confianza, es decir, dentro de un intervalo ( X − H , X + H ) donde hay una determinada probabilidad normalmente alta de que E[X] esté dentro de ese rango.
La estimación de la esperanza y de los intervalos de confianza no es un problema
estadístico totalmente resuelto. Hay diferentes maneras de resolverlo, cada una con
sus ventajas e inconvenientes, pero siempre se tendrá una mayor o menor duda sobre
la validez del resultado (ver [Banks 1996], [Law y Kelton 2000]).
Los modelos de simulación por eventos discretos son ampliamente utilizados en
muchas disciplinas (economía, modelos sociales, control de tráfico, electrónica, informática, etc.). Todo aquello que pueda ser representado mediante sucesos que tienen lugar en instantes concretos en el tiempo puede ser modelado utilizando esta
técnica. Un área donde se aplica con profusión es el diseño y evaluación de sistemas
hardware y software, por lo que es y será una herramienta imprescindible en la investigación que se realiza en el Departamento de Informática de Sistemas y Computadores (DISCA) de la Universidad Politécnica de Valencia.
En el DISCA, el grupo de investigación de Sistemas Tolerantes a Fallos está aplicando esta técnica de modelado al diseño y evaluación de redes de área local industriales, sistemas de tiempo real, etc. Lo mismo ocurre en otros grupos de investigación, con modelos de redes de almacenamiento, redes de comunicación para multimedia, sistemas de almacenamiento en disco, etc.
Como se ha dicho, una vez desarrollado el modelo hay que ejecutarlo, y para ello
se suele recurrir a un computador, que invertirá un tiempo en su resolución. La resolución consistirá en generar una determinada cantidad de muestras que serán tratadas
estadísticamente, por lo que cuanto más complejo y detallado sea el modelo más
tiempo de computación será necesario invertir para generar suficientes muestras.
La complejidad y detalle de los modelos de simulación que se desarrollan en los
grupos de investigación del Departamento obligan al uso de potentes computadores
para su resolución en un tiempo relativamente razonable. Los investigadores suelen
competir por la última y más potente máquina para “resolver” su modelo de simulación, quedando rápidamente saturado el recurso y quedando muchas veces en desuso
recursos menos potentes. Cada grupo de investigación resuelve “como puede” el
problema, muchas veces a título individual por parte de cada investigador.
4
Introducción
Queda patente que la simulación discreta por eventos suele requerir gran cantidad
de recursos computacionales, por lo que dicho recurso es de primera importancia en
este contexto.
Por otra parte, en las Universidades y Centros de Investigación hay una gran cantidad de computadores de pequeña y mediana potencia, de arquitecturas y sistemas
operativos diferentes que están desocupados la mayor parte del tiempo. La cuestión
es: ¿se podrían usar esos computadores, de forma sencilla, para acelerar la obtención
de resultados de simulaciones discretas por eventos?.
La mayoría de los computadores de los entornos nombrados están conectados a
redes de bajas o medias prestaciones, por lo que parece factible que cooperen de alguna manera para que se puedan aplicar técnicas de simulación en paralelo para acelerar las simulaciones.
Esta idea no es nueva y el aprovechamiento de este enorme potencial de cálculo
es el objetivo de muchos trabajos de investigación. En la actualidad se está investigando mucho en el campo de las redes de estaciones de trabajo (NOW, network of
workstations) y han aparecido paquetes software que intentan aprovechar el enorme
potencial de cálculo de un conjunto de máquinas para ejecutar de forma sencilla aplicaciones distribuidas. Ejemplos ampliamente establecidos son PVM [Geist et al.
1994] y MPI [MPI 1994].
El propósito de este trabajo es encontrar una forma de acelerar la obtención de resultados de modelos de simulación discretos por eventos de manera que los investigadores puedan acortar los tiempos de respuesta de sus modelos. Las carácteristicas a
conseguir son:
•
Los resultados de las simulaciones deben ofrecer las máximas garantías estadísticas en cuanto a cobertura de las medias.
•
Los modelos se ejecutarán usando técnicas paralelas para poder acelerarlos.
•
La técnica debe ser aplicable a cualquier simulador que se emplee en el grupo
de trabajo.
•
El uso del entorno debe ser sencillo y no exigir una curva de aprendizaje
complicada.
Objetivos
5
1.2 Objetivos
Para alcanzar el propósito descrito en el apartado de motivaciones y ser una contribución al mundo de la simulación discreta por eventos se ha seguido el siguiente
plan de trabajo:
1. Estudio del estado del arte de las técnicas de análisis estadístico de la salida
de modelos de simulación para conocer cuáles presentan mejor comportamiento y/o son más susceptibles de aplicarse en paralelo.
2. Estudio del estado del arte de las distintas opciones disponibles para acelerar
las simulaciones discretas por eventos utilizando técnicas de paralelismo.
3. A partir de las conclusiones obtenidas en los puntos anteriores y las características definidas en el apartado de motivación, plantear la estructura y comportamiento del entorno paralelo para la ejecución de los modelo de simulación.
4. Desarrollar el conjunto mínimo de módulos que permitan comprobar el rendimiento de los aspectos más críticos de la manipulación de los modelos de
simulación.
5. Desarrollo en el entorno de la técnica de análisis de la salida con más opciones de robustez estadística y posibilidades de buen comportamiento en paralelo.
6. Análisis de resultados de cobertura estadística y aceleración sobre una batería
sencilla de modelos de simulación.
7. Comprobación de la superioridad de las técnicas desarrolladas con respecto a
las disponibles sobre un modelo de gran complejidad.
1.3 Organización de la tesis
En el capítulo 2 se introduce la teoría de la simulación por eventos discretos y se
detallan las técnicas estadísticas para el análisis de la salida de los modelos de simulación. También se describen las técnicas que permiten acelerar las simulaciones;
unas basadas en propiedades estadísticas y otras en paralelismo. En las concusiones
del capítulo se explica el camino elegido para el desarrollo de la investigación.
6
Introducción
El capítulo 3 describe las técnicas desarrolladas para obtener un entorno paralelo
eficiente donde ejecutar simulaciones por el método de las réplicas paralelas. El entorno propuesto permite emplear estaciones heterogéneas conectadas mediante una
red de comunicaciones estándar para crear una “máquina virtual de simulación” donde ejecutar los experimentos. Se explica como se hace la adaptación de los modelos
de simulación escritos en cualquier lenguaje de simulación habituales. Esta adaptación es sencilla, por lo que fácil aprovechar la propuesta.
El capítulo 4 describe el desarrollo de un analizador paralelo basado en el método
de las réplicas independientes. Se describe un mecanismo de gestión asíncrona de las
comunicaciones de las réplicas que permite obtener un gran rendimiento a la propuesta. Se describen también nuevos criterios de parada de la simulación y una técnica para la reducción del efecto del transitorio inicial.
El capítulo 5 muestra los resultados de rendimiento sobre un modelo complejo de
red de almacenamiento (SAN). Se proponen distintas estrategias de gestión de las
réplicas paralelas y se comparan con estrategias clásicas secuenciales empleando el
método de análisis de lotes (batch-means).
Finalmente, el capítulo 6 ofrece las conclusiones generales y los caminos futuros
abiertos.
2. Estudio de las técnicas de aceleración de simulaciones por eventos discretos
2
Estudio de las técnicas de
aceleración de simulaciones
por eventos discretos
El modelado de sistemas por eventos discretos y su simulación es un tema amplio
debido a que hay distintas formas de resolución en función de los objetivos del estudio que se pretenda hacer. El propósito de este capítulo es presentar los aspectos básicos de la simulación por eventos discretos en el contexto de este trabajo.
Se presentan también las técnicas más destacables para permitir acelerar la obtención de resultados de las simulaciones. En el apartado 2.2 se presentan aquellas técnicas que se basan en la aplicación de principios estadísticos, mientras que en el
apartado 2.3 se presentan aquellas que emplean diferentes estrategias de paralelismo
usando simultáneamente varios procesadores.
Como conclusión del capítulo, se elige la estrategia a desarrollar para alcanzar el
objetivo básico de la tesis, que es reducir los tiempos de ejecución de los modelos de
simulación por eventos discretos que se desarrollan en el grupo de investigación.
Este capítulo es un extracto de [Perles 1994] y [Perles 1997].
2.1
Bases de la simulación por eventos discretos
Este apartado describe los conceptos básicos de la simulación por eventos discretos, destacando los aspectos relacionados con el análisis estadísticos de las variables de salida de los modelos.
8
Estudio de las técnicas de aceleración de simulaciones por eventos discretos
2.1.1 Qué es la simulación por eventos discretos
Simular consiste en imitar la evolución temporal de la operación de un proceso o
de un sistema real. El comportamiento del sistema y cómo evoluciona se estudia desarrollando un modelo. Este modelo se construye a partir de asunciones sobre el sistema expresadas como relaciones matemáticas, lógicas o simbólicas entre las entidades del sistema. Una vez desarrollado y validado, un modelo se puede usar para investigar una gran cantidad de cuestiones sobre qué ocurriría en un sistema real si se
hiciese esto o aquello, o también se puede utilizar para predecir el rendimiento de
sistemas no desarrollados físicamente durante las etapas de diseño.
En algunos casos, un modelo puede ser lo suficientemente simple como para que
pueda ser resuelto mediante métodos matemáticos, lo que proporciona una solución
denominada analítica. Cuando no sea posible aplicar una solución analítica es necesario recurrir a métodos numéricos que, básicamente, imitan la evolución del estado
del sistema en el tiempo. Para ello es necesario construir un modelo de simulación
que se deberá ejecutar. La ejecución de estos modelos se refiere a intentar imitar situaciones inferidas mediante una historia artificial. Durante la ejecución del modelo
se observa su comportamiento para analizarlo y estimar medidas de rendimiento del
sistema.
Exclusivamente desde el punto de vista del modelado de sistemas, éstos se pueden clasificar en discretos o continuos (ver Figura 2-1). Un sistema continuo es aquel
en el que las variables que representan el estado evolucionan continuamente en el
tiempo. Por ejemplo, la temperatura de un líquido o el caudal de un río (Figura 2-1).
Un sistema discreto es aquel en el que las variables cambian únicamente en puntos discretos en el tiempo. Por ejemplo, las llamadas telefónicas a un servicio de información del estado de carreteras.
(a)
(b)
Figura 2-1. Una función continua (a) y una discreta (b).
Una de las técnicas para la resolución de este tipo de sistemas es la simulación
por eventos discretos basada en técnicas numéricas. En esta aproximación, los sucesos del modelo tienen lugar en puntos discretos del tiempo, y la “ejecución” cada
Bases de la simulación por eventos discretos
9
suceso provoca la evolución del modelo. La Figura 2-2 muestra una representación
temporal de los eventos del sistema.
eventos
0
1
2
3
4
N
2
3,5
6,1
11,8
4.537,1
tiempo simulado
Figura 2-2. Actualización del tiempo simulado guiada por los eventos.
Todo modelo desarrollado para hacer una simulación discreta tiene una estructura
común con independencia de lo que se esté modelando. Entre otras cosas, se tendrá
normalmente:
•
Un planificador de eventos, que contendrá la lista de los eventos esperando a
ocurrir en el futuro y que podrán manipularse de diferentes formas.
•
Un reloj de tiempo simulado y un mecanismo de avance de tiempo. Toda simulación tiene una variable global que representa el tiempo simulado. Para
avanzar el tiempo, una de las aproximaciones, llamada guiada por evento,
consiste en avanzar el tiempo hasta el tiempo de ocurrencia del evento más
cercano en el tiempo.
•
Rutinas de eventos. Cada evento es simulado por la ejecución de un fragmento de código que actualizará el estado del modelo simulado.
Hay dos aproximaciones para realizar la generación de los eventos en el sistema
simulado: se pueden obtener externamente mediante una traza de ejecución del sistema real, dando lugar a una simulación orientada por traza, o probabilísticamente
mediante la generación interna de distribuciones estadísticas producidas a partir de
números aleatorios.
La ventaja de una simulación dirigida mediante una traza es el hecho de que los
sucesos que conducen la entrada del modelo se corresponden con un comportamiento
real, por lo que los resultados que se obtienen de la simulación serán un fiel reflejo
de lo que se obtendría en la realidad. La desventaja está en la dificultad de obtener
trazas de calidad y las necesidades de almacenamiento que puede requerir una traza
moderadamente representativa. Además, puede que el sistema de partida no exista,
por lo que será imposible obtener una traza real.
10
Estudio de las técnicas de aceleración de simulaciones por eventos discretos
La ventaja de dirigir una simulación mediante la generación probabilística de sucesos es la facilidad de esta generación empleando algoritmos matemáticos sencillos,
y la facilidad para probar el efecto de diferentes “cargas” de entrada. La problemática
principal es asegurar que la distribución probabilística de los sucesos sea representativa de las condiciones reales del sistema modelado, pues, normalmente, los resultados serán fieles al comportamiento real si la carga de entrada “sintética” es también
fiel a una carga real. Este método es el más empleado para el desarrollo de sistemas
empleando modelado y simulación, por lo que es el utilizado en este trabajo.
Las entidades que se utilizan para describir y construir la dinámica del sistema
forman tres grupos: actividades, procesos y eventos. Un sistema se ve dinámicamente como una colección de procesos interactuando, con las interacciones controladas y coordinadas por los eventos. Ésta es una forma jerárquica de ver al proceso. Un
sistema se expresa a un nivel dado de abstracción como un conjunto de descripciones
de procesos, cada una especificando las actividades de ese proceso.
Las medidas de rendimiento están relacionadas con la velocidad a la que el sistema realiza el trabajo y, por tanto, tiene al tiempo como una variable independiente.
El trabajo se realiza mediante la ejecución de actividades. Una actividad es la unidad
más pequeña de trabajo desde el punto de vista del sistema. Al ser una unidad de
trabajo, cada actividad tiene un tiempo de ejecución asociado. Un conjunto de actividades relacionadas lógicamente constituyen un proceso.
Los métodos numéricos para la resolución de estos modelos de simulación suelen
requerir la ayuda del computador. Para especificar los modelos se recurre a los lenguajes de simulación, que pueden expresar las anteriores entidades desde distintos
puntos de vista. Así, los lenguajes de simulación se clasifican en orientados a actividad, orientados a eventos y orientados a procesos, basándose en la organización de
los procedimientos escritos en este lenguaje. Un procedimiento de un programa de
simulación puede describir una actividad, un evento o un proceso, dependiendo del
lenguaje que se utilice.
La mayoría de los actuales lenguajes de simulación son orientados a procesos o a
eventos. Los lenguajes orientados a procesos como CSIM [CSIM 1998] se recomiendan para implementar modelos de simulación de gran escala. Los programas
escritos en estos lenguajes se pueden construir como una descripción directa de las
operaciones del sistema. Esta similitud de modelo y sistema permite asegurar con
más facilidad que el modelo seaes una representación válida del sistema.
Bases de la simulación por eventos discretos
11
Los lenguajes de simulación orientados a eventos como SMPL [MacDougall
1987] se acoplan mejor a modelos de pequeña o mediana escala. Estos lenguajes
tienden a imponer una visión global y mononivel del sistema a modelar, propiciando
que se junten acciones de actividades que no tienen relación entre ellas en una única
rutina de eventos. Como consecuencia, el modelo puede perder toda identidad con la
estructura del sistema y hacerse difícil de modificar. Se puede minimizar este problema si se estructura cuidadosamente el modelo, tomando una visión orientada a
procesos del sistema y organizando el modelo de acuerdo a ello.
2.1.2 La entrada del modelo: números aleatorios
Cuando se prescinde del uso de trazas reales, los números aleatorios son el ingrediente fundamental en la simulación por eventos discretos. Así, los lenguajes de simulación generan números aleatorios que se emplean para calcular los tiempos para
los eventos y otras variables aleatorias.
La generación de estos números no es obvia. Paradójicamente, suelen ser adecuados los generadores deterministas, donde se conoce cuál es la secuencia de números
que se va a producir. Ello permitirá comprobar su correcto funcionamiento y aprovechar propiedades estadísticas que permitan resolver el modelo más rápidamente.
Para obtener estos números aleatorios se emplean generadores de números pseudoaleatorios, término que únicamente implica su generación siguiendo un método
recursivo conocido que elimina la verdadera aleatoriedad. Como el método es conocido, el conjunto de números aleatorios podrá ser reproducido. Por contra, cuando se
generan números pseudoaleatorios pueden aparecer serios problemas debidos precisamente a esta falta de verdadera aleatoriedad.
Para comprobar la calidad de un generador de números aleatorios es imprescindible aplicar una serie de pruebas de aleatoriedad que permitan detectar defectos. El
satisfacer estas pruebas no implica que el algoritmo sea adecuado, pero tampoco se
podrá afirmar lo contrario. Muchos de los generadores aleatorios que proveen los
lenguajes de programación pueden ser defectuosos y no cumplir las condiciones de
las pruebas, por lo que es importante recurrir a generadores aleatorios bien diseñados. La importancia de la generación de números aleatorios hace que sea un área de
investigación muy importante y en continuo desarrollo, y que se apliquen y desarrollen nuevas pruebas de aleatoriedad [Knuth 1997, L'Ecuyer and Hellekalek 1998].
12
Estudio de las técnicas de aceleración de simulaciones por eventos discretos
El propósito final del generador será que cada número aleatorio generado Ri, sea
una muestra independiente de una distribución continua uniforme entre 0 y 1, U(0,1).
Normalmente estos números se generan por programa como una parte de la simulación. Hay una gran cantidad de métodos para conseguir esto, y que deberían seguir
las siguientes consideraciones:
• La rutina debe ser rápida. Cálculos individuales pueden ser rápidos, pero una
simulación suele requerir muchos cálculos. Se puede mejorar el coste total de
la simulación empleando un generador aleatorio adecuado.
• La rutina debe ser portable a diferentes computadores y a diferentes lenguajes
de programación.
• La rutina debe tener un ciclo suficientemente largo. La longitud del ciclo o periodo representa la longitud de la secuencia de números aleatorios antes de que
la secuencia previa de números vuelva a repetirse en el mismo orden. La complejidad de los modelos de simulación y la velocidad de los computadores actuales hacen que los generadores con un ciclo corto puedan ser agotados rápidamente.
• Los números aleatorios deben ser reproducibles. Dado un punto de partida (o
condición) debe ser posible generar el mismo conjunto de números aleatorios,
independientemente del sistema que se esté simulando. Por la misma razón,
debe ser fácil especificar diferentes puntos de partida.
• Los números aleatorios generados deben aproximarse lo más posible a las propiedades estadísticas ideales de uniformidad e independencia.
Con las restricciones apuntadas, la mayoría de los generadores usados en la práctica en simulación se fundamentan en recursiones lineales basadas en aritmética modular denominados generadores congruenciales lineales [L'Ecuyer 1990]. Estos generadores producen una secuencia de números enteros, R1, R2, ... entre 0 y m − 1 de
acuerdo con la siguiente relación recursiva,
Ri +1 = (aRi + c) mod m, i = 0, 1, 2, ...
Al valor inicial R0 se le llama semilla, a es la constante multiplicativa y c es el incremento. Si c≠0 se le denomina generador congruencial mixto. Cuando c = 0 se le
conoce por generador congruencial multiplicativo. La elección de los valores para a,
c, m y R0 afecta drásticamente a las propiedades estadísticas y a la longitud del ciclo.
Bases de la simulación por eventos discretos
13
Por ejemplo, el lenguaje de simulación SMPL utiliza un generador congruencial
llamado minimal standard cuya expresión recursiva es,
Ri +1 = 7 5 Ri mod (2 31 − 1)
Como estos generadores producen números enteros entre 0 y m-1, es necesario
convertirlos a la distribución uniforme U(0,1) deseada. Para ello existen diferentes
técnicas, por ejemplo dividir por m o por m + 1 para garantizar que el número generado está en el conjunto [0,1).
En el presente trabajo se ha recurrido a utilizar una familia de generadores más
complejos que, a pesar de su mayor coste computacional, proveen números aleatorios
de mayor calidad que los anteriores. En particular, se ha utilizado una combinación
de dos generadores múltiples recursivos. Un generador múltiple recursivo se define
por la expresión recursiva,
Ri +1 = (a1 Ri + K + a k Ri − k ) mod m
U i +1 = X i +1 / m
donde el módulo m y el orden k son enteros positivos y cada Ri pertenece al conjunto {0, 1, …, m-1}.
Para la realización de los experimentos de este trabajo se ha seleccionado el generador implementado con aritmética flotante denominado MRG32k5a propuesto por
[L'Ecuyer 1999], que emplea la combinación de dos generadores múltiples recursivos
de orden 5, proporcionando un ciclo aproximado de 2319 números. La Figura 2-3 lista
su código en C.
double s10, s11, s12, s13, s14;
double s20, s21, s22, s23, s24;
#define
#define
#define
#define
#define
#define
#define
#define
#define
norm 2.3283163396834613e-10
m1
4294949027.0
m2
4294934327.0
a12
1154721.0
a14
1739991.0
a15n
1108499.0
a21
1776413.0
a23
865203.0
a25n
16410520
double MRG32k5a ()
{
long
k;
double p1, p2;
/* Component 1 */
p1 = a12 * s13 - a15n * s10;
if (p1 > 0.0) p1 -= a14 * m1;
p1 += a14 * s11;
k = p1 / m1;
if (p1 < 0.0) p1 += m1;
p1 -= k * m1;
14
Estudio de las técnicas de aceleración de simulaciones por eventos discretos
s10 = s11;
s11 = s12;
s12 = s13; s13 = s14; s14 = p1;
/* Component 2 */
p2 = a21 * s24 - a25n * s20;
if (p2 > 0.0) p2 -= a23 * m2;
p2 += a23 * s22;
k = p2 / m2;
p2 -= k * m2;
if (p2 < 0.0) p2 += m2;
s20 = s21;
s21 = s22;
s22 = s23; s23 = s24; s24 = p2;
/* Combination */
if (p1 <= p2) return ((p1 - p2 + m1) * norm);
else return ((p1 - p2) * norm);
}
Figura 2-3. Generador MRG32k5a, de orden 5 y 2 componentes.
A partir de la posibilidad de generar números aleatorios de una distribución uniforme entre 0 y 1 se generan las distintas variables aleatorias que precise cada modelo particular, estas variables pueden seguir distintos tipos de distribuciones aleatorias para expresar el comportamiento a representar (como tasas de llegada a una cola,
tiempo de servicio de una petición en un disco, etc). Técnicas adecuadas para esto
son las de la transformada inversa, la convolución y la aceptación-rechazo. Todas
estas técnicas parten de números aleatorios generados uniformemente entre 0 y 1. La
técnica de la transformada inversa es la más directa, pero no siempre la más eficiente
computacionalmente, y suele ser la que emplean la mayoría de los lenguajes de simulación.
Por ejemplo, para una distribución exponencial se tiene que la función de densidad de probabilidad es,
λe − λx ,
f ( x) = 
 0,
x≥0
x<0
y la función de distribución acumulada,
1 − e − λx , x ≥ 0
=
f
(
t
)
dt

∫
x<0
 0,
−∞
x
F ( x) =
donde λ se puede interpretar como el número medio de sucesos por unidad de
tiempo.
Para obtener un valor R, muestra de una distribución exponencial, se partirá de un
valor U de la distribución U(0,1) de manera que se aplique la transformada inversa
X=F-1(U), que en este caso se calcula como,
F ( x) = 1 − e − λx , x ≥ 0
1 − e − λx = U
Bases de la simulación por eventos discretos
R=
−1
λ
15
ln(1 − U )
Las propiedades de la técnica de la transformada inversa hacen que, a pesar de su
mayor coste computacional, haya sido la empleada en este trabajo para generar las
distribuciones aleatorias necesarias en los modelos de simulación empleados.
2.1.3 La salida del modelo: variables aleatorias
En este trabajo, se considera que la entrada de la simulación se dirige generando
muestras obtenidas a partir de distribuciones aleatorias. Como la salida de la simulación será función de estas entradas, los resultados se obtendrán a partir de la aplicación de técnicas estadísticas.
La longitud de la simulación es, en algunos casos, determinada por el problema
en sí. La medida de interés es definida desde el punto de vista del tiempo requerido
para realizar un conjunto específico de actividades o, quizás, en función del número
de actividades necesarias para alcanzar un estado determinado, dando condiciones
iniciales determinadas por el problema. Desde la perspectiva del análisis de la salida,
a este tipo de simulación se le llama simulación de transitorio.
Cuando las condiciones iniciales y la longitud de la simulación son determinados
por el modelador, y la medida de interés es definida en términos de un valor límite
que se obtiene cuando la ejecución tiende a infinito, hablamos de simulaciones de
régimen permanente. Este es el tipo de simulación de interés para el presente trabajo.
En la práctica, la longitud de las simulaciones de régimen permanente es finita y
los resultados son un conjunto de muestras de la distribución de las medias. Uno de
los problemas a resolver es saber lo cerca que están estos valores de las verdaderas
distribuciones de las medias. En estas simulaciones, por definición, los valores de
salida son independientes de las condiciones iniciales.
Como la salida de los modelos de simulación suele ser un problema de análisis
estadístico, hay una serie de medidas estadísticas fundamentales con las que se tratan
dichas salidas, siendo los datos de salida de las simulaciones las muestras de variables aleatorias a tratar.
La mayoría de las veces, la medida de rendimiento que interesa es el valor medio
de una variable aleatoria de salida de la simulación. Esta variable puede representar
un proceso aleatorio de tiempo discreto o de tiempo continuo. Para un proceso de
16
Estudio de las técnicas de aceleración de simulaciones por eventos discretos
tiempo discreto, la simulación produce una secuencia de N muestras X1... XN cuya
media es,
N
X =∑
i =1
Xi
N
(2.1)
Para un proceso de tiempo continuo, la variable de salida X tiene un valor de
muestra Xt en cualquier instante t de tiempo, y la media es,
X=
∫
T
0
X t dt
T
(2.2)
donde T es el período de tiempo simulado. A X se le llama media de la muestra.
Como es una función de variables aleatorias, también es una variable aleatoria. Diferentes secuencias de muestras o períodos de tiempo producen diferentes valores de
X . Sin embargo, cuando el valor de N en las ecuaciones (2.1) o de T en (2.2) se
aproximan a ∞, X converge al valor límite E[X], llamado el valor esperado de X. A
E[X] (o µ) se le considera el valor medio verdadero de la distribución de X.
Los tiempos medios de espera en cola o el tiempo medio de residencia en el sistema son ejemplos de medias de procesos de tiempo discreto. La longitud media de
una cola o la utilización de una facilidad son ejemplos de medias de procesos de
tiempo continuo.
El estimador de la media X se dice que es no sesgado para µ si su valor esperado
es µ. En general se tiene que,
E [X ] = µ + b
donde a b = E [X ] − µ se le denomina sesgo en el estimador puntual X . Lo ideal
será tener estimadores sin sesgo o con un sesgo mínimo en relación con la magnitud
de µ.
Para medir la dispersión de la distribución de X se emplea la varianza. Para un
conjunto de N muestras X1, X2, ..., XN es,
N
s2 = ∑
i =1
(X i − X )2
N −1
Bases de la simulación por eventos discretos
17
donde a s2 se le llama varianza de la muestra. Cuando N se aproxima a ∞, s2 converge al valor límite E[s2]=E[(X-µ)2] (o σ2). Por tanto, X y s2 son la media y la varianza de la muestra, y µ y σ2 son la media y la varianza de la distribución.
2.1.4 Intervalos de confianza
Un problema de las simulaciones de longitud finita es estimar lo cerca que está la
media de la muestra X de la media esperada E[X]; o, también, lo largas que deben
ser las simulaciones para obtener una media de la muestra arbitrariamente cercana a
E[X].
Se puede resolver este problema calculando una medida denominada intervalo de
confianza. Supóngase que se tiene un conjunto de N muestras X1, X2, ... , XN de una
distribución con un valor medio verdadero E[X] desconocido. La media de las
muestras es la expresada por la ecuación (2.1).
Se define 1 − α como la probabilidad de que el valor absoluto de la diferencia
entre la media de la muestra y E[X] sea menor o igual que un valor H. Un intervalo
de confianza para la media se define como,
P[X − H ≤ E [X ] ≤ X + H ] = 1 − α
Al intervalo X − H hasta X + H se le denomina intervalo de confianza, y a 1-α
nivel de significación, cuyos valores típicos son 0,90 ó 0,95. El nivel de significación
1 − α lo proporciona el analista; H se determina por los valores de las muestras, el
número de muestras y el valor de α.
Un intervalo de confianza que contiene el valor esperado E[X] de la distribución
se dice que cubre la media, y a 1 − α se le denomina probabilidad de cobertura nominal o, simplemente, cobertura nominal.
Cuando X1, X2, ... , XN son variables aleatorias independientes de una distribución
normal con media E[X], y la varianza verdadera no se conoce, H se puede calcular
mediante,
H =t
s
α
1− ; N −1
2
N
donde t1−α / 2; N −1 es el α/2 cuartil inferior de la distribución t de Student con N − 1
grados de libertad y s es la desviación típica de la muestra.
18
Estudio de las técnicas de aceleración de simulaciones por eventos discretos
En el caso de que se conozca la varianza se puede aplicar,
H = Zα
2
σ
N
con Z≈Ν(0,1).
La expresión anterior puede aplicarse también para calcular un intervalo de confianza aproximado cuando la población no es normal y la muestra es grande. En el
caso de que σ no sea conocido se puede sustituir por s.
La suposición de normalidad se basa en el teorema central del límite, del cual se
deduce que la media de muestras aleatorias de tamaño N de cualquier distribución
con varianza finita se distribuye normalmente para valores grandes de N.
Esta suposición puede ser problemática en algunas simulaciones. Por ejemplo,
efectos de correlación que pueden falsear los resultados finales. Así, la autocorrelación puede hacer difícil estimar σ 2 ( X ) , dando lugar a 3 posibles efectos:
•
Si las Xi son independientes, la estimación no estará sesgada. Las Xi serán
siempre independientes si se obtienen de simulaciones independientes (ver
método de las réplicas en la sección 2.1.6.2).
•
Si la correlación es principalmente positiva, s2/N está sesgado por debajo como estimador de σ 2 ( X ) . Si se ignorase esta correlación, el intervalo de confianza medido como 100(1-α)% sería demasiado estrecho y su verdadero coeficiente de confianza podría ser menor que 1-α. Si las correlaciones son grandes, podrían dar lugar a una subestimación importante del intervalo de confianza.
•
Si la correlación es principalmente negativa, entonces s2/N está sesgado por
arriba para σ 2 ( X ) . Ello significará que el estimador puntual X debería ser
mayor que lo indicado por su estimador de la varianza, con lo que el intervalo
de confianza calculado tendría menor probabilidad de cometer un error. Este
problema es menos serio que el del caso anterior.
La problemática que implica una correlación positiva es, básicamente, que la estimación de la varianza usando la expresión s2/N puede ser mucho menor que la real,
por lo que es importante utilizar estrategias que lo eviten.
Bases de la simulación por eventos discretos
19
2.1.5 El efecto de la normalidad
El teorema central del límite asegura que la media deN variables aleatorias independientes e idénticamente distribuidas sigue aproximadamente una distribución
normal para valores grandes de N. Las variables de salida de una ejecución individual de una simulación pueden estar idénticamente distribuidas, pero no suelen ser
independientes. Por ello es importante preguntarse cómo la falta de independencia
afecta a esta asunción, cuánto se aproxima N a la normalidad, y cuál es la precisión
alcanzada por los intervalos de confianza.
En cuanto a la primera cuestión, se asume que se cumple la normalidad asintótica
aunque la salida del proceso está correlada, lo cual ha sido demostrado para un cierto
grupo de procesos y para algunos modelos de colas [Law 1983]. En cuanto a la segunda cuestión, los problemas más serios parecen estar en el efecto del calentamiento
inicial en el caso de ejecuciones individuales y en el efecto de la correlación en el
caso de técnicas de lotes (batch-means, etc.). Cuando N es lo suficientemente grande
para solventar esto, también será lo bastante grande como para aportar una normalidad aproximada.
La normalidad de las medias de ejecuciones individuales se puede examinar analíticamente utilizando pruebas como la Shapiro-Wilk o gráficamente. La estimación
de los intervalos para µ basados en la normalidad de la media de la muestra son robustos, es decir, insensibles a moderados desvíos de la normalidad.
2.1.6 Métodos para el análisis de la salida en régimen permanente
En el caso que interesa, la salida de una ejecución del modelo de simulación producirá observaciones X1, X2, …, XN que generalmente son muestras de una serie temporal autocorrelada y cuya medida de rendimiento µ se estima en régimen permanente como,
1
N →∞ N
µ = lim
∑X
i
En el proceso de simulación de régimen permanente hay que preguntarse, tarde o
temprano, cómo debe ser de larga para conseguir una determinada precisión. Es una
cuestión difícil de responder que a menudo se tiende a ignorar. Muchas veces se hacen las simulaciones tan largas como determine la intuición o la paciencia del usua-
20
Estudio de las técnicas de aceleración de simulaciones por eventos discretos
rio, y los valores obtenidos con una sola ejecución son tomados como la verdadera
solución, sin tener en cuenta su precisión.
El propósito de este apartado es revisar las consideraciones y las aproximaciones
para estimar y controlar la precisión de la salida, pues uno o varios de estos métodos
deberán emplearse en este trabajo para realizar el análisis de la salida de los modelos.
Los métodos más extendidos para estimar el intervalo de confianza para la media
de una variable de salida de una simulación son: réplicas, medias batch, regeneración, autorregresión, análisis espectral y series temporales estandarizadas. Los tres
primeros métodos intentan eliminar los efectos de la correlación, mientras que el
cuarto y el quinto intentan estimarla; el último método calcula el intervalo de confianza basándose en propiedades de una transformación de la secuencia de salida de
la simulación.
Las implementaciones para la estimación del intervalo de confianza se pueden
clasificar en procedimientos con tamaño de muestra fija o procedimientos secuenciales. La mayoría de los métodos de análisis se pueden adaptar a cualquiera de los
procedimientos. En un procedimiento de tamaño de muestra fija, se realiza una simulación de longitud total prefijada, y el intervalo de confianza se estima de los resultados una vez completado el experimento, lo cual no permite controlarlo. En un
procedimiento secuencial, se especifica la precisión deseada, y el experimento continúa hasta que se obtiene esta precisión.
Aquí se describen los métodos más extensamente aplicados y aceptados. Sin embargo, al no ser un problema totalmente resuelto, se siguen desarrollando nuevos
métodos de análisis de la salida. Otras contribuciones se describen en [Fox et al.
1991], [Goldsman y Kang 1991], [Howard et al. 1992], [Fishman 2001] y [Alexopoulos y Kim 2002].
2.1.6.1
El problema del arranque (warm-up)
Por conveniencia, es costumbre iniciar la simulación con todos sus componentes
desocupados. Esto es, probablemente, un estado anormal para el sistema, y el modelo
necesita de un cierto tiempo para "calentarse" y superar este transitorio inicial o
warm-up (ver Figura 2-4). Los valores recogidos de las variables de la salida durante
este período pueden no ser representativos del estado estacionario y, si la ejecución
no es lo suficientemente larga, pueden enmascarar el valor de X .
Bases de la simulación por eventos discretos
21
Tres son las aproximaciones para superar este problema:
•
Prevenirlo, estableciendo condiciones iniciales representativas del estado
continuo
•
Eliminar su efecto, borrando los l valores iniciales de una ejecución
•
Reducir su efecto a un nivel insignificante, haciendo la ejecución suficientemente grande
Condiciones del
"régimen permanente"
Tiempo simulado
Condiciones
iniciales
0
l ó Tl
m ó Tm
Figura 2-4. Evolución típica de un estimador puntual en una simulador.
Hay dos dificultades para establecer condiciones iniciales representativas. Primero, no siempre está claro como deben ser definidas, y segundo, puede suponer un
gran esfuerzo de programación establecer estas condiciones (en [Murray y Kelton
1988] y [Kelton 1989] se analizan algunas posibilidades). La forma más fácil de
abordar ambas dificultades sería correr el modelo lo suficiente para alcanzar el estado continuo. Esto sugiere que la segunda aproximación, borrar los valores iniciales,
puede ser más satisfactoria.
La dificultad para la segunda aproximación está en determinar el número de valores a borrar o, equivalentemente, saber cuándo se ha alcanzado el estado estable. Para
una ejecución que genera m muestras y un borrado l, se recogen m-l muestras. Si l es
demasiado pequeño, se reducirá la cobertura, pues la media de la muestra estará sesgada y, por tanto, el intervalo de confianza tendrá menos probabilidad de contener a
E[X]. Si l es mayor de lo necesario, la varianza de la muestra se incrementa, incrementando a su vez el ancho del intervalo de confianza. Esto es claramente indeseable, pero es menos arriesgado que reducir la cobertura. Si no hay forma de asegurar
cuándo se alcanza el estado estable, la mejor táctica será ser generoso tanto con l
como con m.
Existen diferentes técnicas, más o menos generales, para intentar detectar el tamaño del transitorio, por ejemplo estudiando la estabilización de los valores medios.
La técnica a aplicar dependerá también del método particular de análisis de la salida
22
Estudio de las técnicas de aceleración de simulaciones por eventos discretos
y no siempre funcionan bien (ver [Glynn 1995], [Ockerman y Glodsman 1997], [Tokol et al. 1997] y [Fishman 2001]).
La gran cantidad de artículos sobre la problemática del transitorio inicial da una
idea de la importancia de este efecto. Aún así, sigue siendo un tema pendiente de
resolver satisfactoriamente.
2.1.6.2
Réplicas
Las réplicas son, al menos conceptualmente, el método más sencillo para el análisis de la salida. Según se justifica más adelante, sus propiedades lo han hecho el mejor candidato para este trabajo, por lo que se describe con mayor amplitud que otros
métodos.
Supóngase que se hacen k ejecuciones (réplicas), cada una generando m muestras
de una variable de salida y utilizando diferentes generadores aleatorios para cada
ejecución. Las medias X1, X2, ... , Xk de las k ejecuciones son independientes, pues se
han utilizado secuencias de números aleatorios independientes para cada ejecución, y
para un valor suficientemente grande de m se distribuyen normalmente. Se puede
obtener un intervalo de confianza, como ya se ha descrito anteriormente, utilizando
la expresión,
H =t
s
α
1− ; N −1
2
N
Xi representa la media de la ejecución individual i, y X es la media de todas estas
medias. La varianza se calcula normalmente utilizando la siguiente fórmula, que presenta la ventaja de poder ir evaluándose según corre la ejecución de la simulación
∑ (X ) − kX
k
2
i
s2 =
2
i =1
k −1
En un procedimiento de tamaño fijo, el número total de observaciones n = mk se
determina por adelantado. Comúnmente, esto se hace construyendo el programa de
simulación con el modelo como un subprograma, que realiza una ejecución de longitud m y devuelve una media Xi. Llamando a este subprograma k veces con una secuencia de números aleatorios diferentes, se pueden aplicar los cálculos expuestos en
esta sección. Es mejor mantener k relativamente pequeño (de 5 a 10), y m relativamente grande. Valores grandes de m tienden a reducir s2 y compensan el efecto de un
número pequeño de réplicas; además, se reducen los efectos del sesgo en el arranque
Bases de la simulación por eventos discretos
23
(warm-up) y se mejora la normalidad, lo cual mejora la cobertura del intervalo de
confianza. En [MacDougall 1987] y en [Law 1983] se pueden ver ejemplos de estos
efectos. El incrementar indiscriminadamente el número de réplicas puede dar lugar a
intervalos de confianza pequeños alrededor del punto erróneo.
Las réplicas también se pueden emplear en un procedimiento secuencial, incrementando m o k hasta que se obtiene el valor deseado de H.
La forma adecuada de hacer esto es realizando k ejecuciones de una longitud inicial m = m0, guardar el estado de las simulaciones, calcular H, y si H es mayor que la
deseada, se incrementa m, se rearranca cada ejecución, y se calcula H otra vez. Esto
mantiene a k pequeño, pero tiene la desventaja de que necesita un mecanismo de salvado/rearrancado. También es posible ir añadiendo réplicas hasta que se obtiene el
valor deseado de H. Si se utiliza esta aproximación, los resultados deben interpretarse con cautela, pues la cobertura generalmente será menor que 1 − α debido muchas
veces al efecto del arranque.
No hay reglas fijas para utilizar este método, por ejemplo [MacDougall 1987] hace las siguientes recomendaciones: suponiendo que se desea una precisión del 10% al
95% de nivel de confianza para una variable de salida X, se recomienda:
1. Utilizar una longitud básica de 2.500 muestras. Si las principales variables de
entrada que contribuyen al valor de X tienen coeficientes de variación (σ/µ)
mayores que 1, incrementar a 4.000. Para sistemas abiertos con alta utilización (intensidad de tráfico entre 0,6 y 0,9), incrementar la longitud a 5.000.
2. Hacer 5 réplicas y calcular el intervalo de confianza H5.
3. Si H5 < 0,1 X , se ha obtenido la precisión buscada. En caso contrario, hacer
k + − 5 replicas adicionales, donde
k + = 5( H 5 / 0.1X ) 2 
y calcular un nuevo intervalo de confianza. Si k + > 20 y no se ha logrado el
intervalo requerido se recomienda empezar de nuevo con longitudes de la ejecución del doble o más.
4. En un proceso en tiempo continuo, donde la longitud de la ejecución se expresa en términos de tiempo, se establecerá los tiempos de forma que equivalgan a una cantidad de operaciones similares a las propuestas.
24
Estudio de las técnicas de aceleración de simulaciones por eventos discretos
Un importante problema del método de las réplicas es la influencia negativa de
los transitorios iniciales en la cobertura, pues ésta se verá sesgada por el efecto de las
muestras tomadas en esta fase.
La aplicación de técnicas de detección del transitorio inicial implica que parte de
las muestras de cada réplica deberán ser descartadas, con el consiguiente desperdicio
de recursos informáticos. Así, si tenemos k réplicas con m muestras cada una y el fin
del transitorio corresponde a l muestras, entonces kl muestras se habrán desperdiciado, quedando k (m − l ) muestras para estimar X .
Una de las formas para estimar el tamaño del transitorio consiste en observar gráficamente la tendencia de los datos debida al sesgo y encontrar cuando desaparece
[Welch 1983]. Para ello, las muestras generadas por cada réplica se dividen en lotes
contiguos de tamaño fijo de los que se calcula la media del conjunto de lotes en la
misma posición para cada réplica. Estas medias entre lotes se trazan gráficamente
para saber a partir de qué lote se aprecia que las medias empiezan a oscilar alrededor
de una media. En la Figura 2-5 se muestra un representación del procedimiento.
El uso de las medias acumuladas para la detección del transitorio no se recomienda debido al sesgo inicial que enmascara la detección del transitorio.
Desgraciadamente no existe un método ampliamente aceptado, objetivo y demostrado para determinar cuántas muestras hay que eliminar para evitar el sesgo
inicial. Algunas mejoras y propuestas son:
•
Cuando se incrementa el número de réplicas se obtiene una tendencia en la
gráfica más suave y precisa. Se puede añadir un intervalo de confianza basado
en la distribución t-Student a cada punto (por ser la media de variables i.i.d.) y
juzgar si el trazo es lo suficientemente preciso para considerar que el sesgo ha
disminuido. Este suele ser el método preferido para determinar un punto de
borrado.
•
Se pueden lograr mejores suavizados trazando medias móviles en lugar de las
medias entre lotes. En la media móvil, cada punto es la media de varias medias entre lotes contiguos. La cantidad de lotes contiguos a seleccionar se elige normalmente por prueba y error hasta que se obtiene un trazado suave.
•
Las medias acumuladas son menos variables cuantos más datos son promediados. Por tanto, se espera que el lado izquierdo de la curva sea siempre menos suave que el lado derecho. Por ésta y otras razones las medias acumula-
Bases de la simulación por eventos discretos
25
dos deberían usarse sólo si no es posible calcular medias entre lotes; por
ejemplo, en el caso de una sola ejecución.
•
Cuando interesa más de una variable de salida hay que tener en cuenta que
normalmente alcanzan el régimen permanente a diferente ritmo, por lo que se
deberá examinar cada uno por separado y elegir un punto de borrado adecuado para todos.
p muestras
…
R1
R2
R3
…
Rk
X1
X2
X3
X4
X5
X
j
X3
X4
X5
X
j
transitorio a
eliminar
X1
X2
Figura 2-5. Representación del procedimiento de Welch
para la detección del transitorio.
Cada solución que funciona bien en unos casos puede funcionar mal en otros.
Hay estudios para intentar detectar el sesgo ([Kelton y Law 1983], [Schruben 1980],
[Goldsman et al. 1985]), para modelarlo ([Snell y Schruben 1985]) y para muestrear
aleatoriamente las condiciones iniciales en cada réplica ([Kelton 1991]).
En cualquier caso, siempre es interesante intentar que el tamaño del transitorio
inicial sea lo menor posible (ver apartado 2.1.6.1) por lo que, si es sencillo de im-
26
Estudio de las técnicas de aceleración de simulaciones por eventos discretos
plementar, se pueden aplicar técnicas para reducirlo. Por ejemplo, en [Kelton y Law
1984] y [Kelton 1985] se estudia el efecto de la reducción del transitorio en colas
M/M/s, M/Em/1 y Em/M/1 cuando se inicializan con una cantidad de clientes. Como
resultado se dice que la inicialización de las colas como vacías y el servidor desocupado no es una buena idea, a pesar de ser práctica habitual, y el estado óptimo de
inicialización tiende a ser un valor mayor que la media. Como consecuencia de una
inicialización correcta se estará reduciendo el sesgo y acortando las simulaciones.
Según [Gafarian et al. 1978] los métodos hasta la época funcionaban bien para la
elección del transitorio inicial. El procedimiento de Welch está ampliamente aceptado, pero hay otros. [Schhruben 1982], [Schruben et al. 1983] desarrollan un método
general basado en series temporales estandarizadas para determinar si una serie de
observaciones tienen un sesgo con respecto al valor en régimen permanente. En
[Kelton y Law 1983] se propone un algoritmo que trabaja bien para la elección de l y
m sobre una amplia variedad de modelos estocásticos; sin embargo, una limitación
teórica del algoritmo es que hace una asunción de que E(Xi) es una función monótona
de i. [Gallagher et al. 1996] proponen un método alternativo basado en los filtros de
Kalman.
En cuanto a la longitud de las réplicas en función del tamaño del transitorio eliminado, en [Banks 1996] se recomienda como regla que la longitud de la simulación
más allá del transitorio debería ser al menos 10 veces la cantidad de datos borrados.
Dada esta longitud, el número de réplicas debería ser tantas como lo permitiese el
tiempo y hasta un máximo de 25 [Kelton 1986].
Dado un tiempo de computación disponible [Glynn 1987] muestra que, según
este tiempo tiende a infinito, es mejor ir incrementando el número de réplicas que
hacer que crezcan un número fijo de réplicas.
En [Glynn 1995] se muestra que es asintóticamente mejor un número bajo de réplicas, lo que se prueba con un conjunto de modelos bastante general. La calidad de
la simulación se estima a partir del error cuadrático medio. Para ello supóngase que
se dispone de un tiempo t para simular. Con el método de las réplicas se proporciona
t/m unidades de tiempo a cada una de m réplicas. La media obtenida αm(t) es una
estimación de la verdadera α. En el trabajo se llega a la siguiente proposición,
E (α m (t ) − α ) =
2
σ2
t
+
m
(mb 2 + c) + O(e −γt / m )
2
t
Bases de la simulación por eventos discretos
27
según t → ∞ y donde b y c son constantes desconocidas y γ es una constante positiva.
Según esta expresión, no es nunca óptimo elegir m estrictamente mayor que
max(1,c/b2). Como c y b son desconocidas, una aproximación conservativa es elegir
m=1. La idea es que si elegimos m demasiado grande, la penalización por hacerlo
puede ser arbitrariamente mala.
2.1.6.3
Lotes (batch-means)
El método de lotes se basa en la división de una ejecución larga en un conjunto de
k subejecuciones de longitud m, llamadas lotes (batch), calculando una media de la
muestra para cada lote, y utilizándola para calcular una media global y el intervalo de
confianza. Como ventaja adicional, este método reduce el problema del transitorio
inicial al solo necesitar eliminar uno.
Asumiendo que se emplea el borrado para conseguir las condiciones para el estado estable, cada lote empezará con el sistema en este estado. Si el tamaño del lote es
suficientemente grande, las medias serán aproximadamente independientes y distribuidas normalmente. Se puede calcular un intervalo de confianza igual que para las
réplicas, con las medias de lote tomando el lugar de las medias de las ejecuciones, es
decir,
1 k
X = ∑ Xi
k i =1
∑ (X ) − kX
k
2
i
s2 =
2
i =1
k −1
donde Xi es la media de las m muestras de cada lote.
Como se ha dicho, el efecto de la dependencia dentro de cada lote implica sesgos
en X i y, por lo tanto, también en X , que se reduce al aumentar m, por lo que si m es
suficientemente grande, la dependencia no tiene prácticamente efecto dentro del lote.
Aunque se espera cierta dependencia entre los estimadores de lotes, ésta será menor
que la dependencia entre observaciones.
El efecto del arranque sólo se debe de tener en cuenta una vez, mientras que en el
caso de las réplicas debe ser k veces. El método por lotes es potencialmente más eficiente, pues se necesitará menor número de muestras para conseguir una precisión
28
Estudio de las técnicas de aceleración de simulaciones por eventos discretos
dada. El mayor problema consiste en determinar el tamaño adecuado del batch para
garantizar que cada lote es independiente. Desgraciadamente no hay un método sencillo para elegir un tamaño del lote o el número de lotes. Algunas líneas generales
son:
•
Es aconsejable utilizar ente 10 y 30 lotes como máximo [Schmeiser 1982]. En
el caso de autocorrelaciones grandes es mejor un tamaño de lote grande que
muchos lotes.
•
Aunque suele haber autocorrelaciones entre lotes a todas las distancias, sólo
se suele estudiar la autocorrelación de distancia 1, Corr(Xj,Xj+1), para comprobar la independencia entre lotes. Cuando la autocorrelación de distancia 1
es cercana a 0 entonces se trata al lote como independiente.
•
La autocorrelación no debería estimarse a partir de un número pequeño de
lotes (10 ≤ k ≤ 30 como se recomienda) debido al sesgo del estimador. [Law y
Carson 1979] sugieren estimar la autocorrelación a partir de un número grande de lotes de tamaño pequeño (por ejemplo 100 ≤ k ≤ 400) y cuando la autocorrelación sea pequeña (cercana a 0) se agrupan los lotes para tener 10 ≤ k ≤
30, lo que posiblemente disminuya también la autocorrelación.
Se han desarrollado diferentes métodos para afrontar esta problemática, algunos
se pueden ver en [Adam 1983], [Fishman y Yarberry 1994], [Law y Kelton 2000].
Comúnmente, estos algoritmos empiezan con tamaños de lote pequeños, recogen una
cantidad relativamente grande de lotes y calculan un estimador de la correlación de
las medias. Si la correlación no es significativa entonces se asume que se satisface la
condición de independencia. Si las correlaciones son significativas, el tamaño del
lote se duplica y se recogen más muestras. Cuando se consigue un tamaño de lote
que satisface la condición de independencia de las medias, se pasa aplicar un método
secuencial para obtener la precisión adecuada. En esta metodología, el aspecto crítico
está en la naturaleza sesgada de los estimadores de correlación.
La forma de trabajo descrita en el párrafo anterior tiene un inconveniente: un valor pequeño de k tiende a aumentar la varianza, por lo que sería deseable un método
que permitiese aumentar k sin disminuir m para una cantidad de muestras fija. Una
idea para resolver esta problemática es el método denominado lotes solapantes
(overlapping batchs) que puede verse en [Meketon y Schmeiser 1984]. En este caso
se utilizan n-m+1 lotes para obtener el estimador
Bases de la simulación por eventos discretos
29
n − m +1 ( X − X ) 2
1
j
s =
∑
n − m + 1 i =1 n / m − 1
2
con Xj calculado a partir del lote de tamaño m que va de xj a xj+m-1. Hay soluciones intermedias con estimadores de menor solapamiento que el anterior.
Existe una posibilidad adicional a las aproximaciones anteriores propuesta en
[Fox et al. 1991] que consiste en eliminar un conjunto de datos de salida entre cada
lote, lo que, en principio, disminuye el peligro de correlación entre lotes a costa de
perder muestras.
2.1.6.4
Regeneración
El método de las regeneraciones fue desarrollado por Crane e Iglehart [Crane e
Iglehart 1974a, Crane e Iglehart 1974a, Crane e Iglehart 1975], y Fishman [Fishman
1973, Fishman 1974].
El principio básico de este método proviene de considerar que el proceso de salida de interés es regenerativo. Un proceso es regenerativo si existen instantes de
tiempo en los que el proceso recomienza probabilísticamente. La aplicación del método consiste entonces en dividir la longitud de la simulación en intervalos sucesivos
de forma que el comportamiento del modelo en cada intervalo sea estadísticamente
equivalente e independiente.
Habrá tantas subsimulaciones independientes como intervalos, y los resultados de
cada subejecución se considerarán como muestras de variables aleatorias independientes y con la misma distribución.
El tamaño de cada subintervalo será diferente, por lo que en este método se calcula la esperanza deseada µ como el ratio de dos esperanzas matemáticas,
µ=
E [Z ]
E [N ]
donde las esperanzas E[Z] y E[N] se estiman a partir de Z i = ∑ X i de las muestras de la i-ésima regeneración y Ni el tamaño de la i-ésima regeneración.
Cuando la muestra es grande se podrá calcular un intervalo de confianza utilizando la expresión,
H = Zα
2
s
k
, con Z≈Ν(0,1).
30
Estudio de las técnicas de aceleración de simulaciones por eventos discretos
En la práctica, la hipótesis de independencia se puede satisfacer si el modelo corresponde a un proceso estocástico regenerativo. En estos casos, el modelo tiene uno
o más estados especiales a los que se llama estados regenerativos. Siempre que el
sistema vuelve a uno de estos estados se tiene un punto de regeneración. Éste podría
ser, por ejemplo, el punto donde el comportamiento pasado del sistema ya no va a
tener influencia sobre su futuro, pudiéndose aprovechar estos puntos para hacer la
división de la simulación.
La determinación de los puntos de regeneración no suele ser factible en la mayoría de modelos razonablemente complejos. El caso más simple es el de un proceso de
Markov, donde cada estado es un punto de regeneración. Del mismo modo, en un
modelo de una red abierta donde la llegada de clientes es un proceso de Poisson, un
punto de regeneración suele ser el que todos los servidores estén vacíos.
Una forma habitual de trabajar con este método es que sea explícitamente el
usuario el que compruebe el estado del sistema y localice el punto de regeneración
para que se hagan los cálculos estadísticos necesarios sobre la subejecución una vez
localizado este punto.
En muchas ocasiones se pueden conseguir puntos de regeneración aproximados
partiendo de una versión del modelo más sencilla. Sin embargo, es necesario establecer la validez de los intervalos de confianza obtenidos así. Antes de tomar los resultados como buenos será aconsejable utilizar un test de correlación para cerciorarse de
la independencia de las muestras.
De todas formas, siempre se puede recurrir a puntos de regeneración artificiales.
Por ejemplo, es posible dividir la simulación en subejecuciones de igual longitud y
afirmar que son independientes, siempre y cuando la longitud de cada subejecución
sea lo suficiente larga y se hagan suficientes subejecuciones. Éste sería el método por
lotes ya descrito.
2.1.6.5
Autorregresión
El método de la autorregresión se basa en la estimación de ciertos parámetros
pertenecientes a las estructuras de autocorrelación de los procesos. Este método fue
propuesto en [Fishman 1971].
Supóngase que se tienen X1,..Xn observaciones de la ejecución de una simulación,
que no se pretende que sean independientes. Se utilizará de forma habitual X como
estimador de E(X) y queda por estimar σ2 para calcular el intervalo de confianza.
Bases de la simulación por eventos discretos
31
Se asume que el proceso es estacionario respecto a la covarianza y se puede representar por un modelo autorregresivo de p-ésimo orden
p
∑b (X
s
s =0
t −s
− E ( X )) = ε t
(2.3)
donde b0=1 y es una secuencia de variables aleatorias no correladas con media
común 0 y varianza σ2. Si
∑
∞
s = −∞
γ s < ∞ , entonces se puede ver que para n grande,
s ( n) ≅
2
σ2
 p 
n ∑ bs 
 s =0 
(2.4)
2
Manipulando (2.3) y ajustando secuencialmente los datos para diferentes elecciones de p se consiguen estimaciones de σ2, p y bs, y sustituyendo en (2.4) se obtiene el
estimador autorregresivo s2A(n) para σ2(n). Para formar el intervalo de confianza se
usa el ratio [ X (n) –E(X)]/ s2A(n) como una distribución t de Student (ver [Fishman
1973] y una posterior mejora en [Yuan y Nelson 1994]).
Una posible fuente de error para este método es que generalmente los procesos no
son estacionarios respecto a la covarianza, con lo que (2.3) no se cumple y se estará
fallando en la estimación de t.
2.1.6.6
Espectral
Este método se aplica a muestras correladas siempre que éstas estén idénticamente distribuidas, que sean estacionarias respecto a la covarianza y, por tanto, no se
basa en la asunción de independencia.
La correlación se toma en cuenta en la estimación de los intervalos de confianza,
proporcionando normalmente intervalos de confianza mayores que los estimados por
otros métodos debido a la estimación añadida del efecto de la correlación.
Bajo la hipótesis de que el proceso es estacionario respecto a la covarianza se tiene que

j =1 
m
m
Var [X (m)] =
donde γi es la covarianza.
γ 0 + 2 ∑ 1 −
j
γ
m
j
(2.5)
32
Estudio de las técnicas de aceleración de simulaciones por eventos discretos
El método utiliza esta relación como punto de partida para estimar la varianza de
la muestra. Suponiendo que se cumple,
∞
∑γ
j
<∞
j = −∞
entonces
Var [X (m)] → 2πg (0) según m → ∞
donde a g(τ) se le llama espectro del proceso a frecuencia τ, y se define por la
transformada de Fourier,
g (τ ) =
1
2π
∞
∑γ
j
e − i γj ,
|τ| ≤ π
i = −1
j = −∞
Por tanto, para valores de m grandes, Var [X (m)] ≈ 2πg (0) / m , y el problema de
estimar Var [X (m)] se puede considerar como la estimación del espectro a frecuencia
0.
Una estimación de la varianza consiste entonces en sustituir γj en (2.5) por una
estimación γˆ j a partir de las observaciones. El problema es que para valores grandes
de m y para j cercano a m, la estimación de γj tendrá una varianza grande porque se
calcula a partir de pocas observaciones. Por ello se suele recurrir a utilizar la expresión,
q −1
Vˆar [X (m)] =
γˆ 0 + 2∑ Wq ( j )γˆ j
j =1
m
donde q determina el número γˆ j s en el estimador, y que se debe especificar; y la
función de ponderación Wq(j) se diseña para mejorar las propiedades de muestreo de
Vˆar [X (m)]. Entonces se puede tener un intervalo de confianza medido como 100(1-
α)% a partir de,
X (m) ± t f ,1−α / 2 Vˆar [X (m)]
donde f depende de m, q y de la elección de la función de ponderación.
Bases de la simulación por eventos discretos
33
La principal ventaja de este método es que el usuario no debe preocuparse con la
elección de parámetros como números de réplicas, puntos de regeneración, etc., pues
se aplica el análisis directamente al comportamiento del modelo simulado en régimen
estacionario. Sin embargo, no hay un procedimiento definitivo para la elección de q,
y la técnica requiere un profundo conocimiento por parte del analista.
La información sobre el método se puede ampliar en [Damerdji 1991], [Heidelberger y Welch 1981], [Heidelberger y Welch 1981b].
2.1.6.7
Series temporales estandarizadas
Los procedimientos anteriores para el cálculo de los intervalos de confianza se
suelen basar en el teorema central del límite, que describe el comportamiento asintótico de un estimador para un parámetro estandarizado. Los métodos difieren en la
forma de estimar la desviación estándar del estimador del parámetro.
La técnica de las series temporales estandarizadas difiere del resto en un aspecto
fundamental: en lugar de basarse en un único estimador, trabaja sobre el total de las
series temporales. En este caso, se utiliza un proceso estocástico limitador para modelar la conducta de las series temporales estandarizadas. Este proceso limitante es el
proceso estándar de Wiener, W(t), en el intervalo condicionado a empezar y terminar
en cero (también se le llama puente Browniano).
La base teórica de este método se puede consultar en [Schruben 1983], y se aplica
al diseño de diferentes procedimientos para el cálculo del intervalo de confianza.
Por ejemplo, se puede estimar el intervalo de confianza utilizando una suma de
series temporales. Supóngase como partida un conjunto de réplicas independientes o
lotes de observaciones de una única ejecución. Dada la variable aleatoria de salida
asintóticamente normal, Ai, si se divide por su desviación estándar y se aplica la raíz
cuadrada se tendrá una distribución chi2 (χ2) con un grado de libertad. Se usará esta
transformación para obtener un χ2 para cada una de las b réplicas independientes o
lotes. La suma de variables aleatorias χ2 independientes tiene una distribución χ2 con
los grados de libertad sumados. Para longitudes m grandes de la ejecución, la suma
de los Ai (después de escalar y hacer la raíz) tendrá aproximadamente una distribución χ2 con b grados de libertad. Así se tendrá que,
b
12
H= 3
Ai2
∑
m − m i =1
34
Estudio de las técnicas de aceleración de simulaciones por eventos discretos
estará distribuida asintóticamente como σ2 veces una variable aleatoria χ2 con b
grados de libertad. H es una función de la serie temporal que es asintóticamente independiente de la media de la muestra. Se llega a un cálculo para el intervalo de confianza según la fórmula,
H = tη ,b 12∑ i =1
b
Ai2
n 2 ( m2 − 1)
donde tη,b es el cuartil 100(1+η)/2 de una distribución t con b grados de libertad.
2.1.7 Comentarios a los métodos de análisis de la salida
El problema fundamental de las simulaciones es que en la mayoría de casos no
producen observaciones que sean independientes e idénticamente distribuidas de
manera normal. Como ejemplo, [Goldsman y Tokol 2000] comentan este problema
aplicado al tiempo de espera de clientes consecutivos en un complejo sistema de colas diciendo:
•
No son independientes. Típicamente están correlados en serie. Si un cliente
en la oficina de correos espera en la cola mucho tiempo, entonces el siguiente
cliente probablemente también esperará mucho tiempo.
•
No están idénticamente distribuidos. Los clientes que vayan pronto deberían
esperar menos que los que llegan a última hora.
•
No están normalmente distribuidos. Habitualmente están deformados hacia la
derecha y nunca son menores que 0.
El método ideal para el análisis secuencial de la salida debería evitar en lo posible
el sesgo producido por los efectos antes descritos, pero además no debería requerir
una parametrización por parte del modelador, sino que, automáticamente, debería ser
capaz de detectar y eliminar el transitorio inicial, y hacer el control de la longitud de
la simulación hasta alcanzar el error relativo deseado a un determinado nivel de confianza.
Por ejemplo, en [Heidelberger y Welch 1983] se aplica el método espectral con
diferentes estadísticos y detección automática del transitorio inicial basados en
[Schruben et al. 1983] sobre un modelo NEAR(1) [Lawrence y Levis 1981] que puede tener un grado muy grande de autocorrelación positiva, y el tiempo en espera en
una cola M/M/1 con intensidad de tráfico ρ=0,90. Como resultado, el procedimiento
Bases de la simulación por eventos discretos
35
con detección automática del transitorio funciona muy bien, comportándose casi
siempre mejor que la versión sin detección del transitorio. El método con borrado del
transitorio produce estimaciones puntuales con menos sesgo e intervalos de confianza más estrechos y mejor cobertura de las simulaciones más cortas que sin borrado
del transitorio inicial. Sin embargo, el método tiene problemas en la detección de
algunos transitorios fuertes que se traducen en crecimientos lentos y que fuerzan al
algoritmo a terminar prematuramente.
Los buenos resultados obtenidos se enfrentan con la necesidad de unos profundos
conocimientos del analista de esta técnica y de su adecuada aplicación a cada tipo de
modelo. De [Law y Kelton 2000] se extrae la Tabla 2-1, que resume la problemática
de cada uno de los métodos de análisis de la salida descritos.
Método
Número
de réplicas
Problema de
sesgo principal
Réplicas/borrado
n (n≥ 2)
X (n)
Lotes (batch means)
1
Vˆar [X (n)]
Autorregresivo
1
Vˆar [X (n)]
Espectral
1
Vˆar [X (n)]
Regeneración
1
Vˆar [X (n)]
Series temporales
estandarizadas
1
Vˆar [X (n)]
Mayor dificultad
Elección del periodo de calentamiento
Elección del tamaño de lote
para obtener lotes sin correlación
Calidad del modelo
autorregresivo
Elección del número de saltos
de covarianza
Existencia de ciclos con tamaño
de la media
“pequeño”
Elección del tamaño del lote
Tabla 2-1. Problemática principal de los diferentes métodos para el análisis de la salida.
En [Law y Kelton 2000] se puede ver una comparativa de los métodos descritos
cuando se aplican con un tamaño de muestra fijo. En este caso se emplea un modelo
de cola M/M/1 y un modelo de computador de tiempo compartido. Para el caso de la
cola M/M/1 los resultados de cobertura están muy por debajo de la pronosticada teóricamente, mientras que en el otro modelo los resultados son muy cercanos al teórico.
En cualquier caso, de los resultados se desprende que el tamaño ideal de muestra no
es fijo y depende del modelo, y que la cobertura no está en función de la complejidad
del modelo, pues un modelo sencillo como la cola M/M/1 da peores resultados que el
modelo complejo.
El propósito de esta tesis es proveer una metodología de explotación paralela de
modelos de simulación aplicable a cualquier tipo de modelo y que proporcione ga-
36
Estudio de las técnicas de aceleración de simulaciones por eventos discretos
rantías estadísticamente contrastadas en los resultados. En ese camino, la técnica de
análisis basada en réplicas independientes parece la más intuitiva y universal para
cualquier tipo de modelo de simulación y, además, se adapta bien a diferentes tipos
de objetivos de explotación del modelo de simulación.
En este sentido, [Law y Kelton 2000] da las siguientes razones para utilizar este
método:
1. Si se aplica adecuadamente, este método suele dar un rendimiento estadístico
razonablemente bueno.
2. Es la aproximación más fácil de entender e implementar.
3. Se puede aplicar a todos los tipos de parámetros de salida.
4. Se puede usar con facilidad para estimar diferentes parámetros de un mismo
modelo de simulación.
5. Se puede usar para comparar diferentes configuraciones de un sistema.
2.2 Técnicas de reducción de la varianza para acelerar
simulaciones
Un punto a tener en cuenta cuando se trabaja con simulaciones dirigidas mediante
variables de entrada aleatorias es que las variables de salida resultantes también serán
aleatorias. Por tanto, se deberán aplicar las técnicas estadísticas apropiadas a las variables resultantes si se desea analizarlas, interpretarlas y usarlas adecuadamente.
Como las simulaciones complejas suelen requerir grandes cantidades de tiempo
de computación, los métodos estadísticos vistos en apartados anteriores suelen ser
bastante costosos. Por tanto, el analista usar algún medio para incrementar la eficacia
computacional, vista tanto como la adecuada codificación de la aplicación como de
los adecuados métodos estadísticos.
Por ejemplo en [Law y Kelton 2000] se orienta a la eficacia estadística desde el
punto de vista de la varianza de las variables de salida. Si se puede de alguna forma
reducir la varianza de una variable de salida aleatoria de interés sin alterar su esperanza, será posible obtener mayor precisión. Esto se puede traducir en intervalos de
confianza más pequeños para la misma cantidad de simulación o, alternativamente,
conseguir la precisión deseada con menos esfuerzo computacional.
Técnicas de reducción de la varianza para acelerar simulaciones
37
Los métodos para aplicar estas técnicas dependen normalmente del modelo particular a estudiar y, por tanto, requieren un conocimiento profundo del modelo de trabajo. Aún más, en general es imposible conocer de antemano la reducción de varianza a conseguir o, peor aún, si se reducirá la varianza en comparación con los métodos
directos.
La aplicación de estas técnicas puede suponer un incremento del coste de desarrollo de la aplicación y del coste computacional, por lo que en ocasiones es interesante hacer pruebas piloto para comprobar si se obtienen ventajas.
Por otra parte, en [Pawlikowsky 1990] se destaca que "a pesar de que se han estudiado teóricamente y con profundidad distintas técnicas de reducción de la varianza, la mayoría de ellas ha tenido una aplicación práctica limitada". Se pueden ver
ejemplos de aplicación y otros métodos en [Ríos et al. 1997] y [Law y Kelton 2000].
A continuación se describen las técnicas que, por su generalidad y su fácil aplicación, pueden ser adecuadas a nuestro objetivo.
2.2.1 Números aleatorios comunes
El método de los números aleatorios comunes se utiliza cuando se comparan dos
o más configuraciones alternativas de un sistema en lugar de investigar una única
configuración. A pesar de su simplicidad, es probablemente la más útil y popular de
todas las técnicas de reducción de la varianza.
La idea básica es que se deberían comparar configuraciones alternativas bajo experimentos con condiciones similares, de forma que se esté más seguro de que las
diferencias en rendimiento se deben a las diferencias en la configuración del sistema
y no a fluctuaciones en las condiciones del experimento.
El nombre de esta técnica proviene de la posibilidad de que en muchas ocasiones
se pueden conducir los diferentes experimentos con los mismos números aleatorios
pues, en simulación, las condiciones del experimento se generan mediante variables
aleatorias.
Para ver el razonamiento de la técnica más claramente, considérese el caso de dos
configuraciones alternativas, donde X1j y X2j son las observaciones de la primera y la
segunda configuración en la j-ésima réplica independiente, y se quiere estimar E(Zj)
= E(X1j)-E(X2j). Si se hacen n réplicas de cada sistema y suponiendo Zj = X1j - X2j
para j=1, 2, ...,n, entonces para E(Zj) se tiene que,
38
Estudio de las técnicas de aceleración de simulaciones por eventos discretos
n
∑Z
Z (n) =
j =1
j
n
es una estimación no sesgada de E(Zj). Como las Zj son variables aleatorias independientes e idénticamente distribuidas (i.i.d.),
Var[ Z ( n )] =
Var ( Z j )
n
=
Var( X 1 j ) + Var( X 2 j ) − 2Cov ( X 1 j , X 2 j )
n
Si la simulación de las dos configuraciones se hace independiente, por ejemplo
con diferentes números aleatorios, X1j y X2j serán independientes y por tanto
Cov(X1j,X2j)=0. Por otra parte, si se pudiese hacer que en la simulación de las configuraciones 1 y 2, X1j y X2j estén correladas positivamente, entonces Cov(X1j, X2j) > 0,
y por tanto la varianza del estimador Z ( n ) se reducirá.
En esta técnica se intenta inducir esta correlación positiva utilizando cuidadosamente los mismos números aleatorios para simular todas las configuraciones. Esto es
posible gracias a la naturaleza reproducible y determinista de los generadores de números aleatorios.
Desgraciadamente, no hay una prueba general para demostrar que el método funciona, y por tanto que reduce siempre la varianza. La eficacia del método depende de
los modelos particulares que se comparan, y su uso presupone que el analista piensa
que los diferentes modelos responderán de forma similar a grandes o pequeños valores de las variables aleatorias de entrada. Por ejemplo, se debería esperar que tiempos
entre llegadas pequeños, para la mayoría de los diseños con colas, suelen dar mayores retardos y longitudes de las colas.
La Figura 2-6 muestra esquemáticamente este concepto, donde el eje horizontal
muestra los posibles valores de un Uk (U(0,1)) utilizado para un propósito particular
en ambas simulaciones. Por ejemplo este Uk podría ser usado para generar un tiempo
de servicio. Las curvas indican cómo podrían reaccionar los resultados de la simulación para posibles valores de éste Uk. En las situaciones (a), X1j y X2j reaccionan monotónicamente en la misma dirección para Uk, y se debería esperar que el método
indujese la deseada correlación positiva y, por tanto, redujese la varianza. Sin embargo, en (b) X1j y X2j reaccionan en direcciones opuestas para Uk, por tanto, debería
inducir correlaciones negativas y fallar, llevando a que Cov(X1j y X2j) < 0 y un incremento de la varianza.
Técnicas de reducción de la varianza para acelerar simulaciones
39
X1j
X 2j
X 2j
X1j
0
1
0
1
X 1j
X1j
X 2j
X 2j
0
1
(a)
0
1
(b)
Figura 2-6. Ejemplos de posibles respuestas de modelos de simulación para números
aleatorios comunes. Para (a) la técnica debe suele funcionar, para (b) no.
Normalmente, los números aleatorios se usan para generar otras distribuciones,
que se emplean a su vez para conducir los modelos de simulación. Para dar a la técnica las mejores posibilidades de funcionamiento, se debería intentar primero garantizar que las distribuciones generadas reaccionasen monotónicamente a Uk en el paso
intermedio; entonces se podrá asumir que las medidas de rendimiento reaccionan
monotónicamente a las distribuciones generadas. Por esta razón, se recomienda el
método de la transformada inversa para la generación de variables aleatorias, pues
garantiza monotonicidad. Como este método suele ser lento, puede ocurrir que su
coste computacional desplace su eficacia estadística. Por esta razón algunos autores
han desarrollado métodos no basados en la transformada inversa que todavía inducen
una correlación positiva en las variables requeridas.
Para una implementación adecuada se debe sincronizar los números aleatorios para las diferentes configuraciones del sistema en cada réplica. Lo ideal es que un número aleatorio específico usado para un propósito específico en una configuración se
use exactamente para el mismo propósito en las otras configuraciones.
40
Estudio de las técnicas de aceleración de simulaciones por eventos discretos
2.2.2 Variables antitéticas
El método de las variables antitéticas, introducida por [Hammersley y Morton
1956], es una técnica de reducción de la varianza aplicable a la simulación de un
único sistema. Como en el método de los números aleatorios comunes, se intenta
inducir correlación entre diferentes ejecuciones, pero ahora se buscan correlaciones
negativas.
La idea principal es hacer pares de ejecuciones del modelo de forma que una "pequeña" observación en una de las ejecuciones del par, tiende a ser un desplazamiento
de una "gran" observación en el otro; es decir, las dos observaciones están correladas
negativamente. Entonces si se usa la media en el par de observaciones, esta tenderá a
ser más cercana a la esperanza común E(X) de una observación que la que se tendría
si las dos observaciones del par fuesen independientes.
En su forma más simple el método intenta inducir esta correlación negativa empleando números aleatorios complementarios para manejar las dos ejecuciones en
parejas. Esto es, si Uk es un número aleatorio particular empleado para un propósito
particular en la primera ejecución (por ejemplo para generar el i-ésimo tiempo de
servicio), entonces se usará 1- Uk para este mismo propósito en la segunda ejecución.
Un punto importante es que el uso de un Uk en una réplica y su complementario
1- Uk en la réplica emparejada debe estar sincronizado, es decir, usado para el mismo
propósito. En caso contrario se pierden los beneficios del método o pueden llegar a
ser contraproducentes.
Como en otros métodos, no se puede estar completamente seguro de que funcionará, y su aplicabilidad y eficacia son quizás más dependientes del modelo. El requerimiento fundamental que un modelo debe satisfacer para que funcione es que su
respuesta a un número aleatorio empleado para un propósito particular sea monotónico en cualquier dirección.
Hay una base matemática para este método. Supóngase que se hacen n pares de
ejecuciones de la simulación, dando las observaciones (X1(1), X1(2)),...,(Xn(1),Xn(2)),
donde Xj(1) es la j-ésima observación de la primera ejecución (la que usa U) y Xj(2) es
la de la segunda (que usa 1-U). Xj(1) y Xj(2) son legítimas observaciones del modelo de
simulación, y por tanto, E(Xj(1)) = E(Xj(2)) = E(X). También se tiene que cada pareja
es independiente de las otras. Para j = 1, 2, ..., n, sea Xj = (Xj(1) + Xj(2))/2, y sea la
Técnicas paralelas para acelerar simulaciones
41
media de Xj, X ( n ) , el estimador (sin sesgo) para E(X) = E(Xj(1)) = E(Xj) = E( X ( n ) ).
Como las Xj son i.i.d. se tiene,
Var [X (n)] =
Var ( X j )
n
=
Var ( X (j1) ) + Var ( X (j 2 ) ) + 2Cov( X (j1) , X (j 2) )
4n
Si las dos ejecuciones entre pares se hubiesen hecho independientemente, entonces Cov ( X (j1) , X (j 2 ) ) = 0. De todas maneras si se desea inducir una correlación negativa entre Xj(1) y Xj(2), entonces Cov ( X (j1) , X (j 2 ) ) < 0, lo cual reduce Var[ X ( n )] , que
es el objetivo.
Este método puede ser difícil de aplicar en modelos complejos. Además, no funciona siempre, e incluso puede incrementar la varianza, por lo que no puede ser usado sistemáticamente.
2.3
Técnicas paralelas para acelerar simulaciones
2.3.1 Introducción
Uno de los importantes inconvenientes de la simulación discreta por eventos es el
coste temporal de ejecución de los modelos. Este paradigma permite modelar todo
tipo de sistemas. En particular, es una herramienta imprescindible en el área del desarrollo de sistemas hardware y software, que está evolucionando mucho en la actualidad con diseños cada vez más complejos. Esta complejidad se traduce en modelos
con un alto coste de evaluación, lo que obliga a intentar reducir este coste desde dos
frentes: la mejora de las técnicas de análisis estadístico y la mejora de la velocidad de
ejecución de los modelos.
Este apartado pretende analizar y resumir las características de las opciones que
permiten acelerar la velocidad de ejecución de los modelos de simulación. En principio hay cinco aproximaciones posibles:
a) Descomponer el modelo en submodelos o subprocesos menores que puedan
ejecutarse concurrentemente en un grupo de máquinas.
b) Ejecución de réplicas del mismo modelo en diferentes máquinas para poder
generar más muestras estadísticas en menos tiempo (paralelismo estadístico).
42
Estudio de las técnicas de aceleración de simulaciones por eventos discretos
c) Utilizar un compilador paralelizante para encontrar paralelismo en un programa de simulación secuencial.
d) Colocar diferentes funcionalidades del simulador en procesadores separados.
Por ejemplo, el generador de números aleatorios, el procesamiento de la lista
de eventos, etc.
e) Mantener una lista global de eventos, y que cuando un procesador esté libre,
procese el siguiente evento de la lista.
Por supuesto una última alternativa es combinar alguna de las propuestas. Pero,
en principio, las dos primeras opciones son las que permiten obtener mejores resultados y las que se eligen para describir en más detalle en apartados separados. Como se
explicará en el apartado de conclusiones, tienen sus ventajas y sus inconvenientes, y
obligan a elegir una opción.
Si se elige la opción de utilizar un compilador paralelizante aplicado a un programa secuencial, el compilador intenta localizar secuencias de código que se pueden
hacer en paralelo y planificar entonces en procesadores separados. Esta aproximación
es transparente al usuario y se puede aplicar al cuerpo de un programa de simulación
existente. Sin embargo, tal aproximación ignora la estructura del problema y sólo
puede explotar una pequeña porción del paralelismo disponible.
Otra aproximación es diseñar las tareas de soporte para simulación de manera que
estén en procesadores separados. Por ejemplo, puede haber un procesador o conjunto
de procesadores dedicados a alguna de las siguientes funciones: generación de variables aleatorias, procesamiento del conjunto de eventos, recolección de estadísticas,
E/S, generación de gráficos, etc. La ventaja de esta aproximación es que evita problemas de bloqueo y es transparente al usuario. La desventaja es que no explota nada
del paralelismo del sistema modelado. Ejemplos en esta línea se pueden ver en
[Krishnamurcirthi et al 1985, Reese 1985, Sheppard et al 1988]. Como ejemplo destacable [Comfort y Gopal 1988] utiliza transputers para simular un sistema de colas
M/M/k/c. La máxima eficiencia que obtiene es alrededor del 60% en un sistema con 2
procesadores (host y un procesador de red), con el procesador de red haciendo la
generación de números aleatorios. Parece que la aproximación de Comfort para la
simulación distribuida proporciona un aceleración (speed-up) significativa cuando
sólo se utilizan pocos procesadores, pero la aceleración marginal cae rápidamente
según se añaden procesadores.
Técnicas paralelas para acelerar simulaciones
43
Otra aproximación es mantener una lista de eventos global, como en la simulación secuencial clásica, y cuando un procesador quede libre, hacer que procese el
evento que está planificado como el siguiente en tiempo de simulación. Se necesitan
protocolos para preservar la consistencia, pues el siguiente evento en la lista puede
ser afectado por eventos que se están procesando. Esta aproximación es particularmente adecuada para sistemas de memoria compartida, pues la lista de eventos puede
ser accedida por todos los procesadores. [Cota y Sargent 1988] describe un algoritmo
para determinar eventos “seguros”, por ejemplo, eventos que no dependen de otros
previos sin procesar. [Chandy 1988] introduce el concepto de conocimiento condicional e incondicional y describe una aproximación maestro/esclavo para distribuir
eventos. La aproximación de eventos distribuidos puede ser razonable cuando hay un
número pequeño de procesos y cuando hay una gran cantidad de información global
utilizada por los componentes del sistema.
2.3.2 Descomposición de modelos de simulación
En la simulación discreta por eventos distribuida, se pretende ejecutar un conjunto de eventos sobre una arquitectura paralela. Esta línea de investigación ha adquirido en los últimos años un gran impulso, debido a que la simulación secuencial
convencional de modelos medianamente complejos consume enormes cantidades de
tiempo. El propósito de la investigación en esta área es, reducir el tiempo de ejecución de los modelos e incrementar el tamaño potencial del problema.
En los últimos años se ha generado una gran cantidad de documentación sobre las
investigaciones en el tema, siendo fuentes destacables las actas del “Workshop on
Parallel and Distributed Simulation (PADS)”, las de “SCS Multiconference on Distributed Simulation” y las de “Winter Simulation Conference” que se celebran
anualmente. Una descripción de las técnicas se puede ver en [Reynolds 1988], [Fujimoto 1990], [Nicol y Fujimoto 1994], [Fujimoto 2000].
La plataforma hardware para las simulaciones distribuidas está formada, potencialmente, por una gran cantidad de procesadores interconectados mediante una red
de comunicaciones. En general, hay dos tipos de plataformas: las formadas por un
conjunto homogéneo de procesadores alojados en un mismo armario donde las comunicaciones entre procesadores son rápidas, y las formadas por máquinas heterogéneas distribuidas en un área mayor y donde los retardos de transmisión de la red de
comunicaciones son relativamente altos.
44
Estudio de las técnicas de aceleración de simulaciones por eventos discretos
¿Cómo se introduce el paralelismo?. En un modelo de simulación discreta por
eventos se asume de antemano que el sistema ejecutará acciones sólo en los puntos
donde deben producir cambios de estado durante el tiempo de simulación. Cuando se
produce un evento, el modelo de simulación pasa de un estado a otro, avanzado el
reloj de tiempo simulado global.
En la simulación paralela por eventos discretos, la aproximación más ampliamente trabajada consiste en descomponer el modelo en componentes débilmente
acoplados llamados procesos lógicos (LP, logic process) y poner cada uno o un grupos de estos componentes en un procesador donde se mantendrá una lista privada de
eventos. Cada LP tiene un reloj de simulación independiente llamado reloj local, que
muestra el tiempo hasta el que el proceso ha sido simulado. Si un LP necesita planificar un evento para otro LP en un procesador diferente, este otro será informado
mediante un mensaje con el tiempo de ocurrencia del evento. Esta aproximación tiene un gran potencial para explotar el paralelismo inherente a un modelo, pero requiere una cuidadosa sincronización porque los eventos ocurren a intervalos irregulares
de tiempo y no son sincronizados por un reloj global.
Lo dicho se puede ver de otra manera más concreta. En la simulación secuencial
el paradigma de una ejecución global es seleccionar el evento que tenga un tiempo de
ocurrencia más pequeño, Emin, de forma que ese evento será el siguiente en ser procesado. Esto es así porque si se selecciona otro evento que tenga un tiempo de ocurrencia mayor, Ex, podría pasar que Ex modificara las variables de estado usadas por el
evento Emin. Esto daría lugar a una simulación en la que un evento que se debe ejecutar instantes de tiempo después podría afectar a uno que se tenga que ejecutar antes. Esto es totalmente inaceptable, ya que produce claros errores.
Pásese ahora a considerar una paralelización de un programa de simulación. Para
tener un aumento de paralelismo se tienen que procesar eventos de forma concurrente sobre distintas máquinas. Si se considera la ejecución concurrente de dos
eventos El y E2, con tiempos de ocurrencia T1 y T2 respectivamente, con T1 < T2. Si
E1 tiene que escribir sobre una variable de estado que será leída por E2, entonces,
para asegurar que no se produzcan errores, E1 deberá ser ejecutado antes que E2. En
otras palabras, se debe asegurar el orden secuencial para que la simulación llevada a
cabo sea la correcta. La mayor parte de las estrategias de simulación distribuida pretenden evitar escenarios como el descrito.
Si se considera un modelo de un sistema físico, el cual puede ser visto como un
conjunto de procesos físicos que interactúan sobre varios instantes del tiempo de
Técnicas paralelas para acelerar simulaciones
45
simulación. La simulación se construye como un conjunto de procesos lógicos LP0,
LP1, ... LPn, uno por cada proceso físico. Todas los interacciones entre los procesos
físicos están modeladas por el tiempo de ocurrencia de los distintos eventos correspondientes a los procesos lógicos. Cada proceso lógico contiene una parte del estado
correspondiente al proceso físico que modela, por ejemplo, un reloj local (que denota
como el proceso está evolucionando). Para estas premisas se puede asegurar que no
habrá errores si se cumple la siguiente restricción:
Una simulación de eventos discretos, consiste en un conjunto de procesos lógicos
que interactúan exclusivamente para cambiar mensajes de tiempo de ocurrencia si y
solo si, cada LP procesa eventos con tiempo de ocurrencia en orden creciente.
Esta condición es suficiente, pero para garantizar que no se produzcan errores no
siempre es necesaria. No es necesaria debido a que dos eventos que estén en un mismo LP pueden ser independientes uno del otro, en ese caso procesarlos fuera de la
secuencia de tiempo de ocurrencia no tiene por qué producir error alguno.
Sin embargo, si se consideran dos eventos: El en un proceso lógico LP1, con
tiempo de ocurrencia de 10, y E2 con un tiempo de ocurrencia de 20. Si El planifica
un nuevo evento E3 para LP2, E3 contiene un tiempo de ocurrencia menor que 20,
entonces E3 podría afectar a E2, necesitando una ejecución secuencial para los tres
eventos. Si no se tiene ninguna información relativa a qué evento puede ser planificado por otros eventos, se está en la situación de concluir que el único evento que es
seguro para ser procesado es aquel que contiene el tiempo de ocurrencia más pequeño, lo que conduce a una ejecución secuencial.
Si se considera esta situación desde la perspectiva del sistema físico, la causa debe preceder siempre al efecto. Esta relación causa-efecto en un sistema físico obliga
al simulador a convertirlo en una secuencia. El mecanismo de simulación se debe
responsabilizar de que esta secuencia se realice y no se viole cuando un programa de
simulación se ejecuta sobre máquinas paralelas.
Operacionalmente se puede decidir si E1 puede o no ser ejecutado concurrentemente con E2. Pero, ¿cómo se puede conocer a priori si E1 afecta o no a E2 sin que E1
se llegue a procesar?. Esto es el dilema fundamental de la simulación distribuida. El
escenario en el que E1 afecta a E2 puede ser una compleja secuencia de eventos, y
cada evento depende del crítico tiempo de ocurrencia.
En este tipo de simulación es fundamental que el evento causa sea previo al
efecto. El dilema está en determinar que un evento afecta a otros sin realizar la si-
46
Estudio de las técnicas de aceleración de simulaciones por eventos discretos
mulación, lo cual es difícil y dependiente del modelo. En la simulación secuencial
esto no es un problema por tener una única lista ordenada de eventos y un único reloj
global. Como esto no es así en la simulación paralela y se tienen listas y relojes independientes, puede llegar a ocurrir que se procese el evento efecto antes que el evento
causa, lo que supone una violación de la lógica de la simulación, y que se denomina
error causal.
La metodología para aplicaciones de procesos lógicos requiere programación para particionar el estado de las variables del simulador en un conjunto disjunto de estados, y debe asegurar que no se simulan eventos que acceden directamente a más de
un estado.
La exclusión de variables compartidas puede o no ser un problema, dependiendo
de la aplicación. Por ejemplo, la exclusión de variables compartidas no es una restricción cuando se trata de realizar una simulación de una red de colas. En este caso,
es natural crear procesos lógicos por cada servidor. Debido a que el comportamiento
de un servidor es independiente del estado de otros servidores, la exclusión de variables compartidas no crea problema alguno.
Supóngase ahora que se considera, por ejemplo, una simulación del tráfico en una
ciudad, en el que los vehículos se desplazan por todo el territorio e interactúan. Una
aproximación a la modelización de este sistema será particionar el territorio en redes
bidimensionales, y utilizar estructuras de datos bidimensionales en las cuales cada
elemento de la matriz tiene información acerca del estado, por ejemplo, el número de
vehículos que residen en un sector de la red correspondiente. La información sobre la
proximidad espacial es también importante debido a la actividad común que realizan
grupos de vehículos próximos. La información que indica quién reside en cada sector
de la red debe ser compartida entre varias zonas. Un enfoque a la esencia de las variables compartidas, podría ser emular memoria compartida para la construcción de
procesos lógicos de cada sector de la red, y enviar "lecturas" y "escrituras" de mensajes de eventos para acceder a la información compartida. Sin embargo, a menudo
esta aproximación tiene pocas implementaciones, debido principalmente a dos motivos: el primero es la sobrecarga que conlleva el paso de mensajes y el segundo los
procesos de la red que contienen esta información pueden convertirse en el cuello de
botella. Incluso si la arquitectura de la máquina soporta memoria compartida, acceder
al estado de una variable que reside en otro proceso lógico es bastante caro, ya que el
proceso que contiene la variable generalmente se encuentra en un instante de tiempo
de la simulación; y se produce una sobrecarga para asegurar la sincronización con
Técnicas paralelas para acelerar simulaciones
47
otro simulador de eventos. Sin embargo, la operación equivalente en una simulación
secuencial es una simple referencia a memoria.
En simulación paralela hay dos aproximaciones básicas para evitar este problema:
métodos de sincronización conservativos y métodos optimistas. En la aproximación
conservativa se evitan los errores de causalidad determinando el tiempo seguro hasta
el que se pueden procesar eventos. En la aproximación optimista los errores son detectados y se emplea un mecanismo de vuelta atrás para recuperar un estado consistente. Existen métodos con soluciones intermedias que se pueden agrupar en híbridos
y adaptativos.
Los primeros mecanismos de simulación distribuida se han basado en la propuesta conservativa. El problema fundamental de los mecanismos conservativos es
determinar cuándo es seguro procesar un evento. Si un proceso contiene un evento
con tiempo de ocurrencia T1, y no hay otro con un tiempo de ocurrencia más pequeño, si este proceso puede determinar a priori que no va ha recibir más tarde otro
evento con tiempo de ocurrencia más pequeño que T1, entonces el proceso podrá con
seguridad procesar el evento E1 porque puede garantizar que no se va a violar la restricción antes indicada. Si el proceso contiene un evento que no es seguro de procesar
entonces se debe bloquear. Esto puede conducir a situaciones de interbloqueo si no
se tienen precauciones.
Los primeros algoritmos se proponen en [Chandy y Misra 1979] y [Bryant 1977],
y se trata de técnicas para evitar el interbloqueo. Otra técnica desarrollada por
[Chandy y Misra 1981] consiste en detectar y recuperarse de bloqueos. [Misra 1986]
propone alternativas menos costosas para detectar y recuperarse de interbloqueos
locales, (por ejemplo, situaciones donde únicamente una parte de la red ha sido bloqueada). Una propuesta alternativa para detectar cierto tipo de ciclos se puede ver en
[Liu y Tropper 1990]. Muchas investigaciones han propuesto algoritmos de sincronización [Ayani 1989, Nicol 1989] en los que se determina iterativamente cuáles de los
eventos son seguros de procesar y entonces se pueden procesar. La sincronización
mediante barreras se emplea para salvaguardar iteraciones, hay diferentes aproximaciones como las barreras centralizadas, barreras en árbol o las barreras de mariposa
[Nicol 1995]. Un algoritmo con un planteamiento diferente al resto es bounded lag
[Lubachevsky 1989b], que establece una ventana temporal conservativa en la que
sólo los eventos contenidos en la ventana son procesados.
En estos y otros algoritmos conservativos existe un concepto fundamental denominado lookahead que se refiere a la habilidad de predecir qué sucederá o, más im-
48
Estudio de las técnicas de aceleración de simulaciones por eventos discretos
portante, qué no sucederá en una simulación futura. Si un proceso está simulando con
un tiempo igual a clock y puede predecir con completa certeza todos los eventos que
se generarán en un tiempo de simulación clock + L, entonces el proceso indica que ha
habido un lookahead igual a L. Si el incremento del tiempo de ocurrencia mínimo no
es cero, es la forma más obvia de lookahead: un incremento mínimo de tiempo de
ocurrencia de M se traduce directamente en un "lookahead" de (al menos) M, debido
a que el proceso puede garantizar que no se crearán nuevos mensajes de eventos con
un tiempo de ocurrencia menor que clock + M.
Los mecanismos optimistas detectan y recuperan errores de causalidad, pero no
los evitan. En contraste con los mecanismos conservativos, las estrategias optimistas
no necesitan determinar cuándo es seguro procesar; en cambio, determinan cuándo se
ha producido un error e invocan a un procedimiento para recuperarse. Una ventaja de
esta aproximación es que permite al simulador explotar situaciones de paralelismo
donde podrían ocurrir errores causales, pero de hecho no ocurren. También se facilita
la creación dinámica de procesos.
El mecanismo de time warp, basado en el paradigma de tiempo virtual [Jefferson
1985], es el protocolo optimista más conocido. En este mecanismo el tiempo virtual
es sinónimo de tiempo de simulación. El algoritmo lazy cancellation [Gafni 1988] es
una optimización para reparar los daños causados por una computación incorrecta.
Otra técnica de optimización de time warp es lazy reevaluation o jump forward
[West 1988]. El algoritmo wolf calls [Madisetti et al. 1988] propone que un evento
extraviado provoque el envío inmediato de una orden de parada a los procesos lógicos para que no continúen procesando y se evite la propagación del error.
Existe un gran número de enfoques híbridos que se suelen basar en introducir características de los métodos optimistas a los mecanismos de simulación conservativos. [Lubachevsky et al. 1989] propone un algoritmo basado en bounded lag que se
llama filtered rollbacks. En [Dickens y Reynolds 1990] se propone un algoritmo
aplicable a las técnicas conservativas denominado local roll-backs. El algoritmo
breathing time buckets [Steinman 1991] utiliza una combinación de procesamiento
síncrono con barreras, ventanas temporales y local roll-back.
Existen muchos más algoritmos híbridos y adaptativos y consideraciones de los
anteriores que no se han comentado por no haber lugar en el presente trabajo. [Fujimoto 2000] y [Zarei 2000] contienen abundantes referencias para poder conocerlos.
Técnicas paralelas para acelerar simulaciones
49
2.3.2.1
Entornos disponibles
Hay bastantes entornos disponibles para desarrollar modelos de simulación paralelos. La Tabla 2-2 resume las características de algunas de las herramientas disponibles. No se pretende profundizar en las características de cada herramienta ya que, en
definitiva, este no es el camino a seguir en este trabajo. Algunos de ellos son resultado de la implementación de la propuesta de un grupo de investigación. Un ejemplo
de entorno de propósito general de esta naturaleza es Masie.
A pesar de la dificultad de la aplicación de estas técnicas, su rendimiento ha hecho que algunos de los entornos se hayan desarrollado específicamente para resolver
un tipo de problemas. Por ejemplo, TWOS (Time Warp Operating System) [Rich y
Michelsen 1991] se ha desarrollado para soportar el desarrollo de simulaciones paralelas de batallas.
PORTS [Ghosh et al. 1994] es interesante porque ofrece ejecución sin riesgos para entornos de tiempo real porque posee propiedades favorables para predecir tiempos de ejecución de simulaciones.
Las herramientas paralelas disponibles suelen estar lejos de las herramientas secuenciales comerciales, aunque hay entornos como UPS (Utilitarian Parallel Simulator) [Nicol y Heidelberger 1996] que pretende extender el paralelismo a una herramienta comercial secuencial como es CSIM [CSIM 1998].
Nombre
Protocolo
Programación
Mapeado
Estadística
Estructurada
Manual
Sí
Estructurada
Manual
Sí
Objetos
Manual
Sí
Objetos
Manual
No
Varios
Punto de vista
Procesos/
Eventos
Procesos/
Eventos
Procesos/
Eventos
Procesos/
Eventos
Procesos
Especificación
Sí
CPSim
Conservativo
Eventos
Estructurada
Sí
[GTU 1994]
GTW
Optimista
Eventos
Estructurada
Manual
Manual y
automático
Manual
[Wonnacott y
Bruce 1995]
[Preiss 1989]
Sí
ParaSol
Optimista
Procesos
Objetos
Manual
No
PORTS
PSK
SimKit
SpaDES
SPEEDES
Optimista
Optimista
Optimista
Optimista
Optimista
[Das et al. 1994]
[Edward et al.
1995]
[Ghosh et al. 1994]
Eventos
Eventos
Procesos
Eventos
Objetos
Objetos
Objetos
Objetos
No
No
No
No
TWOS
Optimista
Eventos
Objetos
WARPED
Optimista
Eventos
Objetos
Automático
Manual
Manual
Manual
Manual y
automático
Manual
Maisie
Varios
Parsec
Varios
Moose
Varios
APPOSTLE
YADDES
Optimista
Referencia
[Bagrodia y Lio
1995]
Actualización de
Maisie
[Teo et al. 1996]
[Steinman 1992]
Sí
No
Tabla 2-2. Algunos entornos para simulación paralela por eventos discretos.
50
Estudio de las técnicas de aceleración de simulaciones por eventos discretos
2.3.2.2
Crítica a la simulación paralela por eventos
El grado en el que los procesos pueden predecir los futuros eventos juegan un rol
crítico en la realización de la estrategia conservativa. Actualmente, más importante
que predecir eventos futuros es el hecho de que un proceso con lookahead de L pueda garantizar que ningún evento de los que él puede predecir, serán generados con un
tiempo clock + L. Con esto se asegura que otros procesos que ya han recibido mensajes de eventos, los puedan procesar de forma segura.
La desventaja más obvia del mecanismo conservativo es que no puede explotar al
máximo el paralelismo disponible en la simulación de una aplicación. Si se tiene un
evento EA que puede afectar directamente o indirectamente a otro EB empleando los
métodos conservativos, los eventos EA y EB se ejecutarán secuencialmente. Si la simulación es tal que el evento EA raramente afecta a EB, estos dos eventos podrían
haber sido procesados concurrentemente la mayor parte del tiempo. En general, si se
encuentra en el peor caso para determinar cuándo es seguro procesar, el enfoque conservativo será generalmente pesimista y forzará a una ejecución secuencial cuando
ello no es necesario. Si no se tiene en cuenta el lookahead, para el evento que tenga
en una simulación el tiempo de ocurrencia más pequeño, la dependencia que tenga
con otro evento puede afectar mucho, forzando a una ejecución secuencial.
La mayoría de los esquemas conservativos requieren por parte del programador
un conocimiento concienzudo sobre el comportamiento de los procesos lógicos para
poder suministrar un protocolo de sincronización. Los algoritmos de detección y recuperación del interbloqueo son quizás los únicos enfoques conservativos que no
requieren explícitamente tales conocimientos por parte del usuario. Información como el incremento del tiempo de servicio mínimo o la garantía de que ciertos eventos
no afecten a otros (por ejemplo, la llegada de un evento a una red de colas puede no
afectar a la tarea que actualmente está siendo servida) puede ser difícil de determinar
cuando se tienen simulaciones complejas.
Realizar un programa de simulación paralela por eventos conservativo requerirá
seguir las guías que se aplican a la programación paralela para desarrollar el código
de la simulación paralela: seleccionar la apropiada granularidad y maximizar el paralelismo. Pero, además, el programador requiere estar bastante familiarizado con el
mecanismo de sincronización y con el programa de la aplicación para maximizar su
efectividad que, a menudo, producirá como resultado un código frágil que será difícil
de modificar y mantener. Una solución a este problema es definir o utilizar un len-
Técnicas paralelas para acelerar simulaciones
51
guaje de simulación donde la información esencial necesaria para el mecanismo de
simulación pueda ser extraída automáticamente desde las primitivas de simulación.
En cuanto al rendimiento de las estrategias conservativas, el grado en el que los
procesos pueden mirar adelante y predecir eventos futuros (lookahead) juega un papel fundamental. Actualmente, lo que es más importante que predecir eventos futuros
es el hecho de que un proceso con lookahead L pueda garantizar que ningún evento,
a excepción de los que pueda predecir, se generará a partir de reloj+L. Esto permite a
otros procesos tratar mensajes de eventos pendientes que ya se han recibido.
Programar adecuadamente el modelo de simulación para explotar el lookahead
puede mejorar el rendimiento drásticamente. En [Fujimoto 1990] se puede ver el
rendimiento de un modelo de servidor central realizado con el algoritmo de detección
y recuperación de bloqueos ejecutado sobre un multiprocesador BBN Butterfly y el
modelo particionado en tres LP. Cuando el número de clientes aumenta en el modelo,
se alcanza una aceleración cercana al ideal de 3. Este buen comportamiento se debe
al buen aprovechamiento del lookahead y a que el modelo es ideal para explotarlo,
cosa que no sucede en muchos modelos.
Mediante el uso de cargas sintéticas, en [Fujimoto 1989] se caracteriza el lookahead cuantitativamente y se presentan resultados empíricos para demostrar la importancia de este factor para obtener buen rendimiento. En función del lookahead, las
aceleraciones (speed-up) para estas cargas sintéticas fueron desde tan lento como la
ejecución secuencial hasta cercano al ideal (N en N procesadores) sobre 16 procesadores en un BBN Butterfly. Incluso se muestra que el mal rendimiento obtenido en
un artículo se solventa reprogramando adecuadamente el lookahead.
En general, los mecanismos conservativos necesitan predecir lo que no va a ocurrir para funcionar satisfactoriamente. La explotación efectiva del lookahead parece
ser la clave para obtener un buen rendimiento con estos métodos.
Los métodos optimistas basados en time warp han demostrado buenos resultados
de rendimiento, por lo que son una buena solución en problemas reales. Un problema
de este protocolo es el consumo de memoria, que intentan controlar propuestas posteriores, de las cuales se han descrito los fundamentos de algunas.
La experiencia práctica con la simulación paralela optimista mostrada en diversos
artículos indica que es posible que el optimismo desmedido se puede controlar y que
se pueden diseñar entornos de simulación paralelos eficientes.
52
Estudio de las técnicas de aceleración de simulaciones por eventos discretos
Se observa que en la mayor parte de los problemas prácticos que tienen algún interés, el lookahead que aparece es esencial para obtener una mayor rapidez empleando algoritmos conservativos. ¿Sucede de igual forma en algoritmos optimistas? La
evidencia empírica indica que el rendimiento de los algoritmos optimistas mejoran el
lookahead, pero esto no es un prerrequisito para obtener un buen rendimiento.
El problema más serio del mecanismo de time warp es que necesita periódicamente salvar el estado de cada proceso lógico, lo que conlleva tener una sobrecarga
en el rendimiento, incluso si se tiene un vector de estado pequeño. La sobrecarga de
salvar el estado limita la efectividad del time warp a aplicaciones donde la cantidad
de computación requerida para procesar un evento sea más significativo que el coste
de salvar el estado del vector.
Se han desarrollado algunos trabajos para crear modelos analíticos que permiten
estudiar el comportamiento del time warp [Wagner y Lazowska 1989]. Todos los
modelos existentes requieren de asunciones simplificadoras. Por ejemplo, los costes
de la sobrecarga de la comunicación y los costes de salvar el estado a menudo se
asume que son cero. Sin embargo, empleando dichos modelos se obtienen conocimientos para poder implementar time warp. Una de las asunciones delicada de estos
modelos es el coste de realizar la vuelta atrás en un proceso lógico; se puede obtener
resultados radicalmente diferentes dependiendo de lo que se haya asumido. La conclusión es que dependiendo de dichas asunciones relacionadas con el coste del
rollback, no hay ningún tiempo de ejecución óptimo, ya que se pueden obtener tiempos que son arbitrariamente mayores que los obtenidos en una computación secuencial.
En cuanto al rendimiento del algoritmo optimista time warp y algunas de sus variantes se han obtenido resultados satisfactorios con problemas reales. Aceleraciones
importantes se han obtenido en escenarios de guerra, redes de comunicaciones, sistemas biológicos y simulaciones de fenómenos físicos. También ha mostrado resultados prometedores en simulaciones productor-consumidor y simulación de hardware
digital.
En el caso de los algoritmos conservativos, el lookahead es esencial para obtener
aceleraciones significativas. Las evidencias empíricas indican que mientras el lookahead mejora el rendimiento de los algoritmos optimistas, no es un prerrequisito
para obtener un buen rendimiento. En [Fujimoto 2000] se describe un claro ejemplo.
En [Loucks y Preiss 1990] se demuestra que se pueden obtener mejoras del rendi-
Técnicas paralelas para acelerar simulaciones
53
miento significativas si se emplean conocimientos específicos de la aplicación para
optimizar la ejecución.
Se han hecho estudios comparativos del rendimiento de time warp, evitación de
bloqueo, y, detección de bloqueo y recuperación sobre diferentes modelos de colas.
El rendimiento de time warp ha sido comparable o muy superior al de los algoritmos
conservativos.
Los diferentes resultados parecen soportar lo que proclaman los que defienden el
optimismo: que time warp puede explotar transparentemente cualquier paralelismo
disponible en el modelo de simulación sin necesidad de información específica del
usuario.
Aunque los resultados son muy esperanzadores, es necesario destacar que la sobrecarga debida a la salvaguarda del estado puede degradar notablemente el rendimiento. Se debe asegurar que la granularidad de la computación del evento es significativamente mayor que la sobrecarga de salvaguardar el estado para conseguir un
buen rendimiento.
Los defensores del enfoque conservativo indican que time warp es más complejo
de implementar, sobre todo en los aspectos de manipulación de errores. Los implementadores pueden cometer errores de diseño aparentemente pequeños que pueden
dar lugar a un rendimiento extremadamente pobre. Además, la depuración puede ser
muy difícil debido a los complejos escenarios de vuelta atrás. En definitiva, para implementar modelos "time warp" es necesaria experiencia y buena suerte.
Los años de investigación en los protocolos de sincronización no revelan un claro
vencedor para todas las aplicaciones. El hecho queda en que el protocolo ideal para
cada situación es dependiente del problema. La Tabla 2-3, extraída de [Fujimoto
2000], da unas líneas generales para decidir que aproximación es adecuada a cada
caso.
Aspecto
Sobrecarga
Paralelismo
Protocolo conservativo
Protocolo optimista
Entornos de ejecución complejos que
Entorno de ejecución sencillo.
requieren salvaguarda del estado,
Puede necesitar mecanismos esperecolección de memoria no usada.
ciales para topologías de LP dináMecanismos especiales para gestión
micas. Menor sobrecarga si hay un
de memoria dinámica, E/S y errores
buen lookahead.
de ejecución.
Limitado por escenario corresponLimitado por las dependencias acdiente al peor caso. Requiere un
tuales más que por las dependencias
buen lookahead para la ejecución
potenciales.
concurrente y la escalabilidad.
54
Estudio de las técnicas de aceleración de simulaciones por eventos discretos
Desarrollo de la
aplicación
Potencialmente complejo. Código
frágil para explotar el lookahead.
Más robusto. Menos dependiente del
lookahead. Mayor transparencia de
los métodos de sincronización.
Adaptación de
simulaciones
existentes
Inclusión directa en federaciones.
Requiere mecanismos adicionales
para soportar la vuelta atrás.
Tabla 2-3. Comparación de los métodos de sincronización conservativos y optimistas.
2.3.3 Réplicas paralelas de modelos de simulación
Una aproximación sencilla y obvia para aprovechar el potencial de varios computadores o de un multiprocesador consiste en ejecutar réplicas del modelo de simulación en cada procesador y promediar al final de la ejecución. En principio, esta
aproximación es extremadamente eficiente, al no necesitarse coordinación entre procesadores hasta el final de la simulación, lo que supone una sobrecarga apenas perceptible.
Un primer paso en este sentido es hacer ejecuciones independientes con parámetros distintos. [Biles et al. 1985] considera la posibilidad de asignar experimentos de
simulación a una red de computadores. Se usa una configuración jerárquica de procesadores en la que cada procesador del nivel inferior utiliza el mismo modelo con diferentes parámetros. Los resultados pueden ser usados para optimización o cribado
de factores cuando se hace el análisis en los procesadores de niveles superiores. Sin
embargo, ninguna simulación se ejecuta más rápido, y las decisiones sobre todos los
parámetros de todas las ejecuciones a realizar en paralelo deben hacerse antes de que
cualquier procesamiento tenga lugar. Por tanto, no permite una toma de decisiones
interactiva, en la que los parámetros de una ejecución depende de los resultados de
una previa. La toma de decisión secuencial es importante para optimización. Además, a menudo es mejor pocas ejecuciones muy rápidas que muchas lentas para la
toma de decisiones en tiempo real.
En nuestro contexto interesan las técnicas de réplicas que permitan disminuir el
tiempo de ejecución de una simulación, por lo que la propuesta anterior sólo puede
ser un complemento. Prácticamente todos los métodos secuenciales de análisis de la
salida de simulaciones se pueden adaptar, con mayor o menor éxito, a un entorno
paralelo. Todos ellos se basan en la posibilidad de generar más muestras estadísticas
por unidad de tiempo, con lo que, en principio, se reduce el tiempo de simulación
necesario. A continuación se describen las implementaciones paralelas de algunos de
los métodos de análisis de la salida.
Técnicas paralelas para acelerar simulaciones
55
Las simulaciones de los modelos medianamente complejos suelen ser largas y,
como los nuevos computadores van teniendo capacidades de procesamiento y de
memoria mayores, los modelos completos caben en un computador por lo que parece
viable seguir la línea de las réplicas en paralelo.
2.3.3.1
Réplicas independientes terminantes
Este método se aplica a simulaciones terminantes. Por ejemplo, tiempo necesario
en atender a 10 personas en una cola. Se fundamentan en lanzar simulaciones independientes en un grupo de máquinas e ir promediando resultados hasta que se alcancen las condiciones de finalización.
Esta aproximación se estudia, desde el punto de vista de la calidad estadística, en
[Glynn y Heidelberger 1991] cuando hay una restricción en el tiempo de terminación. Intuitivamente, se puede usar un conjunto paralelo de procesadores por un
tiempo t, lanzar réplicas en ellos y promediar los resultados observados al final de la
ejecución. Si se dispone de un conjunto grande de procesadores, se podría hacer t
pequeño, quizá ejecutando pocas simulaciones en cada procesador. Por tanto, se puede obtener estimadores muy precisos en un periodo muy corto de tiempo. Sin embargo, hay una serie de importantes problemas estadísticos con esta aproximación, sobre
todo si se usan muchos procesadores. Estos problemas se deben principalmente al
sesgo que implica la limitación de tiempo t. La primera pregunta que se plantea en el
artículo es qué hacer con las simulaciones que se están ejecutando cuando se alcanza
t. La solución menos arriesgada consiste en dejar que terminen antes de promediar,
pero en el caso de que no se pueda admitir esta condición, se ofrecen una serie de
políticas alternativas para intentar reducir el riesgo, siendo menos arriesgado aumentar t que aumentar el número de procesadores.
2.3.3.2
Réplicas independientes en régimen permanente
En [Glynn y Heidelberger 1992] se consideran los efectos de diferentes estrategias de borrado del transitorio inicial en réplicas en paralelo para la estimación en
régimen permanente, determinándose los ritmos de crecimiento relativos críticos
para: el número de procesadores (réplicas), la longitud de cada réplica, y la longitud
del borrado. Se consideran dos aproximaciones, una basada en el tiempo de simulación y otra basada en el tiempo de procesador. Se resumen a continuación los resultados que interesan a este trabajo.
56
Estudio de las técnicas de aceleración de simulaciones por eventos discretos
Dado p el número de procesadores y t(p) la longitud de cada réplica, el propósito
es estimar α como la media en régimen permanente de un proceso X. A partir de las
asunciones descritas en el artículo se tiene,
T
1
X ( s )ds ⇒ α
T ∫0
1
C (T ) ⇒ λ−1
T
cuando T→∞, donde ⇒ denota convergencia fuerte hacia una distribución y C(T)
representa el tiempo de CPU acumulado en función de T, y s es tiempo simulado. λ-1
se puede interpretar como el promedio de tiempo de CPU que se invierte por unidad
de tiempo simulado.
La primera aproximación estudiada consiste en simular el proceso X hasta un
tiempo t en cada uno de los p procesadores disponibles. Se demuestra para una generalidad de procesos que,
σ1
D
α s ( p, t ( p )) ≈
pt ( p )
N (0,1)
D
donde ≈ denota aproximadamente igual en distribución y α s ( p, t ( p )) es el promedio de la observaciones de los p procesadores en donde se simula durante t(p).
Para un procesador se tiene,
D
α s (1, t ) ≈
σ1
t
N (0,1)
lo que significa un speed-up p que debiera ser el máximo obtenible. Por ejemplo,
D
α s (1, pt ( p)) ≈ α s ( p, t ( p))
Este teorema dado en el artículo se debe interpretar suponiendo que el horizonte
temporal t=t(p) en cada procesador p debería satisfacer que t>>p para que el algoritmo paralelo obtenga la máxima eficacia.
En el mismo artículo se enuncia otro teorema que considera la situación en la que
se elimina el transitorio inicial. Así, si βs(p)/t(p) es la fracción del total de tiempo
Técnicas paralelas para acelerar simulaciones
57
simulado que se borra y esta cantidad es asintóticamente una inapreciable fracción
del tiempo, entonces se llega a que,
pt ( p) (α 1 ( p) − α ) ⇒ σ 1 N (0,1) según p→∞
Dicho teorema muestra que eliminando un modesto transitorio inicial se puede
reducir la longitud del horizonte temporal significativamente sin afectar al factor p de
speed-up. En particular, si t(p)=pr(r>0), el speed-up p se retiene con tal que
βs(p)=pε(0<ε<r). Por tanto, cuando se implementa adecuadamente el borrado del
transitorio inicial, las p veces en que se incrementa la eficiencia se mantiene para
horizontes temporales que crecen, esencialmente, arbitrariamente lentos con respecto
a p. Un resultado similar se deriva si el sesgo decae rápidamente de forma polinómica.
Otro teorema interesante que se enuncia se refiere a la eliminación de una fracción fija del tamaño de la simulación y, por tanto, la fracción no es despreciable. Esta
regla, aunque es una implementación razonable, tiene un coste en términos de mayor
variabilidad.
Suponiendo que el sesgo b(t)→0 exponencialmente rápido, si βs(p)=βt(p)
(0<β<1) y t(p)=pr(r>0) entonces
pt ( p) (α s ( p) − α ) ⇒ (1 − β ) − (1 / 2 ) σ 1 N (0,1) según p→∞
Igual que para el resultado del teorema anterior, éste propone que el horizonte
temporal sobre el que se consigue el incremento p en eficiencia es ampliado considerablemente utilizando borrado inicial de valores. Sin embargo, debido a que se elimina una fracción fija del total de observaciones, el coste que se paga es que la varianza
es asintóticamente incrementada por un factor de (1-β)-1. Por otra parte, para β=0,1,
el incremento en la varianza es de solo un 11% aproximadamente, con lo que el coste
que implica tal procedimiento es bastante modesto.
Según el artículo, el inconveniente de usar el tiempo de simulación para controlar
el tamaño de la réplica implica que, si los procesadores se utilizan en exclusiva para
este trabajo, el tiempo de procesador sea distinto, siendo la duración de la simulación, el de la réplica con un mayor tiempo de procesador, y quedando flecos de tiempo de procesador libres en el resto de procesadores que pueden llegar a ser importantes. Todo ello lleva a proponer estimadores basados en el tiempo de procesador,
destacando los autores un estimador con borrado inicial que es el que, según los auto-
58
Estudio de las técnicas de aceleración de simulaciones por eventos discretos
res, es el más adecuado del artículo. El razonamiento que se aplica a estos estimadores permite su aplicación a otros tipos de medida del tiempo, por ejemplo, tiempo
real, número total de eventos procesados, número total de eventos de un cierto tipo
procesados, etc.
Los dos estimadores más adecuados utilizan un borrado de tamaño fijo del transitorio inicial, de igual forma que en la propuesta anterior, pero medido en tiempo de
computación. El primer estimador es,
α T ( p, c ) ≡
1 p Yi (c)
∑
p i =1 τ i (c)
donde Yi(c) es la estimación de la réplica i, y τi(c) es el tiempo de réplica que
queda tras eliminar un tamaño fijo del comienzo de la réplica.
El segundo estimador es,
p
α R ( p, c) ≡
∑ Y (c )
i
i =1
p
∑ τ (c )
=
Y (c )
τ (c )
i
i =1
donde Y (c) = (1 / p)∑i =1 Yi (c) y τ (c) = (1 / p)∑i =1τ i (c) . Obsérvese que se trata
p
p
de un estimador de la relación entre dos variables, como el que se usa para el método
de las regeneraciones.
La cobertura de estos dos estimadores es evaluada experimentalmente con varios
modelos en [Gynn y Heidelberger 1992b]. Para el cálculo de los intervalos de confianza se emplea la distribución t-Student para αT(p,c) y la distribución normal Ζ
para αR(p,c), llegándose a la conclusión de que αR(p,c) es muy superior a αT(p,c)
cuando el número de procesadores crece (se emplean de 8 a 512 procesadores).
La problemática de αT(p,c) es que contiene dos fuentes de sesgo que tienen el
mismo orden de magnitud: el sesgo de inicialización y el sesgo de la relación entre
dos variables, pues el denominador también es una variable aleatoria. Mientras un
adecuado borrado del comienzo de cada simulación elimina el primer sesgo, el segundo no es afectado. Cuando se emplean muchos procesadores, este sesgo da lugar
a una estimación sesgada y a la correspondiente pérdida de cobertura del intervalo de
confianza. Ello se manifiesta en los experimentos realizados con una cantidad moderada de procesadores (entre 32 y 64).
Técnicas paralelas para acelerar simulaciones
59
El efecto de usar αR(p,c) en lugar de αT(p,c) permite utilizar muchos procesadores durante un tiempo de computación dado o hacer muchas ejecuciones cortas dado
un número de procesadores.
Los resultados del artículo también tienen sus implicaciones en el método de las
réplicas con un solo procesador. En este método, la longitud de la réplica se determina a menudo ya sea por el número total de eventos, un tiempo de simulación, un
tiempo de computación, o el número de eventos de un tipo particular (por ejemplo, el
número de salidas de una cola). Cuando se estiman varios parámetros en un modelo
de colas habrá casi siempre parámetros que son estimados en distintas escalas temporales. Por tanto, el denominador de las estimaciones de algunos parámetros serán
aleatorios, dando lugar a sesgos por ratios. Por ejemplo, si el tiempo de simulación es
utilizado para controlar la longitud de la réplica, la estimación del tiempo de respuesta tendrá denominador aleatorio (el número de clientes que salen de la cola). Por
otra parte, si se utiliza la contabilización de eventos para controlar la longitud de la
réplica, entonces la estimación de las longitudes de cola tendrán denominador aleatorio (el tiempo de simulación). Por tanto, el sesgo por ratios puede ser un problema,
incluso en simulaciones monoprocesador. Sin embargo, suele haber pocos motivos
para correr muchas réplicas cortas en un solo procesador, pues ya sea usando el método lotes (batch-means) o ejecutando pocas réplicas largas, será menos sensible al
sesgo por inicialización.
En [Lin 1994] se estudia el rendimiento de las políticas de planificación para réplicas de tamaño fijo ejecutadas en paralelo. Dicho trabajo es interesante porque estas políticas pueden afectar significativamente a la complejidad temporal y a las propiedades estadísticas del método. El estudio pretende utilizar procesadores compartidos por otras aplicaciones y donde la carga puede cambiar dinámicamente. Las políticas inicialmente descritas son:
•
FRP (fixed number of replications per processor). Suponiendo que se desean
ejecutar N=MP réplicas en P procesadores, entonces se lanzan M en cada
uno. Los problemas básicos de esta aproximación estática son que se debe
calcular N antes de empezar a simular (lo cual es un inconveniente si se pretende calcular el error según van llegando resultados de simulaciones), y los
procesadores que quedan libres no pueden usarse para ejecutar réplicas asignadas a otros procesadores.
60
Estudio de las técnicas de aceleración de simulaciones por eventos discretos
•
FNC (first N replications completed). Política dinámica sencilla que lanza réplicas en los procesadores y, cuando un procesador termina, se le asigna una
nueva réplica. La condición de fin de la simulación se reevalúa con cada nueva llegada de un resultado de una réplica, y cuando la condición se satisface,
se finalizan el resto de réplicas en marcha. Este esquema tiende a recoger los
resultados de las réplicas con menores tiempos de ejecución, que pueden estar
correlados con el valor de salida obtenido, pudiendo llevar a un resultado incorrecto en la estimación como se comenta en [Heidelberger 1988] y se obtine en un resultado experimental desarrollado en el artículo ahora comentado.
•
FNI (first N replications initiated) es una política dinámica propuesta en
[Bhavsar e Isaac 1987] y [Heidelberger 1988] que pretende evitar los problemas de sesgo de políticas como la anterior, al intentar que los resultados recogidos sean independientes del tiempo de ejecución. En este caso las réplicas
se numeran (por ejemplo en numeración ascendente) y los resultados de una
réplica j que haya terminado no se pueden utilizar hasta que hayan llegado los
i<j resultados de réplicas previas.
Debido a los problemas de las otras propuestas, se estudia un entorno para FNI
donde tienen especial importancia los aspectos de tolerancia a fallos y equilibrado de
carga, pues se pretende trabajar con redes de estaciones de trabajo compartidas y
heterogéneas. El entorno es capaz de seleccionar estaciones con poca carga y realizar
una monitorización de la misma de manera que, en caso de cargase una estación,
migrar el trabajo a otra. También es capaz de detectar las estaciones que fallan y rearrancar los trabajos en otra.
Desde este punto de vista, se hace un estudio analítico de los efectos de la carga y
la tolerancia a fallos concluyéndose que es necesario limitar los recursos computacionales para esta técnica por dos razones: primero, ejecutar una réplica en una estación lenta puede incrementar mucho la carga que afecta a otras aplicaciones, y segundo, añadir una estación lenta extra puede aumentar la complejidad temporal del
método.
Para limitar el uso de los recursos computacionales se emplea un umbral de carga; así, seleccionando un umbral de carga pequeño, el rendimiento del método puede
mejorar si:
1. El número total de réplicas a ejecutar es pequeño.
2. El nivel de carga no cambia con frecuencia.
Técnicas paralelas para acelerar simulaciones
61
3. Los tiempos de ejecución en una situación de carga alta son mucho mayores
que en situaciones de carga baja.
4. Una estación está en una situación de baja carga más a menudo que en alta
carga.
En un experimento realizado, cuando se hace control de carga (no se usan estaciones con carga superior al 70%) se obtiene un 30% más de rendimiento que sin
control de carga. Estos son resultados particulares para el experimento hecho, pero
parecen indicar el beneficio de usar el control de carga.
2.3.3.3
Regeneración
También en [Glynn y Heidelberger 1991] se estudian las simulaciones regenerativas desde este mismo punto de vista. Ya en un trabajo previo ([Heidelberger 1988])
se mostraban los riesgos de la aproximación paralela, donde algunos estimadores
podían llevar a la convergencia hacia el valor incorrecto con gran probabilidad, sobre
todo si se incrementa el número de procesadores. Así se proponen otros estimadores
con convergencia más correcta, que relajan la penalización temporal al permitir que
todas o parte de las regeneraciones terminen.
2.3.3.4
Lotes (batch-means)
Otra posibilidad es utilizar la técnica de lotes (batch-means) en paralelo, ya sea el
estándar [Law y Carson 1979] o con lotes solapantes [Meketon y Schmeiser 1984].
En este método se deben tomar bastantes observaciones de régimen permanente
en cada réplica para determinar un buen tamaño de lote y este proceso se deberá realizar secuencialmente en cada réplica. Estas observaciones de régimen permanente se
deberán recoger después del transitorio inicial, por lo que será necesario detectarlo y
eliminarlo también en cada réplica.
Basándose en los resultados obtenidos en [Mota et al. 2000c], la versión con lotes
solapantes parece tener una buena aplicabilidad en este tipo de entorno.
2.3.3.5
Espectral
Otra posibilidad es utilizar el método espectral [Heidelberger y Welch 1981] en
paralelo. En [Raatikainen 1994], los resultados indican una disminución de la cobertura en la versión paralela propuesta aplicada a un buen conjunto de modelos de
prueba, sobre todo cuando el error relativo deseado es grande (20% en un experimento). Una crítica al artículo es el hecho de que cada experimento se repite sólo 100
62
Estudio de las técnicas de aceleración de simulaciones por eventos discretos
veces para el análisis de cobertura, por lo que el estudio se debe tomar con reserva.
En cualquier caso, se recomienda el método sólo cuando se usen pocos procesadores
o se quiera un error relativo pequeño (por ejemplo, del 5%). Por los resultados se
piensa que el efecto se debe a que una cantidad de procesadores no muy pequeña y
un error relativo grande no fuerza a la simulación a continuar hasta que se cumplen
las condiciones de la distribución t-Student aplicada. Siempre en los casos en que se
requiere un nivel de confianza alto (por ejemplo, del 95%) y un error relativo pequeño (por ejemplo, del 5%) algunos modelos alcanzan una buena aceleración (speedup) cercana a la lineal (cuando se eliminan los tiempos de gestión) ofreciendo una
eficiencia del 85% para 5 procesadores que va disminuyendo según se aumenta el
número de procesadores.
En [Pawlikowski 1990] y [Yau 1999] se muestra otra implementación de [Heidelberger y Welch 1981] donde se presentan aceleraciones lineales y se hacen pruebas con hasta 8 procesadores. En este caso la cobertura es muy buena, posiblemente
porque se tiene especial precaución en eliminar el sesgo inicial aplicando un filtrado
doble basado en heurísticos [Gafarian et al. 1978] y [Schruben et al. 1983] y eliminando el sesgo por ratio según [Heidelberger 1988].
2.3.3.6
Entornos disponibles
A pesar de lo interesante de esta aproximación es destacable la falta de trabajo y
de entornos desarrollados en esta área. Algunos paquetes como QNAP [QNAP 1994]
incorporan alguna de estas posibilidades, pero siempre en formas muy sencillas y
guiadas por el usuario.
Los más destacables son EcliPSe [Rego y Sunderam 1992, Knop et al. 1994b,
Knop et al. 1995] y AKAROA [Pawlikowski et al. 1994].
El entorno EcliPSe tiene como principal propósito beneficiarse de redes heterogéneas de computadores para permitir obtener grandes prestaciones en la ejecución
paralela de simulaciones estocásticas. Se diseña para poderlo aplicar a gran variedad
de arquitecturas de procesamiento paralelo y distribuido. Según los autores ha demostrado su viabilidad práctica en la ejecución basada en réplicas paralelas en simulaciones que usan la descomposición en dominios.
EcliPSe forma parte de un sistema denominado ACES que tiene la arquitectura
mostrada en la Figura 2 - 1.
Técnicas paralelas para acelerar simulaciones
63
El nivel Conch provee a los niveles superiores de un multiprocesador virtual con
unas bibliotecas potentes para comunicaciones entre procesadores. Ariadne es un
proceso ligero diseñado para proporcionar diversas construcciones concurrentes para
Conch, EcliPSe y Sol. EcliPSe añade a Conch la facilidad para diseñar e implementar
aplicaciones basadas en réplicas y en descomposición del dominio. El nivel Sol es
una biblioteca C++ que facilita la construcción de modelos de simulación diseñada
para soportar los puntos de vista orientados al modelado mediante procesamiento de
eventos y mediante procesos interactuando.
GenA UIF
Sol
EcliPSe
DisplA
Graphics Tool
Conch
Ariadne
Sistema operativo nativo
Figura 2 - 1. Arquitectura de ACES.
También se aportan dos herramientas: GenA es un interfaz de usuario para generar aplicaciones y DiplA que sirve para mostrar información de una aplicación en
ejecución.
En nuestro caso interesa EcliPSe, que puede usarse sobre una aplicación secuencial con mínimos cambios y dando lugar a una ejecución formada por procesos concurrentes donde unos procesos “generadores” son coordinados por uno o varios procesos “monitor”. Un programa EcliPSe contiene los siguientes componentes:
•
Código de computación: Es el código que es ejecutado por cada generador,
siendo el responsable de la mayoría del trabajo a realizar. Usualmente requiere datos de entrada y devuelve resultados al monitor.
•
Funciones de monitor: Ejecutadas por los procesos monitor. Un monitor es
responsable de coordinar los cálculos hechos por un conjunto de generadores,
recoger datos y, finalmente, terminar las computaciones.
•
Declaraciones: Cada tipo de dato a intercambiar entre generadores y monitores debe declararse. Estas declaraciones permiten a EcliPSe encargarse del
manejo de los datos contenidos.
64
Estudio de las técnicas de aceleración de simulaciones por eventos discretos
En el aspecto de interés para el presente trabajo cabe destacar que el método de
simulación paralelo aplicado es el de las réplicas de tamaño fijo, las réplicas terminantes o el método de las regeneraciones, proporcionando, en algunos casos, aceleraciones cercanas a la lineal con una gran cantidad de estaciones
El otro paquete interesante es AKAROA, que explota también la técnica de las
réplicas en paralelo, pero con una aproximación diferente a la anterior. También
puede utilizar estaciones heterogéneas para ejecutar simulaciones instrumentadas, de
manera que sean capaces de enviar información estadística a procesos colectores.
La comunicación entre los procesos se basa en una implementación similar a
RPC (Remote Procedure Call) basada en UDP (User Datagram Protocol) y donde se
procura que el intercambio de información sea independiente de la arquitectura. Ello
asegura una amplia portabilidad y adaptación a diferentes plataformas.
La técnica principal de análisis estadístico de la salida de este paquete es el método espectral según [Heidelberger y Welch 1981] adaptado a su ejecución paralela
[Pawlikowski et al. 1994].
Cada réplica es responsable, al comienzo de la simulación, de detectar el transitorio inicial utilizando un filtro doble basado en heurísticos [Gafarian et al. 1978] y las
pruebas propuestas en [Schruben et al. 1983]. Estos análisis se realizan a intervalos
preespecificados. Una vez superado el transitorio, se envía a intervalos fijos la información sobre la media y la varianza de las variables de salida de interés, calculándose la varianza mediante el método espectral. Cada réplica se ejecuta a la máxima
velocidad posible en su máquina, por lo que se producen diferentes cantidades de
muestras en cada una. El cálculo de la media global se realiza mediante una media
ponderada similar a la empleada en el método regenerativo para así evitar problemas
de sesgo por ratio, tomándose en consideración los resultados obtenidos en [Glynn y
Heidelberger 1992], y estimándose el intervalo de confianza mediante la distribución
t-Student.
Los resultados de cobertura ofrecidos por este paquete son muy buenos, ofreciendo además aceleraciones casi lineales con una cantidad moderada de procesadores
(resultados con hasta 8 procesadores).
2.3.3.7
Crítica a los métodos basados en réplicas paralelas
El método de las réplicas independientes de tamaño fijo en paralelo ([Heidelberger 1986, 1988], [Glynn y Heidelberger 1991]) tienen el problema de la elección del
Técnicas paralelas para acelerar simulaciones
65
tamaño de la réplica, ya que un tamaño inadecuado puede inducir una estimación
muy sesgada [Heidelberger 1988]. Además, esta aproximación tiene una gran sobrecarga cuando se aplica a simulación de régimen permanente, pues hay que eliminar
los transitorios iniciales.
Una alternativa consiste en ejecutar una réplica por computador y permitir repetidamente que el tamaño de la réplica aumente si no se cumplen las condiciones de
precisión para finalizar la simulación. Para ello recogen una cantidad fija de observaciones, se analizan, y si se cumplen las condiciones, se termina la simulación. Los
problemas de esta propuesta son:
1. El progreso de la simulación se verá retrasado por la réplica ejecutándose en
el procesador más lento, pues será la que requiera el tiempo más largo para
generar el número requerido de muestras. Ello ocurrirá también cuando los
procesadores sean idénticos debido a la compartición de recursos, la contención en la red y a una velocidad de ejecución del modelo no determinista.
2. Otro problema es la pobre eficiencia del estimador cuando el número de procesadores es pequeño. Si esto es así, entonces la normalidad del estimador
puntual se basa en que la media muestral de cada réplica esté distribuida normalmente. Dado que las observaciones a partir de las que se calculan las medias no son independientes, se necesita comprobar la aplicabilidad del Teorema Central del Límite.
Otra posibilidad es permitir que cada réplica se ejecute a la máxima velocidad
posible, evitándose una de las problemáticas de la aproximación anterior. Sin embargo, esto da lugar a un nuevo problema, pues el método supone (1) que las réplicas
son independientes y (2) idénticamente distribuidas. El tener réplicas con diferente
cantidad de observaciones hace que no se cumpla (2), pudiéndose tener diferentes
distribuciones porque la longitud es función de la variable aleatoria "número de observaciones". Al usarse estimadores de relación se introduce el problema del sesgo
por relaciones.
Los estimadores basados en ciclos regenerativos propuestos por ejemplo en [Rego y Sunderam 1991, 1992] son conceptualmente simples, pero requieren que el
usuario seleccione los puntos de regeneración, lo cual puede ser difícil en algunos
modelos y suele exigir un profundo conocimiento del sistema modelado.
Las técnicas paralelas basadas en lotes (batch-means) pueden ser bastante consumidoras de recursos, llevando a pobres aceleraciones. El principal problema radica
66
Estudio de las técnicas de aceleración de simulaciones por eventos discretos
en la necesidad de que, n cada réplica es necesario detectar y eliminar el transitorio
inicial secuencialmente, y calcular un buen tamaño de lote, pudiéndose llegar a generar muchas más muestras de lo necesario para realizar la estimación puntual.
La aproximación espectral paralela ofrece resultados contradictorios en función
del autor consultado. En principio, la sobrecarga que introduce el método por lotes
debería ser extrapolable a este caso particular.
2.4
Conclusiones
Este capítulo pretende mostrar un resumen de las técnicas que permiten hacer una
estimación puntual de la media de un parámetro de salida de un modelo de simulación discreto orientado a eventos cuando éste se evalúa en régimen permanente.
La naturaleza de la simulación hace que dicha estimación puntual sea un problema estadístico que se puede complicar mucho en función del tipo de modelo, lo que
provoca que ésta sea una línea de trabajo abierta no resuelta aún satisfactoriamente.
Ello da lugar a distintas técnicas que intentan enfocar la solución del problema desde
distintos puntos de vista.
También se han analizado las técnicas para acelerar la obtención de resultados de
los modelos de simulación. Por una parte cabe destacar las técnicas puramente estadísticas, como la reducción de la varianza; y por otra, las técnicas basadas en la aplicación de paralelismo. La aplicación de técnicas de reducción de la varianza no
aporta una solución definitiva a la reducción de la complejidad de las simulaciones
porque, en general, es imposible conocer de antemano la reducción de varianza que
se obtendrá y puede requerir grandes esfuerzos en el desarrollo del modelo. A pesar
de todo los métodos de las variables antitéticas y de los números aleatorios comunes
suelen ser de aplicación general.
Las vías más interesantes para la aceleración consisten en la aplicación de técnicas paralelas. En este capítulo se han analizado brevemente los dos caminos disponibles.
Con respecto a la simulación distribuida (por descomposición del modelo) se
puede concluir que el modelado del sistema no se suele tener en cuenta, transformando el problema a resolver en el desarrollo del programa de simulación. Se tiene
tanto en cuenta lo relacionado con la computación, y con ello la aceleración, que se
Conclusiones
67
dejan de lado otros aspectos, como por ejemplo, la verificación de simulaciones paralelas.
Los estudios se basan normalmente en casos concretos y no existe un hilo común
entre las distintas investigaciones por lo que es imposible establecer comparaciones
entre ellos. Sería interesante disponer de una batería de pruebas que sirviesen de base
para hacer las comparaciones y comparar con otras posibilidades.
En general, no ha habido una gran aceptación de esta línea de trabajo por parte de
otras comunidades y sólo se ha podido aplicar con utilidad en casos muy concretos.
Algunas razones para ello son:
•
Las experiencias suelen hacerse sobre sistemas multiprocesadores, mientras
que la mayoría de usuarios disponen de máquinas uniprocesadoras.
•
Paralelizar una aplicación secuencial requiere un importante esfuerzo y experiencia.
•
Muchas propuestas dan lugar a nuevos lenguajes de simulación o a ampliaciones de los ya existentes. Lo ideal sería aprovechar cualquiera de los mecanismos anteriores en cualquier lenguaje de simulación disponible.
Las aceleraciones logradas son buenas si el modelo es convenientemente sintonizado, pero es extremadamente sensible a las características de la red de comunicación entre máquinas y a las fluctuaciones de carga. Como consecuencia, las simulaciones se suelen ejecutar en máquinas cuya carga es exclusivamente el modelo de
simulación en ejecución.
En definitiva, se puede concluir que esta técnica es adecuada para resolver un
problema muy concreto de simulación con unas importantes restricciones de tiempo
de respuesta o un tamaño de problema muy grande. No será adecuada como herramienta de propósito general que permita, con facilidad, acelerar cualquier tipo de
modelo, y menos aún si se desea que ello no implique un esfuerzo del modelador.
Más aún, el uso de la simulación distribuida introduce un nuevo problema en el
análisis estadístico, pues los datos de salida deberán ser ordenados de acuerdo al
tiempo de referencia del modelo simulado. Ésto puede ser difícil de conseguir cuando los datos se recogen de subprocesos ejecutándose asíncronamente en paralelo.
Además, será complejo saber saber cuándo es seguro analizar los datos para no
arriesgarse a una vuelta atrás típica de time warp.
68
Estudio de las técnicas de aceleración de simulaciones por eventos discretos
Si a pesar de todo se desean aplicar estas técnicas, de [Fujimoto 2000] se extrae
que explotar el lookahead puede llevar a código complejo y, por tanto, difícil de desarrollar y de mantener. Si el propósito es tener un entorno de simulación paralelo de
propósito general que proporcione un rendimiento robusto para un amplio abanico de
modelos y se quiere que el desarrollador no necesite estar familiarizado con los mecanismos de sincronización, entonces la aproximación optimista es la que ofrece más
esperanzas.
También de [Fujimoto 2000] se extrae la contrapartida a la afirmación anterior. Si
se quiere adaptar un modelo de simulación secuencial existente para su ejecución
paralela/distribuida, la sincronización conservativa es la que ofrece el camino más
directo. Ello es porque no se necesita añadir el mecanismo de salvaguarda del estado
ni tener en cuenta las consecuencias de la vuelta atrás sobre la E/S y sobre el tratamiento de la memoria dinámica.
Lo dicho decanta la balanza de este trabajo a utilizar la aproximación basadas en
réplicas de un mismo modelo en paralelo. La simulación basada en réplicas del modelo parece una propuesta sencilla al basarse en la ejecución de grupos de réplicas de
modelos de simulación y es, en principio, fácil de explotar en clusters de estaciones
de trabajo. Es una solución muy directa y natural que se aprovecha del principio del
paralelismo estadístico.
Como primera candidata y siguiendo los razonamientos del apartado 2.1.7, entre
las posibles elecciones del método de las réplicas se selecciona el método de las réplicas independientes de régimen permanente en paralelo, soslayando los problemas
detectados en trabajos previos.
De todas maneras, se tiene claro que el método de las réplicas independientes en
paralelo no es la solución perfecta para acelerar la obtención de resultados de simulaciones discretas por eventos, como tampoco lo es la solución de la descomposición
en procesos lógicos. En [Heidelberger 1986] se presenta un modelo matemático en el
que, siendo el objetivo obtener un estimador de la media en régimen permanente de
un parámetro de rendimiento de un sistema modelado, la elección en cuanto a la eficiencia estadística entre los dos métodos depende de:
•
El número de procesadores.
•
El factor de aceleración (speed-up).
•
La longitud de la simulación.
Conclusiones
69
•
El tamaño del transitorio inicial.
•
La variabilidad del proceso.
En dicho modelo, la eficiencia estadística se mide como el ratio entre los errores
cuadráticos medios, donde el error cuadrático medio se calcula como
mse[µˆ ] = b 2 + s 2
donde b es el sesgo ( b = µˆ − µ ) y s2 es la varianza de la muestra. Como conclusiones del modelo propuesto, el método de simulación distribuida es adecuado si se
tiene una aceleración razonable y las ejecuciones son cortas, o los transitorios son
grandes o se tienen muchos procesadores que impliquen que la aceleración → ∞ y el
método de la réplicas es adecuado en general para transitorios pequeños o ejecuciones largas.
Las condiciones que hacen inapropiado el método de las réplicas son:
1. El modelo es tal que una réplica no se puede completar en un solo procesador
en un tiempo razonable. Esto se puede deber a que el modelo es excepcionalmente grande y, por ejemplo, no cabe en la memoria de un solo procesador, o
en simulaciones de régimen permanente, para un modelo con una disipación
muy lenta del transitorio inicial.
2. La varianza de cada réplica es muy pequeña, en cuyo caso la salida es casi
determinista, y tener una gran cantidad de réplicas es simplemente un desperdicio de recursos computacionales.
Teniendo en cuenta estos problemas, se tratará de desarrollar un método paralelo
basado en réplicas independientes de régimen permanente. En primer lugar se estudiarán las características que debe tener el entorno de simulación para poder aprovechar un conjunto heterogéneo de computadores y para que sea sencillo emplear cualquier modelo de simulación por eventos discretos escrito en los lenguajes disponibles. A continuación, se propondrá y estudiará el comportamiento del analizador paralelo basado en réplicas independientes.
Los dos capítulos siguientes se dedican a describir este estudio.
3. Propuesta de un entorno paralelo para la ejecución de simulaciones
3
Propuesta de un entorno
paralelo para la ejecución
de simulaciones
El capítulo anterior explora distintas posibilidades para acelerar la obtención de
resultados de simulaciones por eventos discretos. Como conclusión se elige desarrollar un entorno basado en la ejecución de réplicas de un modelo de simulación y emplear la técnica de las réplicas independientes para analizar los datos de salida.
En este capítulo se presentan primeramente los objetivos que debe cumplir el entorno para poder aprovechar un conjunto heterogéneo de computadores de manera
que sea fácil explotarlo empleando cualquier lenguaje de simulación por eventos
discretos.
A partir de los objetivos se diseña un entorno formado por tareas concurrentes
especializadas en distintas tareas y que se describe en el apartado 3.4. Un tipo de
tareas del entorno serán precisamente las réplicas en paralelo, que serán modelos de
simulación convenientemente manipulados para poder ser gestionados por el entorno. En el apartado 3.4.3 se describe la base de la manipulación de los modelos, demostrándose en el apartado 3.4.3.1 el buen comportamiento de la técnica.
Para hacer frente a la naturaleza heterogénea de los computadores y a las variaciones de carga debidas al uso compartido de los computadores, se han desarrollado
métodos de medida de la potencia de simulación de las máquinas y del rendimiento
efectivo de las simulaciones. En los apartados 3.4.4 se resumen estas técnicas.
Para facilitar la comprensión de la adaptación de los modelos de simulación al
entorno paralelo, en el apartado 3.5 se provee de una breve guía de adaptación de
modelos escritos en los lenguajes SMPL y CSIM.
72
Propuesta de un entorno paralelo para la ejecución de simulaciones
Finalmente, el apartado 3.6 lista fragmentos de modelos adaptados para SMPL y
CSIM, comentándose los aspectos más destacables de la adaptación realizada.
Este capítulo es un extracto de [Perles 1998], [Perles et al. 1999] y [Perles et al.
1999b].
3.1
Introducción
El capítulo anterior explora las posibilidades para acelerar la obtención de resultados en simulaciones por eventos discretos.
Dos son los posibles caminos para acelerar simulaciones mediante técnicas paralelas: el primero consiste en dividir un modelo de simulación en procesos distribuidos que se ejecutan en máquinas diferentes, y el segundo consiste en ejecutar réplicas
de un modelo en computadores diferentes para generar muestras estadísticas a un
ritmo mayor. La Figura 3-1, Figura 3-2 y Figura 3-3 muestran gráficamente la idea.
+
Computador
Computador
Computador
Figura 3-1. Punto de partida: un modelo de simulación y un conjunto de computadores.
Computador
Computador
Computador
Figura 3-2. Aproximación mediante simulación distribuida.
Criterios de diseño del entorno paralelo de simulación
Computador
Computador
73
Computador
Figura 3-3. Aproximación mediante réplicas paralelas.
Cada aproximación tiene sus ventajas e inconvenientes en función del tipo de
problema a resolver. En las conclusiones del capítulo anterior se sugiere la segunda
vía, réplicas del modelo en paralelo, como la elección más adecuada.
El objetivo de este capítulo es describir el planteamiento y desarrollo de la infraestructura capaz de lograr el aprovechamiento de un conjunto de máquinas para
obtener un cluster débilmente acoplado donde ejecutar los experimentos de simulación.
Por “cluster débilmente acoplado” se entiende que los computadores que forman
el cluster están interconectados por redes de bajas prestaciones, por lo que el planteamiento de las interacciones entre procesos mediante comunicaciones será fundamental a la hora de diseñar el entorno de simulación paralela.
En [Perles 1994] se describe PSmpl , una primera aproximación al problema que
da la experiencia para plantear los objetivos de diseño de la herramienta de simulación paralela. Dicha experiencia ha permitido detectar una serie de problemas en el
planteamiento y permiten orientar mejor el trabajo de aprovechamiento de las posibilidades de los clusters de estaciones de trabajo heterogéneas en la resolución de los
costosos problemas de simulación.
Una estrategia fundamental ha sido dividir claramente los aspectos de gestión de
procesos de los aspectos de análisis estadístico de la salida. Una parte importante de
este capítulo se dedica al primer aspecto, mientras que el siguiente capítulo se dedica
exclusivamente a la estrategia de análisis estadístico.
3.2
Criterios de diseño del entorno paralelo de simulación
Partiendo de la idea de aprovechar la gran cantidad de estaciones de trabajo y PCs
de despachos y laboratorios, desocupados la mayor parte del tiempo, y aprovecharlos
para hacer simulaciones, nace la idea del entorno denominado “Cluster Simulation
74
Propuesta de un entorno paralelo para la ejecución de simulaciones
Experimenter” (CSX). CSX pretende posibilitar la realización de experimentos en
masa sin tener que preocuparse de localizar recursos computacionales para llevarlos
a cabo.
Con respecto a los modelos de simulación, los criterios de diseño del entorno
distribuido son:
•
Independencia del simulador
La técnica empleada debe ser lo suficientemente general como para que se
pueda aplicar a cualquier lenguaje de simulación por eventos discretos, ya sea
comercial o no. El objetivo es instrumentar simuladores como SMPL, CSIM,
SIM++, SIMPACK o incluso QNAP, sin tener que modificar las bibliotecas de
soporte. Obsérvese que se abarcan simuladores orientados a eventos y a procesos.
Este objetivo está reñido con el de transparencia descrito a continuación, pero
la experiencia previa con PSmpl así lo sugiere. La máxima transparencia obtenida
con SMPL aporta como ventaja la rapidez de aprovechamiento de la herramienta
desarrollada. Sin embargo, los inconvenientes se pagan cuando se pretende instrumentar un simulador comercial con el mismo propósito (por ejemplo CSIM o
QNAP).
•
Máxima transparencia
El modelo de simulación requerirá pocas modificaciones para ser adaptado al
entorno paralelo.
Con ello se pretende que la aplicación de la técnica sea directa e inmediata,
sin precisar importantes modificaciones del modelo original que dificulten la
aplicabilidad de la propuesta y precisen de un aprendizaje previo.
•
Control externo
En el modelo de simulación adaptado no se debe hacer explícito ni el tipo ni
la forma del gobierno del modelo, ni tampoco la naturaleza del análisis estadístico que se va aplicar. Con ello se pretende lograr la eliminación en el modelo de
todo tipo de gestiones que tengan que ver con el entorno paralelo, quedando el
modelo adaptado como una entidad pasiva que será gobernada externamente en la
medida de lo posible.
Criterios de diseño del entorno paralelo de simulación
•
75
Posibilidad de ejecución no monitorizada
Los modelos preparados para el entorno paralelo deberán poder seguir comportándose como su versión convencional. La idea básica es que se puedan escribir/adaptar los modelos para el entorno de simulación paralelo y puedan ser probados fueran del mismo. Una vez transcurrida la fase de depuración y validación
el modelo, éste podrá ser ejecutado en el entorno paralelo sin ninguna modificación. Con ello, se reduce el riesgo de introducir nuevos errores y se facilitan
enormemente modificaciones posteriores o ampliaciones del modelo.
•
Mínima sobrecarga del modelo de simulación
La ejecución de un modelo de simulación en el entorno paralelo no debe suponer una sobrecarga de procesamiento importante. Si la ejecución en paralelo
supone una necesidad de procesamiento extra notable, es posible que las mejoras
que aporte el entorno paralelo se diluyan debido a la sobrecarga introducida.
Con respecto a la infraestructura lógica de simulación paralela, en su diseño se
pretenden los siguientes objetivos:
•
Ocultación del subsistema de gestión paralela
En la aplicación desarrollada no deberá hacerse explícito el modelo de programación paralela empleado, procurando la máxima independencia del paradigma de programación paralela elegido. El propósito es facilitar la migración a
otros paradigmas.
•
Automatización del reparto de carga
La herramienta de simulación paralela deberá encargarse de tomar la decisión
para repartir los procesos entre las máquinas físicas. Idealmente, los procesos de
simulación tendrán capacidad de migrar dinámicamente de una máquina a otra
para equilibrar la carga y mejorar la garantía de funcionamiento.
•
Orientado a experimentos
Entendido un experimento como un conjunto de simulaciones, al entorno se le
debería dar la información de experimentos completos, con lo que tendrá criterios
más amplios para resolver óptimamente el problema completo. Un experimento
puede ser, por ejemplo, un modelo con diferentes parametrizaciones.
76
Propuesta de un entorno paralelo para la ejecución de simulaciones
•
Transferencia de información estadística limitada
Los procesos de simulación no deberán transmitir a los procesos monitores
todas las muestras de las variables estadísticas de salida del modelo. En principio,
se transmitirán sólo los estimadores puntuales de las variables de salida de interés
(la media muestral). Esta limitación se debe a que el entorno de ejecución no es
adecuado para una transmisión alta de información, debido al consumo de comunicaciones que provocaría. Como desventaja, esta estrategia limitará el tipo de
análisis estadístico a realizar.
•
Análisis estadístico flexible
Independizar los aspectos de gestión de los procesos de los de análisis estadístico. Con ello es posible desarrollar diferentes tipos de analizadores estadísticos de la salida, sin preocuparse de entorno de gestión de simulaciones subyacente.
Partiendo de estos criterios se ha diseñado el entorno paralelo que se presenta en
este capítulo.
3.3 Elección de PVM como entorno de programación
distribuida
Para el desarrollo del sistema de simulación paralelo es importante disponer de un
entorno de programación distribuida que permita simplificar el desarrollo de la aplicación. El criterio fundamental que debe cumplir el entorno para ser seleccionado es
que facilite la interacción y comunicación entre procesos repartidos en una red de
computadores heterogéneos. Se pretende que sea fácil utilizar máquinas con diferentes arquitecturas y diferentes sistemas operativos.
Cuando se empezó este trabajo [Perles 1994], la investigación en el área de los
entornos de programación distribuida sobre clusters estaba en auge. Como resultado,
una serie de paradigmas y herramientas se han implantado firmemente como estándar
de facto en distintas arquitecturas hardware/software.
Todos estos entornos se pueden clasificar en dos grupos: orientados a memoria
compartida y orientados a paso de mensaje. Algunos poseen características de ambos grupos y otros, como Linda [Mattson et al. 1991], aplican paradigmas curiosos y
potentes. Se puede concluir que todo lo realizable en un entorno, se puede hacer en
Elección de PVM como entorno de programación distribuida
77
otro. La diferencia está en la facilidad de implementación y en las herramientas que
aportan.
En [Turcotte 1993] se dispone de una amplia relación de entornos distribuidos
disponibles y se comentan sus características. Para este trabajo se consideraron entornos como Express [Kolawa 1991], P4, Linda en la implementación Glenda y
Network-Linda [Sherman 1990], MPI [MPI 1994], etc.
Finalmente, el entorno seleccionado fue PVM (Parallel Virtual Machine) [Geist
et al. 1994]. PVM es un sistema software que permite ver a una red heterogénea de
máquinas como un único recurso paralelo, y ha sido producido por la colaboración
del Oak Ridge National Laboratory, la Universidad de Tennessee, la Universidad de
Emory y la Universidad de Carnegie Mellon, con el propósito de facilitar la computación paralela heterogénea. Como ventaja, PVM es de dominio público y su código
fuente está disponible.
Bajo PVM, una colección de máquinas secuenciales, paralelas y vectoriales definida por el usuario, se ve como una gran computadora de memoria distribuida. Este
entorno aporta las funciones para arrancar tareas que se comunicarán o sincronizarán
entre ellas con total libertad. Además, maneja la conversión necesaria de tipos de
datos en la comunicación entre máquinas distintas.
La Figura 3-4 muestra el esquema de un entorno PVM. Este sistema está formado
por dos partes:
• Un demonio llamado "pvmd", instalado en todos los ordenadores que
componen la máquina virtual. Este demonio esta diseñado para que pueda
instalarlo cualquier usuario con un login válido. Así, cuando un usuario
quiere ejecutar una aplicación PVM, debe crear primero la máquina virtual
y después ejecutar su aplicación desde la línea de órdenes. Múltiples usuarios pueden configurar máquinas virtuales solapadas, y cada usuario puede
ejecutar más de una aplicación simultáneamente.
• Una biblioteca de interfaz con PVM, que contiene rutinas ejecutables por
el usuario para el paso de mensajes, lanzamiento de procesos, coordinación
de las tareas y modificación de la máquina virtual. Las aplicaciones deberán ser enlazadas con esta biblioteca para poder utilizar PVM.
La potencia de este entorno radica en la facilidad con que se explota la heterogeneidad de la máquina virtual. No ocurre lo mismo con otros entornos, que precisan
78
Propuesta de un entorno paralelo para la ejecución de simulaciones
hacerla explícita para efectuar tareas como el paso de mensajes. Esta heterogeneidad
implícita de PVM tiene su contrapartida en la dificultad añadida del mecanismo para
la creación de mensajes que hace a este entorno muy susceptible a errores de programación y excesivamente prolijo en llamadas a sus bibliotecas.
Figura 3-4. Anatomía de PVM versión 3.
PVM aporta bibliotecas para los lenguajes C y FORTRAN 77. Como muestra, se
da a continuación un ejemplo en C de un modelo maestro/esclavo con comunicación
entre los esclavos.
Elección de PVM como entorno de programación distribuida
// ----------- programa maestro ------------#include "pvm3.h"
#define SLAVENAME "slave1"
main()
{
int mytid;
/* mi TID */
int tids[32];
/* TIDs de los esclavos */
int n, nproc, numt, i, who, msgtype, nhost, narch;
float data[100], result[32];
struct pvmhostinfo *hostp[32];
/* unirse a PVM */
mytid = pvm_mytid();
/* fijar el numero de esclavos */
/* no se debe leer la entrada estandar si es hija */
if( pvm_parent() == PvmNoParent ){
puts("Cuantas tareas esclavo (1-32)?");
scanf("%d", &nproc);
}
else{
pvm_config( &nhost, &narch, hostp );
nproc = nhost;
if( nproc > 32 ) nproc = 32 ;
}
/* arrancar tareas esclavas */
numt=pvm_spawn(SLAVENAME, (char**)0, 0, "", nproc, tids);
if( numt < nproc ){
printf("Problemas lanzando esclavos. Aborto. Codigos
error:\n");
for( i=numt ; i<nproc ; i++ ) {
printf("TID %d %d\n",i,tids[i]);
}
for( i=0 ; i<numt ; i++ ){
pvm_kill( tids[i] );
}
pvm_exit();
exit();
}
/* programa del usuario */
n = 100;
/* preparar datos( data, n ); */
for( i=0 ; i<n ; i++ ){
data[i] = 1;
}
/* difundir los datos iniciales a los esclavos */
pvm_initsend(PvmDataDefault);
pvm_pkint(&nproc, 1, 1);
pvm_pkint(tids, nproc, 1);
pvm_pkint(&n, 1, 1);
pvm_pkfloat(data, n, 1);
pvm_mcast(tids, nproc, 0);
79
80
Propuesta de un entorno paralelo para la ejecución de simulaciones
/* esperar los resultados de los esclavos */
msgtype = 5;
for( i=0 ; i<nproc ; i++ ){
pvm_recv( -1, msgtype );
pvm_upkint( &who, 1, 1 );
pvm_upkfloat( &result[who], 1, 1 );
printf("He recibido %f de %d\n",result[who],who);
}
/* Programa terminado. Dejo PVM antes de salir. */
pvm_exit();
}
// ----------- programa esclavo ------------#include <stdio.h>
#include "pvm3.h"
main()
{
int mytid;
/* mi TID */
int tids[32];
/* TIDs de las tareas
int n, me, i, nproc, master, msgtype;
float data[100], result;
float work();
*/
/* Asociarse a PVM */
mytid = pvm_mytid();
/* Recibir los datos del maestro */
msgtype = 0;
pvm_recv( -1, msgtype );
pvm_upkint(&nproc, 1, 1);
pvm_upkint(tids, nproc, 1);
pvm_upkint(&n, 1, 1);
pvm_upkfloat(data, n, 1);
/* Determinar que esclavo soy (0 -- nproc-1) */
for( i=0; i<nproc ; i++ )
if( mytid == tids[i] ){ me = i; break; }
/* Hacer los calculos con los datos */
result = work( me, n, data, tids, nproc );
/* Enviar los resultados al maestro */
pvm_initsend( PvmDataDefault );
pvm_pkint( &me, 1, 1 );
pvm_pkfloat( &result, 1, 1 );
msgtype = 5;
master = pvm_parent();
pvm_send( master, msgtype );
/* Programa terminado. Dejar PVM antes de salir */
pvm_exit();
}
float work(me, n, data, tids, nproc )
/* Ejemplo simple, los esclavos intercambian los datos */
/* con el vecino de la izquierda */
Elección de PVM como entorno de programación distribuida
81
int me, n, *tids, nproc;
float *data;
{
int i, dest;
float psum = 0.0;
float sum = 0.0;
for( i=0 ; i<n ; i++ ){
sum += me * data[i];
}
/* muestra de la comunicacion nodo a nodo */
pvm_initsend( PvmDataDefault );
pvm_pkfloat( &sum, 1, 1 );
dest = me+1;
if( dest == nproc ) dest = 0;
pvm_send( tids[dest], 22 );
pvm_recv( -1, 22 );
pvm_upkfloat( &psum, 1, 1 );
return( sum+psum );
}
Un aspecto crítico del entorno distribuido de simulación es el comportamiento de
las comunicaciones entre procesos. Se ha construido un programa para hacerse una
idea de la velocidad de transferencia de mensajes, y se ha probado en un cluster formado por 5 máquinas HP7000/735 con sistema operativo HP-UX 9.01.
La aplicación está formada por dos partes: un maestro que envía mensajes con
una cantidad de datos de tipo double prefijada y espera la respuesta de un esclavo,
y un esclavo que responde con un mensaje vacío cada vez que le llega un mensaje.
Se puede configurar la aplicación para probar todas las variantes de comunicación de
PVM.
El programa toma dos tiempos: el tiempo de empaquetar y enviar (cabe destacar
que una llamada pvm_send() termina cuando el mensaje está seguro en la máquina destino), y el tiempo de empaquetar, enviar y recibir la respuesta del esclavo. Tras
realizar varias repeticiones de la comunicación, se devuelve como resultado el valor
mínimo, medio y máximo del primer tiempo, y el valor medio del segundo.
La Figura 3-5 representa el tiempo medio para transferir mensajes de diferente
longitud. Estos tiempos corresponden al de empaquetado y transferencia. Se observa
el mayor coste para la codificación XDR (codificación independiente de la arquitectura), sobretodo para grandes mensajes. El mayor rendimiento corresponde a la trans-
82
Propuesta de un entorno paralelo para la ejecución de simulaciones
ferencia PvmInplace (esta opción no emplea un buffer de empaquetado de datos
intermedio) a través de demonio.
500
demonio-xdr
demonio-raw
400
Milisegundos
demonio-inplace
directo-xdr
300
directo-raw
directo-inplace
200
100
0
0
20000
40000
60000
80000
100000
Longitud del mensaje en doubles
Figura 3-5. Tiempo de comunicación maestro-esclavo.
Los datos de la gráfica deben tomarse con cautela, pues aunque parezca que la
combinación dem-inp es la más adecuada, hay que tener en cuenta que las combinaciones dem corresponden al tiempo hasta la llegada del mensaje al demonio destino, mientras que las dir significan que el mensaje ya está en el socket TCP del esclavo destino.
La gráfica da una idea de la forma en que se deben optimizar las comunicaciones.
A pesar de ello, se ha decidido emplear la configuración menos ventajosa en cuanto a
velocidad de transferencia, pues es la que ofrece una mayor flexibilidad desde el
punto de vista de heterogeneidad del entorno de simulación, y es fácil afinar el método de comunicación a posteriori.
3.4 Propuesta de entorno de simulacion paralela basada en
réplicas
Tomando en consideración los objetivos descritos en el apartado 3.2, se ha planteado el entorno de simulación CSX (Cluster Simulation Experimenter). CSX es una
aplicación distribuida trabajando bajo PVM (Parallel Virtual Machine) y permite la
incorporación de máquinas heterogéneas UNIX y Windows a una máquina virtual de
simulación.
Propuesta de entorno de simulacion paralela basada en réplicas
83
La aplicación está formada por procesos especializados, encargados de gestionar
cada uno de los aspectos de la simulación. Esta división facilita mucho el desarrollo
de la aplicación y el reparto de las tareas entre distintas máquinas.
En los siguientes apartados se describe el diseño del entorno y las técnicas desarrolladas para conseguir la gestión eficiente de los modelos de simulación.
3.4.1 Esquema de CSX
La Figura 3-6 muestra una representación gráfica de los procesos que pueden
conformar el sistema CSX en ejecución.
El proceso central de CSX es el gestor principal (Master Monitor, MM). Se encarga de la coordinación de toda la aplicación, y es el primer proceso que se arranca
al trabajar con CSX. Lanza el proceso encargado de gestionar las máquinas físicas y
el encargado de gestionar la interacción con los usuarios. Gestiona también la base
de datos donde se depositan las definiciones de experimentos, encargándose de realizar las peticiones de inicio de simulaciones.
Dos tipos de procesos están especializados en la gestión de las máquinas físicas y
de la carga de procesos de éstas. Se trata del gestor de máquinas y carga (Machine
and Load Manager, MLM) y del monitor de carga (Load Monitor, LM).
MLM es un proceso del que se lanza una sola instancia y se encarga de gestionar
la máquina virtual, añadiendo máquinas cuando están disponibles y eliminándolas
cuando dejen de estarlo. En toda máquina que se incorpore a CSX, MLM lanzará un
proceso monitor de la carga. MLM decidirá dónde y cómo se lanzarán las simulaciones que requiera MM usando la información de potencia de las máquinas, las máquinas incorporadas y la carga.
Por su parte, LM es un proceso encargado de recoger información de carga de
cada máquina que forma parte de la máquina virtual PVM y la envía a MLM.
El entorno de simulación CSX se plantea como una herramienta que deben compartir los usuarios interesados en hacer simulaciones, pues de esta manera se evita el
que los usuarios compitan individualmente por las máquinas más potentes, siendo el
entorno el encargado de distribuir el trabajo. En este sentido hay dos tipos de procesos encargados de interaccionar con los usuarios, el servidor de interfaz de usuario
(User Interface Server, UIS) y el interfaz de usuario (User Interface, UI).
84
Propuesta de un entorno paralelo para la ejecución de simulaciones
Figura 3-6. Esquema de CSX.
Propuesta de entorno de simulacion paralela basada en réplicas
85
Del proceso UIS se lanza una sola instancia, y su propósito es gestionar los accesos y los derechos de los usuarios que se conectan a CSX para enviar y controlar sus
experimentos. Se debe procurar que los usuarios estén fuera de la máquina CSX, por
lo que parte del trabajo de UIS será proporcionar un punto de acceso exterior a CSX.
Cada usuario que accede a CSX lo hace a través de un proceso UI, que pretende
ofrecer una forma sencilla y uniforme de especificar los experimentos. Como las
necesidades de los usuarios pueden ser distintas, se provee la posibilidad de utilizar
diferentes interfaces de usuario, que se adaptan al tipo de trabajo a lanzar. Por ejemplo, una interfaz orientada a lotes permite automatizar la creación de grandes cantidades de experimentos de una forma sencilla, mientras que una interfaz visual es la
forma más directa de especificar un solo experimento.
Por último están los modelos de simulación manipulados (SIM) y los monitores
de simulación (Local Simulation Monitor, LSM).
Un proceso SIM no es más que un programa de simulación convencional adecuadamente manipulado (instrumentado) para que pueda ser gestionado por CSX. El
planteamiento de esta manipulación es de gran importancia para este trabajo, y se
describe en el apartado 3.4.3.
El lanzamiento de una simulación paralela consiste en el lanzamiento de réplicas
de un mismo procesos SIM y del lanzamiento de un proceso LSM encargado de gestionar el funcionamiento de las réplicas. LSM recoge la información estadística que
generan las réplicas y la analiza para decidir el fin de la simulación cuando se han
alcanzado las condiciones adecuadas. Se ha procurado mantener bajo el coste de las
comunicaciones entre el proceso LSM y los procesos SIM subordinados, pues de ello
dependerá el éxito del planteamiento del entorno de simulación paralelo.
En los siguientes puntos se describirán los aspectos de diseño más destacables de
los procesos que intervienen en CSX. Para el proceso LSM se dedica un capítulo
aparte, pues es el responsable de proporcionar la herramienta estadística de análisis
del modelo de simulación.
3.4.2 Planteamiento de la interacción entre procesos distribuidos
mediante mensajes
Los procesos de una aplicación PVM se comunican utilizando el paradigma de
mensajes. Estos mensajes se crean usando primitivas que empaquetan los tipos de
datos básicos de C o de Fortran en un buffer, el cual es finalmente enviado a uno o
86
Propuesta de un entorno paralelo para la ejecución de simulaciones
varios destinos. En el proceso receptor, estos mensajes deben ser desempaquetados
en el mismo orden en que fueron empaquetados empleando las primitivas que restauran los tipos de datos correspondientes.
En caso de que no se siga la misma secuencia de empaquetado/desempaquetado,
la información recuperada será incorrecta. Éste suele ser el error más habitual al escribir programas PVM, así que se ha optado por recubrir el modelo de mensajes de
PVM con tipos de mensajes más fáciles de manipular y menos propensos a errores.
Otro objetivo en el planteamiento de las comunicaciones ha sido eliminar las características intrínsecas a las comunicaciones de PVM, para facilitar una posible
adaptación de CSX a otros entornos de computación distribuida.
PVM se plantea como un entorno de computación distribuida de muy bajo nivel,
susceptible de ser recubierto de capas de mayor nivel. En el caso de CSX se han recubierto los mensajes con un nivel que evita enormemente las posibilidades de error
al codificar/decodificar los mensajes y facilita el desarrollo de la aplicación distribuida.
Los mensajes CSX son un conjunto de tuplas <identificador,dato> donde identificador es un entero que describe el tipo de dato asociado. Cuando un mensaje llega
a un proceso, CSX lo interpreta empleando el identificador para llamar a la función
asociada a dicho dato, que lo decodificará e interpretará. La Figura 3-7 muestra el
esquema de mensajes en CSX.
Figura 3-7. Esquema de los mensajes PVM usados en CSX.
Visto de otra forma, las tuplas de los mensajes son órdenes para el proceso receptor, pues la interpretación del mensaje desencadena la ejecución de las funciones
asociadas a cada identificador. Este esquema de trabajo ha evitado plantear complejas secuencias de información y protocolos en la comunicación entre los procesos
que forman CSX, y se deriva de la experiencia previa con PSmpl. Como resultado,
Propuesta de entorno de simulacion paralela basada en réplicas
87
los procesos CSX son entidades pasivas que reaccionan en función del contenido del
mensaje recibido, lográndose una gran flexibilidad en el comportamiento de cada
proceso.
3.4.3 Instrumentación de los programas de simulación
El entorno CSX no tiene futuro si no es posible lograr un mecanismo general de
extracción de información estadística de un programa de simulación clásico para que
pueda ser gestionado por CSX.
Por tanto, CSX deberá ser capaz de manejar y extraer información de los modelos
de simulación en ejecución. Dichos modelos serán programas desarrollados en los
lenguajes de simulación habituales como SMPL, QNAP, CSIM, SIM++, DEVS*,
etc., que se han instrumentado adecuadamente para ser gestionados por CSX.
En el punto 3.2 se describen las premisas que debería cumplir la instrumentación.
Estas premisas se han logrado parcialmente aplicando las siguientes estrategias:
•
Proporcionando unas bibliotecas enlazables con el programa de simulación.
•
Tomando el control del simulador inyectando eventos especiales en la cola de
eventos del simulador.
•
Sobrecargando algunas de las funciones del lenguaje de simulación
•
Añadiendo código al programa de simulación.
Se ilustra a continuación el planteamiento seguido tomando como base un programa en SMPL.
Como se ha dicho, la instrumentación incluye el enlazado con las bibliotecas de
CSX. Las bibliotecas aportan el soporte para la extracción de información estadística
de los modelos de simulación, y para la comunicación y coordinación con otros procesos de la aplicación distribuida.
Como se desea que estas bibliotecas puedan usarse para varios lenguajes de simulación, se ha optado por un diseño de tres capas que independiza cada aspecto de
la instrumentación. La Figura 3-8 muestra tal planteamiento aplicado a un modelo de
simulación SMPL, tratándose, en este caso, de bibliotecas desarrolladas en lenguaje
C.
88
Propuesta de un entorno paralelo para la ejecución de simulaciones
Figura 3-8. Estructura de bibliotecas CSX enlazadas con el programa a monitorizar.
Las capas de la biblioteca tienen el siguiente cometido:
•
El módulo principal de la biblioteca es el gestor CSX (CSX manager). Su función es recoger la información del modelo de ejecución y coordinar las capas
especificas de nexo con el simulador y con el sistema de comunicaciones.
Esto lo debe hacer de la forma más general posible, con independencia del
lenguaje de simulación empleado.
•
La capa SMPL interface adapta las funciones del CSX manager al lenguaje de
simulación específico y viceversa. Simplemente convierte las características
específicas de un programa de simulación al modelo común de representación
del estado empleado en la capa central.
•
La capa PVM interface gestiona las interacciones entre el CSX manager y el
sistema de computación distribuida, permitiendo el envío/recepción de datos
entre procesos.
El objetivoidea es que toda la gestión de la instrumentación se lleve a cabo en la
capa central. Las capas externas simplemente permiten adaptar la información de la
capa central al entorno donde se integran.
Con este planteamiento, se dispone actualmente de dos capas para simulador.
Una para SMPL [MacDougall 1987] y otra para CSIM [CSIM 1998]. Inicialmente se
desarrolló y probó la capa SMPL; posteriormente, el desarrollo de la capa CSIM fue
extremadamente sencillo, demostrando el acierto del planteamiento, y ello a pesar de
que SMPL y CSIM emplean un enfoque del modelado totalmente distinto, pues el
primero es orientado al evento y el segundo al proceso, y además el código fuente de
CSIM no está disponible. Con la misma facilidad sería sencillo cambiar la capa PVM
para poder utilizar un entorno de programación distribuida distinto.
Las bibliotecas deben ser capaces de tomar el control del modelo de simulación y,
además, sin suponer una sobrecarga. Para conseguirlo se ha decidido emplear la in-
Propuesta de entorno de simulacion paralela basada en réplicas
89
yección de un evento especial en la cola del simulador. Éste es el punto fundamental
de la estrategia de instrumentación, pues el mecanismo puede garantizar la generalidad, ya que todos los simuladores basados en eventos discretos emplean esta cola y,
en principio, les debería ser aplicable la estrategia.
La Figura 3-9 representa la cola de eventos a procesar de un simulador por eventos discretos. Los eventos están ordenados por tiempo de ocurrencia creciente, siendo
el siguiente evento a procesar el que tiene un tiempo de ocurrencia menor.
Cola de eventos
Procesamiento
de eventos
Tiempo simulado
Figura 3-9. Procesamiento de la cola de eventos en un simulador por eventos discretos.
Para que CSX tome el control del simulador, la primera acción consiste en inyectar un evento con tiempo de ocurrencia 0 en la cola del simulador (ver Figura
3-10(a)). La ejecución de dicho evento por parte del simulador hace que se ejecute el
código de control de la instrumentación (ver Figura 3-10(b)).
Cola de eventos
Procesamiento
de eventos
Tiempo simulado
Evento CSX
a)
b)
Figura 3-10. Filosofía de instrumentación de CSX: a) planificar el primer evento CSX,
b) la ejecución de un evento CSX planifica el siguiente evento CSX.
El código de instrumentación asociado al evento CSX suele realizar las siguientes
tareas:
1. Comprueba si han llegado mensajes del proceso monitor; en caso afirmativo
los interpreta.
90
Propuesta de un entorno paralelo para la ejecución de simulaciones
2. Empaqueta la información estadística recogida hasta el momento por el simulador y la envía al proceso monitor.
3. Planifica el evento CSX que permitirá una nueva toma de control del simulador.
Estos son los pasos habituales que se hacen al gestionar el evento CSX, aunque
pueden variar en función de los "mensajes orden" que lleguen del proceso monitor.
Por ejemplo, el primer evento CSX que se ejecuta en una simulación suele ser distinto al resto, pues será, en muchos casos, el encargado de configurar el comportamiento de la instrumentación. Desde el punto de vista de la implementación, el primer evento es igual que otros, pero se va a comportar de manera distinta como consecuencia de los mensajes especiales que envía el proceso monitor.
Esta técnica permite una integración total del mecanismo de instrumentación en
el simulador, con lo que no hay peligro de tomar el control en momentos críticos del
procesamiento del simulador que pudiesen llevar a inconsistencias de funcionamiento.
El defecto de la técnica es que el entorno CSX soo puede tomar el control del
modelo cuando el simulador procesa el evento especial. Sin embargo, las ventajas
son importantes: por una parte la generalidad ya reseñada, y por otra, cabe esperar
que el mecanismo implique poca sobrecarga a la ejecución del modelo.
Continuando con la instrumentación de modelos, estos deben ser modificados
adecuadamente añadiendo nuevo código y permitiendo la sobrecarga de algunas de
las funciones de simulación del lenguaje. Por ejemplo, el siguiente listado corresponde a un modelo de una cola M/M/1 implementado con SMPL y modificado para
adaptarlo a CSX. El programa deberá enlazarse con las bibliotecas de CSX y de
PVM para ser operativo.
/* mm1.c ********
M/M/1 Queue
*********/
#include <smpl.h>
#include <csx_smpl.h>
void main(int argc, char *argv[])
{
double Ta=200.0, Ts=100.0,te=2000000.0;
int customer=1,event,server;
csx_gpdouble(argc,argv,"Ta",&Ta,200.0);
Propuesta de entorno de simulacion paralela basada en réplicas
91
csx_gpdouble(argc,argv,"Ts",&Ts,100.0);
smpl(0,"Queue M/M/1");
server=facility("server",1);
csx_firstevent;
schedule(1,0.0,customer);
while(csx_loop(time()<te))
{
cause(&event,&customer);
switch(event)
{
csx_event;
case 1: /* arrival */
schedule(2,0.0,customer);
schedule(1,expntl(Ta),customer);
break;
case 2: /* server required */
if (request(server,customer,0)==0)
schedule(3,expntl(Ts),customer);
break;
case 3: /* complet */
release(server,customer);
break;
}
}
report();
}
El primer paso es incluir el fichero de cabecera csx_smpl.h, en el que están
las definiciones de las funciones especificas de CSX para SMPL y las macros que
redefinen algunas funciones de SMPL y simplifican la escritura de los programas
CSX.
Las funciones que se redefinen son smpl(), facility() y cause(). La
función smpl() se sobrecarga para que las bibliotecas de CSX puedan detectar si el
programa se lanza desde la línea de órdenes o desde el entorno paralelo, y así decidir
si se realiza la conexión con el monitor o se trabaja en modo convencional. La función facility() se sobrecarga para que las bibliotecas CSX tomen nota de los
índices estadísticos que posee el modelo, y que se deben enviar en cada muestreo. A
la función cause() se le añade el incremento de la variable global CSX_EVCNT,
que lleva la contabilidad del total de eventos procesados.
La función csx_gpdouble() permite obtener los parámetros de entrada del
modelo a partir de la línea de comandos. El propósito de esta función es tener una
forma sencilla de que el monitor pueda especificar cuáles son los parámetros con los
92
Propuesta de un entorno paralelo para la ejecución de simulaciones
que debe funcionar el modelo. Por ejemplo, en el caso de la cola M/M/1, para especificar un tiempo de servicio de 80 y un tiempo entre llegadas de 90 se podría escribir
en el indicador de una máquina UNIX:
$ mm1 Ts=80 Ta=90
La macro csx_firstevent equivale a una llamada a la función de planificación de eventos de SMPL schedule() que planifica un evento reservado para
CSX con tiempo de simulación 0,0, y que permite tomar el control del simulador.
La macro csx_event corresponde al caso del evento reservado por CSX para la
construcción switch-case de procesamiento de eventos de SMPL. Este evento
permite tomar el control del simulador. Su tarea habitual consiste en preparar la
muestra de variables de salida para el monitor, enviarla y planificar el evento que
provocará el siguiente muestreo. Éste es el único punto donde se interpretan los mensajes que llegan desde el monitor; por tanto, las órdenes de CSX solo se atienden en
esos instantes.
Con todas estas estrategias aquí descritas, se consigue la toma de control del modelo de simulación por parte de CSX.
Las muestras de información estadística se extraen en los instantes del tiempo de
simulación que fije el usuario o por el método de análisis seleccionado, no pudiéndose extraer información fuera de esos instantes. La ventaja de este método es que es
fácil de implementar, la sobrecarga introducida es pequeña y se puede aplicar a casi
todos los lenguajes de simulación. La desventaja es que obliga a que el control externo del programa de simulación solo pueda hacerse en unos instantes de tiempo muy
definidos.
3.4.3.1
Resultados de las pruebas de sobrecarga de los modelos
instrumentados
Idealmente, la monitorización de los programas de simulación debería provocar
una sobrecarga mínima en el tiempo de ejecución de los modelos. La sobrecarga introducida debe ser proporcional a las veces que se muestree el modelo y a las condiciones de las comunicaciones simulación-monitor. Cuantas menos muestras se extraigan, menor debe ser la sobrecarga.
Utilizando el modelo de cola M/M/1 antes mostrado se han realizado una serie de
pruebas para estimar el efecto de la manipulación del modelo en la sobrecarga introducida en el tiempo de ejecución. La simplicidad del modelo elegido hace que cual-
Propuesta de entorno de simulacion paralela basada en réplicas
93
quier variación introducida se aprecie notablemente en el tiempo de respuesta. La
Tabla 3-1 muestra los resultados de la prueba realizada.
Tiempo de
ejecución
(segundos)
Sobrecarga
comparada
con SMPL
estándar
Original SMPL
208,803
0%
SMPL manipulado y enlazado con CSX.
Ejecutado como un programa normal
220,419
6%
SMPL manipulado y enlazado con CSX.
Monitorizado solicitando 1 muestra.
218,553
5%
0,05
SMPL manipulado y enlazado con CSX.
Monitorizado solicitando 10 muestras.
219,486
5%
0,46
SMPL manipulado y enlazado con CSX.
Monitorizado solicitando 100 muestras.
227,932
9%
4,39
SMPL manipulado y enlazado con CSX.
Monitorizado solicitando 1.000 muestras.
286,464
37%
34,91
SMPL manipulado y enlazado con CSX.
Monitorizado solicitando 10.000 muestras.
1127,419
440%
8,87
Descripción
Muestras
por
segundo
Tabla 3-1. Tiempos de respuesta de un programa SMPL monitorizado con CSX.
El modelo original se ha ejecutado en una máquina bajo Windows, ofreciendo un
tiempo medio de respuesta de 208,8 segundos que se toma como referencia.
El programa se ha adaptado a CSX como se muestra en el apartado anterior.
Cuando se lanza directamente desde el indicador del sistema, en modo no monitorizado, su funcionamiento es equivalente a un programa SMPL normal. En este caso el
tiempo de respuesta aumenta ligeramente, produciéndose una sobrecarga del 6%
aproximadamente respecto al modelo SMPL sin manipular.
El resto de las filas de la tabla muestran el tiempo de ejecución del modelo que se
tiene cuando el programa es monitorizado por CSX. En este caso, tanto el programa
monitor como el proceso SMPL se ejecutan en la misma máquina, siendo las comunicaciones PVM locales. El tiempo de respuesta resultante será debido al programa
monitorizado, más el monitor y más las comunicaciones locales.
Cuando el monitor solo requiere una muestra al final del tiempo de simulación, la
sobrecarga es la mínima posible, pues solo habrá dos envíos de información al mo-
94
Propuesta de un entorno paralelo para la ejecución de simulaciones
nitor: uno al principio, para establecer la forma de trabajo de modelo y saber cuáles
son sus variables de entrada y de salida, y una al final, que contiene los valores de las
variables de salida del modelo. En este caso, la sobrecarga es cercana al 5%, casi
equivalente al programa CSX-SMPL que se lanza como un programa SMPL normal.
La pequeña reducción del tiempo se debe a que, en el caso de los programas monitorizados, la condición de fin especificada por el usuario en el bucle de simulación no
es evaluada, pues es anulada por la macro csx_loop().
Según se van aumentando las muestras requeridas, el tiempo de respuesta aumenta y las comunicaciones juegan un papel muy importante en estos resultados. En
el caso del experimento, unas 5 muestras por segundo es un tope para tener una sobrecarga razonable. Un sobremuestreo aumenta notablemente la sobrecarga, llegándose a un punto donde el rendimiento cae en picado y se satura el sistema de comunicaciones.
La Figura 3-11 refleja la sobrecarga en porcentaje producida por el aumento de
las muestras requeridas.
300%
250%
Sobrecarga de SMPL en CSX (cola M/M/1 , Windows)
200%
150%
100%
50%
0%
SMPL
SMPL-CSX no
monitorizado
1 muestra
10 muestras
100 muestras
1.000 muestras
10.000
muestras
Figura 3-11. Sobrecarga del modelo M/M/1 instrumentado para CSX.
Como resultado de estas pruebas, y sobre la base del esquema de instrumentación
de los modelos de simulación, se puede extrapolar que un programa monitorizado se
Propuesta de entorno de simulacion paralela basada en réplicas
95
ejecuta prácticamente igual de rápido que su versión estándar. Recuérdese que el
modelo M/M/1 es tan sencillo que cualquier adición de código afecta adversamente a
su rendimiento; en modelos más complejos la sobrecarga sería mucho menor.
Las comunicaciones van a ser el único factor que afecte al rendimiento. Para reducir su penalización se debe mantener una tasa de muestreo baja; así, el efecto de
las comunicaciones no se apreciará en el tiempo de respuesta. En cualquier caso, no
tiene sentido mantener una frecuencia de actualización alta, pues el modelo no habrá
evolucionado apreciablemente entre extracciones consecutivas.
3.4.4 Reparto de la carga
El hecho de emplear un conjunto heterogéneo de computadores y de que su potencia se comparte con otros procesos hace imprescindible disponer de alguna forma
de repartir la carga que suponen los procesos SIM (simulaciones instrumentadas) en
la máquina virtual de simulación.
Dos van a ser los factores que repercuten en el tiempo de respuesta de las simulaciones, por una parte la velocidad de la máquina sobre la que se ejecuta el modelo y,
por otra, según la literatura, el canal aleatorio que se emplee [Lin 1994].
Será fundamental implementar mecanismos que permitan una gestión adecuada y
dinámica de las velocidades de ejecución del modelo, sobretodo si se usan métodos
de análisis como el de las réplicas independientes. En este método es necesario tener
medidas de todos los modelos para el cálculo del intervalo de confianza, y el retraso
de una réplica provoca el retraso global de toda la simulación.
En el caso de que se llegue a la conclusión de que la carga de réplicas se debe recolocar, se pueden aplicar técnicas que permitan migrar un proceso en ejecución de
una máquina a otra. Para este propósito se pueden usar técnicas de punto de comprobación (checkpointing) propuestas en entornos como MIST/MPVM [Casas et al.
1995], CoCheck [Pruyne et al. 1998] un derivado de Carmi bajo CONDOR y otros
[Song 1997], [Dikken el al. 1994]. También se puede aprovechar el software desarrollado para los entornos tipo Beowulf de segunda generación [Otero y Ferri 2002].
Pero la aplicación del reparto de carga precisa técnicas que permitan resolver aspectos como:
•
Clasificar las máquinas físicas por su potencial de simulación.
•
Medir la carga de las máquinas.
96
Propuesta de un entorno paralelo para la ejecución de simulaciones
•
Medir la velocidad efectiva de una simulación, apreciando el efecto de las variaciones de carga en la velocidad de simulación.
•
Considerar el efecto de los canales aleatorios empleados en las réplicas.
A continuación se describen las técnicas desarrolladas para estos cometidos.
3.4.4.1
Medida del potencial de simulación de una máquina
Para el cálculo inicial del reparto de los procesos de simulación se deben tener en
cuenta dos factores: por una parte la potencia de simulación de una máquina, y por
otra, la carga de procesos que actualmente soporta.
Las medidas de carga se realizan mediante los monitores LSM que CSX lanza en
cada máquina. Estos monitores son sencillos y se usan modificaciones de monitores
orientados a arquitecturas heterogéneas como MTool [Sostaric et al 1998].
La información de carga no es suficiente. Debido a la heterogeneidad de arquitecturas es difícil saber qué velocidad de simulación se conseguirá en una determinada máquina a partir de los datos de carga. Por tanto, es necesario buscar un índice
que permita clasificar las máquinas por su rendimiento ejecutando simulaciones. Para
lograrlo se ha empleado un modelo de simulación especial para obtener un índice de
prestaciones. En este caso, en todas las máquinas se ejecuta un modelo SMPL que
calcula los eventos por milisegundo que puede tratar la máquina cuando se emplea el
100% de la CPU sin interferencia de otras tareas. Esta información es guardada en la
tabla de configuración del cluster y se usará para estimar las velocidades de simulación que se lograrán a partir de los datos de carga de las máquinas.
Emplear un modelo de simulación para el cálculo de la velocidad permite considerar aspectos como: el rendimiento de la CPU para las estructuras típicas de un programa de simulación, las optimizaciones que haga el compilador/intérprete del lenguaje al ejecutar el modelo en una arquitectura particular, y el efecto de las bibliotecas del lenguaje de simulación. En este caso, el modelo SMPL no es más que un modelo de una cola M/M/1 adecuadamente preparado para este propósito.
Como ejemplo, la Tabla 3-2 muestra algunos índices de prestaciones de simulación obtenidos con el modelo en computadores tipo PC con distintos procesadores.
El programa para el cálculo de velocidad se ha compilado con GNU gcc y todas las
opciones de optimización deshabilitadas. Para ejecutarlo se ha usado el sistema operativo Linux.
Propuesta de entorno de simulacion paralela basada en réplicas
Máquina
feli
terra
zape
mapia
joanas
Procesador
Intel Pentium 75 Mhz
Intel Pentium 166 Mhz
AMD K6/2 210 Mhz
AMD Athlon 740 Mhz
Intel Pentium IV 2,4 Ghz
97
Índice
168
364
384
1.340
3.482
Tabla 3-2. Índice de prestaciones de simulación obtenidos en distintas plataformas.
A partir de las medidas de carga actual de las máquinas y del índice almacenado
en una base de datos se puede calcular un reparto de las réplicas.
Él índice de prestaciones obtenido con este método se debe considerar como una
aproximación a la potencia real de procesamiento de un computador determinado,
pues los resultados de rendimiento de un modelo particular dependen de muchos
factores. Por ejemplo, el modelo empleado para obtener estos índices ofrece resultados muy diferentes (y no proporcionales a los mostrados en la tabla) si se activan las
opciones de optimización del compilador.
3.4.4.2
Medida de la velocidad de simulación de un modelo
Puede ocurrir que la carga en las máquinas cambie drásticamente o que la estimación de la potencia no haya sido acertada. Ello sugiere que proveer un esquema de
replanificación de la colocación de los procesos sea muy atractivo, pero para poder
pensar en repartos dinámicos de carga es necesario conocer el rendimiento individual
de cada uno de los modelos en ejecución.
Ello se ha logrado empleando técnicas similares a las usadas en [Wilson et al.
1996] para la simulación distribuida con reparto dinámico de carga. En el caso de
CSX, en cada una de las réplicas del modelo en ejecución se contabilizan todos los
eventos tratados por el programa de simulación.
Cada vez que se envía una muestra de las variables de salida, también se envían
la cantidad de eventos tratados hasta el momento y la cantidad media de eventos por
milisegundo que se han tratado entre esa muestra y la anterior.
Con dicha información y el tiempo simulado hasta el momento se puede estimar
cuál será el tiempo de respuesta para alcanzar un determinado tiempo de simulación
o para generar una determinada cantidad de observaciones. Con esta información es
fácil decidir si puede ser conveniente mover la carga de réplicas a otras máquinas.
Como ejemplo la Figura 3-12 muestra la información de carga enviada a CSX por
dos réplicas ejecutándose en una máquina bajo Linux. La máquina estaba dedicada
98
Propuesta de un entorno paralelo para la ejecución de simulaciones
exclusivamente a la ejecución de las réplicas. En dicha gráfica se aprecia que las dos
réplicas ejecutan una cantidad similar de eventos por unidad de tiempo, por lo que,
asintóticamente hablando, están consumiendo tiempo simulado a la misma velocidad.
Además, como las dos réplicas son instancias del mismo programa, los requisitos de
recursos son idénticos por lo hay un reparto equitativo de estos entre ambos.
Eventos por milisegundo
300
250
200
150
100
50
Réplica 1
Réplica 2
0
Tiem po (60 segundos)
Figura 3-12. Velocidad de simulación para dos réplicas ejecutándose en una máquina.
La Figura 3-13 muestra una ejecución idéntica a la anterior, pero la máquina está
siendo empleada por un usuario interactivo. Se aprecia claramente el efecto de las
variaciones de carga en la velocidad efectiva de simulación. Las dos réplicas se ven
afectadas prácticamente de la misma forma.
Eventos por milisegundo
300
250
200
150
100
50
Réplica 1
Réplica 2
0
Tiem po (60 segundos)
Figura 3-13. Velocidad de simulación para dos réplicas ejecutándose en una máquina y
la máquina siendo empleada por un usuario interactivo.
Propuesta de entorno de simulacion paralela basada en réplicas
99
Si en lugar de ejecutar 2 réplicas en la máquina se ejecutan 4, se produce el resultado de la Figura 3-14 en cuanto a velocidad de simulación. En este caso, el procesador se ha repartido también equitativamente entre las 4 tareas y se aprecia que la
velocidad de simulación de una réplica del caso anterior es, justamente, el doble de
una réplica en este caso.
Eventos por milisegundo
300
250
200
150
100
Réplica 1
Réplica 2
50
Réplica 3
Réplica 4
0
Tiem po (60 segundos)
Figura 3-14. Velocidad de simulación para cuatro réplicas ejecutándose
en una máquina.
La técnica de medida de velocidad de simulación basada en eventos muestra ser
muy efectiva. Como el recurso más necesario para las simulaciones es el procesador
y todas las réplicas se comportan de igual forma, es muy sencillo implementar políticas de gestión de la ejecución de las réplicas.
Eventos por milisegundo
300
250
200
150
100
50
Réplica
0
Tiem po (60 segundos)
Figura 3-15. Perdida del rendimiento de simulación al activarse
un salvapantallas en Windows.
100
Propuesta de un entorno paralelo para la ejecución de simulaciones
En cualquier caso, si se emplean las máquinas de los despachos y de los laboratorios para realizar simulaciones paralelas, será necesario configurarlas adecuadamente
para lograr un aprovechamiento óptimo. Como ejemplo, la Figura 3-15 muestra una
gráfica de la información de carga enviada por un modelo ejecutándose en una máquina Windows. La caída de rendimiento se debe a la activación de un salvapantallas, que desperdicia una gran cantidad de recursos en un trabajo poco útil.
3.4.4.3
Consideraciones sobre el efecto de los canales aleatorios
Como se ha indicado antes, la velocidad de ejecución de un modelo puede depender de la velocidad de la máquina y del canal aleatorio empleado. En [Bhavasar e
Isaac 1987] se establece que los tiempos de ejecución de las réplicas son variables
aleatorias que se distribuyen exponencialmente con media normalizada a 1.
Se ha hecho un experimento para comprobar el efecto del canal aleatorio. Para
ello, se ha ejecutado el modelo de la cola M/M/1 realizado con SMPL durante un
tiempo simulado largo, y se han tomado medidas del tiempo de ejecución. En la
Tabla 3-3 se muestran los resultados. El tiempo de respuesta indicado corresponde a
la media de 10 experimentos con cada canal, para así disminuir los efectos no deterministas introducidos por cada ejecución particular en la máquina. En este caso, se
observa que no hay diferencias relevantes entre los tiempos de respuesta de cada canal.
Canal
aleatorio
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Tiempo
Eventos
Tiempo de
simulado contabilizados ejecución (ms)
30000005,1
5256643
13270,9
30000002,7
5256322
13270,4
30000009,4
5255290
13267,4
30000003,9
5256592
13270,6
30000028,6
5256386
13271,6
30000019,2
5258512
13282,7
30000012,3
5257950
13276,0
30000019,8
5258161
13297,5
30000016,2
5258126
13273,1
30000015,9
5258105
13274,4
30000002,0
5257426
13273,1
30000003,3
5257491
13275,7
30000003,4
5256334
13267,8
30000058,1
5255859
13267,9
30000000,6
5256752
13271,5
Tabla 3-3 Tiempo de respuesta de un modelo M/M/1 ejecutado
con cada uno de los canales aleatorios de SMPL
Propuesta de entorno de simulacion paralela basada en réplicas
101
Con modelos mucho más complejos se han obtenido resultados similares, aunque
las diferencias de velocidad pueden ser mayores. La Figura 3-16 muestra la evolución del tiempo de ejecución de varias réplicas de un modelo en función de la variable independiente “tiempo simulado” en un modelo muy complejo y costoso de evaluar Se aprecia una creciente diferencia de velocidad entre réplicas que se debe al
efecto que han tenido los números aleatorios empleados en la configuración particular de la réplica.
1800
1583 segundos
Tiempo de ejecución (segundos)
1600
1400
1200
1000
1355 segundos
800
600
400
200
97
100
94
91
88
85
82
79
76
73
70
67
64
61
58
55
52
49
46
43
40
37
34
31
28
25
22
19
16
13
7
10
4
1
0
Tiempo simulado
Figura 3-16. Tiempo de ejecució de un modelo en función del tiempo simulado.
A pesar de todo, aunque el efecto no parezca importante, el mecanismo de medida de la velocidad de simulación basado en eventos tratados está preparado para medir el efecto y, por tanto, para subsanarlo aplicando repartos dinámicos de carga.
3.4.5 La interfaz de usuario
En el apartado 3.3 se da una descripción global del entorno CSX; y allí se describen dos tipos de procesos orientados al acceso del usuario a CSX, UIS y UI.
El servidor de interfaz de usuario UIS es el encargado de gestionar los accesos y
los derechos de los usuarios proporcionando un punto de acceso exterior a CSX.
El interfaz de usuario UI es la aplicación con la que el usuario accede a CSX.
Cada usuario que accede a CSX lo hace a través de un proceso UI, que pretende
ofrecer una forma sencilla y uniforme de especificar los experimentos.
102
Propuesta de un entorno paralelo para la ejecución de simulaciones
Como aspecto fundamental de diseño de la interfaz de usuario de CSX se ha decidido que ésta sea fácilmente sustituible. Así, es posible tener varios tipos de UI. Por
ejemplo: orientada a línea de comandos, orientada a procesamiento por lotes, visual,
etc.
El interfaz de usuario ideal para CSX es aquel que se puede usar desde cualquier
entorno de trabajo y se adapte al gusto de cada usuario. Actualmente, la concepción
de entornos de alta y sencilla disponibilidad ha cambiado notablemente, imponiéndose la idea de que si se desea acceder a un entorno con el mínimo esfuerzo, sin tediosas instalaciones y configuraciones, la mejor opción es hacerlo a través de un navegador web, preferiblemente preparado para ejecutar aplicaciones Java. Aunque éste
puede ser un posible objetivo futuro, en la actualidad se han desarrollado dos interfaces prototipo. La primera es una aplicación visual para Windows y la segunda es una
interfaz orientada a lotes para la especificación de series de experimentos en entornos
UNIX. Se ha elegido aquí describir brevemente la interfaz visual para ilustrar las
posibilidades del entorno CSX.
3.4.5.1
Prototipo de interfaz visual para Windows
La Figura 3-17 muestra el aspecto de la interfaz. Ésta se ha desarrollado con
Borland C++ Builder para Windows. En esta aplicación se ha aplicado la filosofía
basada en capas usada en la instrumentación de los modelos de simulación. Así, un
módulo escrito en ANSI C es común a las otras implementaciones de la interfaz, y
una parte C++ corresponde a las características específicas de esta implementación.
Figura 3-17. Ssim3 en ejecución.
Propuesta de entorno de simulacion paralela basada en réplicas
103
Para ilustrar el funcionamiento de CSX se usará el modelo SMPL de la cola
M/M/1 y se seguirá una sesión típica con el entorno. El primer paso es especificar el
nombre del ejecutable que contiene el modelo, en este caso mm1 (ver Figura 3-18).
Figura 3-18. Especificando el nombre del ejecutable con el modelo.
Como los modelos están instrumentados, se aprovecha esta característica para
lanzar y sacrificar una instancia del modelo con el fin de extraer de él toda la información posible. Esta información permitirá especificar, de una forma sencilla, los
parámetros de entrada del modelo y las condiciones de fin de la simulación. Pulsando
en el botón “Auto fill” se emplea esta característica y se rellenan gran parte de los
datos del modelo (ver Figura 3-19).
En este ejemplo particular, el lanzamiento del modelo permite saber que se trata
de un programa SMPL y cuál es el nombre del modelo. En la pestaña “Input vars” se
han rellenado automáticamente los parámetros de funcionamiento del modelo, en
este caso, el tiempo de servicio Ts en la cola y el tiempo entre llegadas Ta, ambos de
tipo double (ver Figura 3-20). Y en la pestaña “Output vars” están las variables de
salida del modelo, en este caso son los índices recogidos por la estación de servicio
server (ver Figura 3-21). También se recolecta la información interna sobre el
rendimiento del modelo que genera la biblioteca CSX, información que servirá para
poder plantear el reparto dinámico de carga.
104
Propuesta de un entorno paralelo para la ejecución de simulaciones
Figura 3-19. Resultados de la activación del botón “Auto-fill” (1).
Figura 3-20. Resultados de la activación del botón “Auto-fill” (2).
Con la información recogida ya es posible lanzar simulaciones. En la pestaña
“Run Characteristics” se especifican las características de la ejecución del experimento. Por ejemplo, se pueden extraer 50 muestras de la ejecución del modelo mm1
con un tiempo de simulación entre muestras de 2.000 unidades de tiempo y usando el
canal aleatorio por defecto.
Propuesta de entorno de simulacion paralela basada en réplicas
105
Figura 3-21. Resultados de la activación del botón “Auto-fill” (3).
Figura 3-22. Ejemplo de prueba de monitorización.
La información de “Output Vars” es guardada en un archivo con formato CSV
(datos delimitados por comas) con lo que es muy sencillo aprovechar la información
resultante en muchas aplicaciones (ver Figura 3-23). También podría copiarse fácilmente a una hoja de cálculo Microsoft Excel, aprovechando las características de
“copiar y pegar” de la aplicación.
106
Propuesta de un entorno paralelo para la ejecución de simulaciones
Figura 3-23. “Output Vars” tras ejecutar la prueba.
La aplicación desarrollada permite visualizar fácilmente una gráfica de la fila seleccionada en función del tiempo de simulación. El propósito es poder “echar una
ojeada” previa a los datos obtenidos. Por ejemplo, la Figura 3-24 muestra la evolución del índice de utilización en la estación de servicio server (f_server_U)
activando una casilla de dicha fila y pulsando el botón “Display Graphic”.
Figura 3-24. Gráfica de la evolución del índice en la estación de servicio “server”.
Con la opción de mostrar gráficas se puede ver también las variables especiales
que recogen la información de rendimiento. Por ejemplo, mientras se redacta este
Propuesta de entorno de simulacion paralela basada en réplicas
107
documento se ha lanzado una nueva ejecución de mm1 con 50 muestras y un tiempo
entre muestras de 30.000.000 u.t., para así poder mostrar el efecto de las fluctuaciones de carga. Al mismo tiempo se están ejecutando un capturador de gráficos y un
monitor del sistema. La Figura 3-25 muestra la variable interna ev_mili_i (eventos por milisegundos instantánea) que recoge la cantidad de eventos procesados entre
cada envío. En este caso se aprecia la fuerte influencia en la velocidad de simulación
que tienen el resto de las tareas.
Figura 3-25. Rendimiento de la simulación medido en eventos por milisegundo.
La Figura 3-26 muestra la evolución del tiempo de respuesta medido en milisegundos que recoge la variable interna time_end. Este tiempo de ejecución y las
previsiones de carga permiten predecir aproximadamente tiempos de ejecución para
unos tiempos de simulación dados, que pueden ser usados para replanificar la carga.
En el caso de un entorno con carga constante cabe esperar una línea aproximadamente recta. Sin embargo, en la figura se aprecian cambios de pendiente que se deben a las fluctuaciones de carga.
El propósito de la pestaña “In Vars” es especificar una serie de simulaciones que
formen un experimento. En general, un modelo de simulación se emplea para evaluar
cierto índice en función de un conjunto valores de parámetros de entrada (nº de procesadores, paquetes en una red, terminales, etc).
108
Propuesta de un entorno paralelo para la ejecución de simulaciones
Figura 3-26 Tiempo de ejecución en función del tiempo de simulación.
Por ejemplo, para el modelo mm1 podemos especificar fácilmente un experimento
para obtener la utilización de la estación para un tiempo de servicio Ts de 100, 110,
... 190. La Figura 3-27 muestra “In Vars” rellenándose. Como en Ta no se ha indicado ningún valor, la simulación usará el valor por defecto.
Figura 3-27. Especificando un experimento.
Aunque no sea estadísticamente una buena estrategia, en este caso se ejecutará
cada simulación durante un tiempo de simulación largo para intentar conseguir el
valor de régimen permanente.
La Figura 3-28 muestra los datos de la simulación. Se ha indicado que se usen los
valores de “In Vars” y solo se solicita una muestra al final del periodo de simulación.
Propuesta de entorno de simulacion paralela basada en réplicas
109
Figura 3-28. Experimento ejecutándose.
En “Output Vars” están los resultados de las 10 simulaciones. Si interesase una
gráfica de la utilización en función del tiempo de servicio no se podría hacer uso de
las limitadas capacidades gráficas de esta interfaz. Es mejor utilizar una aplicación
más adecuada. Por ejemplo, se pueden copiar las filas de interés a Microsoft Excel (o
abrir el fichero CSV generado en Excel o en GNU Plot) y preparar el gráfico que
interese. Por ejemplo, la Figura 3-29 muestra una ventana de Excel con los datos
copiados en ella y en la Figura 3-30 una gráfica de los resultados realizada con dicha
hoja de cálculo.
Figura 3-29. Copiar y pegar de la interfaz de CSX a EXCEL.
110
Propuesta de un entorno paralelo para la ejecución de simulaciones
1
0,9
f_server_U
Utilización
0,8
0,7
0,6
0,5
0,4
100
110
120
130
140
150
160
170
180
190
Ts (tiempo de servicio), Ta=200
Figura 3-30. Gráfica obtenida con los valores recuperados de la interfaz CSX.
3.5 Introducción a la instrumentación de modelos SMPL y
CSIM
Este apartado pretende dar una idea de cómo se realiza la instrumentación de modelos para CSX, no pretendiendo ser la guía de referencia completa.
En la actualidad se dispone de dos capas de instrumentación. La instrumentación
para estos dos lenguajes consta de una serie de funciones comunes a ambos y de funciones específicas para el lenguaje de simulación concreto. Se describen a continuación las funciones comunes.
3.5.1 Funciones comunes de instrumentación
Las siguientes funciones de instrumentación son comunes a los dos lenguajes de
simulación instrumentados. Son:
int csx_gpdouble( int argc, char *argv[], char *pname,
double *value, double default)
Extrae el valor asignado al texto pname de los parámetros de llamada al
programa, los interpreta como un dato de tipo double y los asigna a la
Introducción a la instrumentación de modelos SMPL y CSIM
111
variable apuntada por value. En caso de no estar definido el parámetro,
asigna el valor default y devuelve un valor entero <0.
Ejemplo:
Supóngase que se ejecuta el modelo mm1 con los siguientes parámetros
mm1 Ts=15.3 Ta=2.7
entonces, para extraer el valor asociado a Ts se puede hacer
double t_servicio;
csx_gpdouble(argc, argv, "Ts",&t_servicio, 0.0);
int csx_gpint( int argc, char *argv[], char *pname,
int *value, int default)
Igual que gpdouble(), pero para datos de tipo int.
int csx_obs_new(char *name);
Crea un nuevo recolector de observaciones al que CSX accederá para recoger estadísticas. En name se especificará la etiqueta con la que se le
identificará en CSX.
Devuelve un entero >0 que se deberá usar como identificador al almacenar
las observaciones.
int csx_obs_add(int obsid, double value);
Permite añadir una nueva muestra al recolector de observaciones identificado por obsid.
Ejemplo:
int obs_trespuesta;
obs_trespuesta = csx_obs_new("Tpo_Respuesta");
…
csx_obs_add(obs_trespuesta, clock()-time_start);
112
Propuesta de un entorno paralelo para la ejecución de simulaciones
Estas dos funciones se emplean cuando las facilidades de recolección del
lenguaje de simulación específico no son suficientes o cuando se desea que
CSX pueda recoger estadísticas cada N observaciones recolectadas.
En una simulación paralela, CSX podrá especificar el número de observaciones a recoger cada vez que se desee un envío de información. En la actualidad, la información enviada será el promedio de las muestras recogidas.
void csx_uservar(char *name, double (*func)(int));
Define una variable estadística de salida del modelo, de la que CSX obtendrá el valor ejecutando la función func proporcionada por el usuario. Esta
forma de trabajo evita que el programa de simulación deba actualizar continuamente un valor para que esté siempre disponible para CSX. CSX llamará a la función pasándole el valor 1 cuando desee obtener la medida y el
valor 0 cuando se requiera una reinicialización de las estadísticas. En CSX
se identificará la variable por el parámetro name.
Ejemplo:
El siguiente fragmento muestra el posible aspecto de una función para calcular una estadística propuesta por el usuario
static double n = 0.0,s = 0.0;
double mrt(int i)
{
if (i) {
/* reset call */
s = n = 0.0;
return(0.0);
}
if (n > 0.0)
return(s/n);
else
return(0.0);
}
Para informar a CSX de la función se puede hacer
csx_uservar("Mean_resp_time",mrt);
Introducción a la instrumentación de modelos SMPL y CSIM
113
csx_loop(X)
Macro que devuele el valor lógico de X si el programa está ejecutádose en
modo no monitorizado y el valor lógico “verdadero” si el programa está
bajo el control de CSX. Se emplea para evitar que un programa de simulación en modo monitorizado termine cuando se alcanza la condición de finalización en modo no monitorizado (por ejemplo, un tiempo simulado especificado por el usuario).
3.5.2 Instrumentación específica para SMPL
Para realizar la instrumentación de modelos SMPL es necesario incluir el fichero
de cabecera csx_smpl.h inmediatamente después de la inclusión del fichero de
cabecera smpl.h.
La instrumentación sobrecarga las funciones del lenguaje de simulación
smpl(), facility() y cause(), con el propósito descrito en el apartado 3.4.3.
Además, será necesario emplear las siguientes macros:
csx_event;
Macro que debe introducirse en la estructura switch del bucle de procesamiento de eventos. Corresponde a un case con identificador de evento
reservado para CSX y que permite conseguir el control de la simulación en
los intervalos deseados.
Su uso tendrá siempre la siguiente forma,
cause(&event,&customer);
switch(event)
{
csx_event;
case … //resto de procesamiento de eventos
}
csx_firstevent;
Macro que planifica un evento con tiempo 0.0 empleando el identificador
reservado para CSX. El propósito es que el primer evento que se procese
permita a CSX tomar el control y conseguir analizar los detalles de la si-
114
Propuesta de un entorno paralelo para la ejecución de simulaciones
mulación a realizar. Este primer evento se aprovecha también para planificar el siguiente evento CSX.
Como ejemplo de modelo SMPL se puede recurrir al apartado 3.4.3, en el que se
describe el planteamiento de la instrumentación.
3.5.3 Instrumentación específica para CSIM
Para la instrumentación de la versión C de CSIM basta con incluir el fichero de
cabecera csx_csim.h inmediatamente después de incluir el fichero de cabecera
csim.h.
Igual que en el caso anterior, el fichero de cabecera sobrecarga algunas de las
funciones de CSIM.
En general, no será necesario realizar ninguna modificación más para disponer de
un modelo listo para funcionar en CSX, y que también funcionará de la manera convencional. El único requisito es que se proporcione explícitamente la función
main()al modelo, y desde ella se llame a la función de simulación de CSIM
sim().
3.5.4 Ejemplo de modelo CSIM
A continuación se lista una implementación de un modelo de cola M/M/1 adaptado a CSX. En este caso la adaptación es incluso más sencilla que en el caso de
SMPL.
/* mm1 example for CSIM */
#include <csim.h>
#include <csx_csim.h>
FACILITY f;
double Ta, Ts;
main (int argc, char *argv[])
{
Ejemplos de modelos instrumentados
115
csx_gpdouble(argc,argv,"Ta",&Ta,1.0);
csx_gpdouble(argc,argv,"Ts",&Ts,0.5);
sim();
}
sim()
{
create("sim");
f=facility("center");
while (csx_loop(simtime()<5000.0)) {
hold(exponential(Ta));
customer();
}
report();
terminate();
}
customer()
{
create("customer");
use(f,exponential(Ts));
terminate();
}
3.6
Ejemplos de modelos instrumentados
3.6.1 Modelo SMPL de una red Ethernet
El modelo de red Ethernet aquí adaptado corresponde al modelo SMPL propuesto
en [McDougall 1987]. Este modelo tiene bastantes parámetros de entrada que deben
ser recogidos con las funciones de CSX adecuadas. Las variables de salida del modelo son recogidas creando funciones de usuario que calculen los índices de prestaciones requeridos y que serán llamadas por CSX para muestrarlos.
Debido a la longitud del código original sólo se transcriben las partes del software que se han modificado. A continuación se lista el fragmento de interés, resaltando las adiciones y/o modificaciones.
/* Model SMPL ether.c */
#include
#include
#include
#include
<stdio.h>
<math.h>
<smpl.h>
<csx_smpl.h>
116
Propuesta de un entorno paralelo para la ejecución de simulaciones
...
static
static
static
static
double
double
double
double
Tp = 0.0225;
Tif = 0.0096;
Tslot = 0.0512;
Tjam=0.0032;
/*
/*
/*
/*
propagation delay (ms.)
interframe delay (ms.)
slot time (ms.)
jam time (ms.)
*/
*/
*/
*/
/* user function to calculate S output variable */
static double Ssum=0.0;
double S(int i)
{
static double rsttime = 0.0;
double t;
if (i) {
/* reset call */
Ssum = 0.0;
rsttime = time();
return(0.0);
}
t = time()-rsttime;
if (t > 0.0)
return(Ssum/t);
else
return(0.0);
}
/* user function to calculate D output variable */
static double Dsum=0.0;
static long Dcount=0L;
double D(int i)
{
if (i) {
Dsum=0.0;
Dcount=0;
return(0.0);
}
if (Dcount > 0)
return((Dsum/Dcount)/(Tp/a));
else
return(0.0);
}
/**********************************************/
void main(int argc, char *argv[])
{
int event,stn,nb; double hw=0.0,Td=0.0;
Tf=Tp/a; Ti=Tf*((double)N/G-1.0);
/* load input values fron command line */
double dval;
csx_gpdouble(argc,argv,"Tp",&Tp,0.0225); // propag. delay (ms.)
csx_gpdouble(argc,argv,"Tif",&Tif,0.0096); // interframe delay
csx_gpdouble(argc,argv,"Tslot",&Tslot,0.0512); // slot time
csx_gpdouble(argc,argv,"Tjam",&Tjam,0.0032); // jam time (ms.)
csx_gpdouble(argc,argv,"N",&dval,200); // no. of stations
N=dval;
/* propagation/transfer time ratio
*/
Ejemplos de modelos instrumentados
117
csx_gpdouble(argc,argv,"a",&a,0.05);
/* offered load: G=N*Tf/(Ti+Tf) */
csx_gpdouble(argc,argv,"G",&G,0.50);
smpl(0,"Ethernet Local Area Network");
csx_uservar("S(throughput)",S);
csx_uservar("D(norm delay)",D);
for (stn=1; stn<=Na; stn++) desc[stn].lnk=stn+1;
desc[Na].lnk=0;
init_bm(2000,2000);
csx_firstevent;
schedule(1,Tp,0);
while (csx_loop(!end))
{/* run until 10% accuracy achieved */
cause(&event,&stn);
switch (event)
{
csx_event;
case 1: TransmitFrame(); break;
case 2: Defer(stn);
break;
case 3: StartTransmit(stn);
break;
case 4: EndTransmit(stn);
break;
case 5: InitBackoff(stn);
break;
case 6: Deassert();
break;
}
}
civals(&Td,&hw,&nb);
printf("S = %.3f\n",tfsum/time());
printf("D = %.3f\n",Td/Tf);
}
...
Como puede observarse, la instrumentación sigue siempre la misma pauta: añadir
el fichero de cabecera, las modificaciones al procesamiento de eventos y la capacidad
de interpretar los parámetros escritos en la línea de comandos.
3.6.2 Plan factorial 23 equilibrado aplicado a un modelo SMPL de
servidor central
En este caso se pretende mostrar cómo aplicar la interfaz de CSX para monitorizar un modelo SMPL de un servidor central y aplicarle un análisis estadístico tipo
plan factorial 2k. La Figura 3-31 muestra el sistema de colas del modelo de interés.
118
Propuesta de un entorno paralelo para la ejecución de simulaciones
Mem.
p_disk1
t_disk1
p_disk2
n_mem
t_cpu
t_disk2
n_terms
t_terms
Figura 3-31. Red de colas del modelo implementado.
El siguiente listado corresponde al programa SMPL que representa el modelo, y
que ha sido convenientemente preparado para ser monitorizado por CSX.
/* central server */
#include <smpl.h>
#include <csx_smpl.h>
#include <stdio.h>
#define real double
#define MAXTERMS 200
static double t_terms, t_disk1, t_disk2,
p_disk1, p_disk2, t_cpu;
static int n_terms, n_mem;
static struct token {
real ts;
} task[MAXTERMS+1];
static int cpu,queuemem,terms,monitor;
static int disk[3];
static double n = 0.0,s = 0.0;
double mrt(int i)
{
if (i) {
/* reset call */
s = n = 0.0;
return(0.0);
}
if (n > 0.0)
return(s/n);
else
return(0.0);
}
static int turns = 200;
Ejemplos de modelos instrumentados
void main(int argc, char *argv[])
{
int i,event;
real r;
n = s = 0.0;
csx_gpint(argc,argv,"n_terms",&n_terms,12);
csx_gpdouble(argc,argv,"t_terms",&t_terms,30.0);
csx_gpdouble(argc,argv,"t_disk1",&t_disk1,0.03);
csx_gpdouble(argc,argv,"t_disk2",&t_disk2,0.05);
csx_gpdouble(argc,argv,"p_disk1",&p_disk1,0.9);
csx_gpdouble(argc,argv,"p_disk2",&p_disk2,0.0);
csx_gpdouble(argc,argv,"t_cpu",&t_cpu,0.5);
csx_gpint(argc,argv,"n_mem",&n_mem,8);
smpl(0,"Central server.");
csx_uservar("Mean_resp_time",mrt);
cpu = facility ("CPU",1);
disk[1] = facility ("disk1",1);
disk[2] = facility ("disk2",1);
queuemem = facility ("Mem_resource",n_mem);
terms = facility ("Terminals",n_terms);
monitor = facility ("Monitor",n_terms);
csx_firstevent;
for (i=1;i<=n_terms;i++) schedule(1,0.0,i);
while (csx_loop(turns)) {
cause (&event,&i);
switch (event)
{
csx_event;
case 1: /* arrival to terminal */
schedule (2,0.0,i);
break;
case 2: /* terminal service */
if (request(terms,i,0) == 0 )
schedule (3,expntl(t_terms),i);
break;
case 3: /* release term, go to queuemem */
release (terms,i);
request(monitor,-i,0);
task[i].ts = time();
schedule (4,0.0,i);
break;
case 4: /* arrival queuemem */
if (request(queuemem,i,0) == 0)
schedule (5,0.0,i);
break;
case 5: /* release queuemem, go to cpu */
schedule (6,0.0,i);
break;
119
120
Propuesta de un entorno paralelo para la ejecución de simulaciones
case 6: /* cpu service */
if (request(cpu,i,0) == 0)
schedule (8,expntl(t_cpu),i);
break;
case 8: /* release cpu, where go? */
release (cpu,i);
r = ranf();
if (r <= p_disk1) schedule (10,0.0,i);
else if (r <= (p_disk1+p_disk2)) schedule (20,0.0,i);
else schedule (29,0.0,i);
break;
case 10: /* disk1 service */
if (request(disk[1],i,0) == 0)
schedule (11,expntl(t_disk1),i);
break;
case 11: /* release disk1, go to cpu */
release (disk[1],i);
schedule (6,0.0,i);
break;
case 20: /* disk2 service */
if (request(disk[2],i,0) == 0)
schedule (21,expntl(t_disk2),i);
break;
case 21: /* release disk2, go to cpu */
release (disk[2],i);
schedule (6,0.0,i);
break;
case 29: /* free mem., new cpu client */
release (queuemem,i);
s += time()-task[i].ts;
n = n + 1.0;
release (monitor,-i);
turns-- ;
//printf ("Tr %.2f ",s/n);
schedule (1,0.0,i);
break;
}
}
report();
/* same of B index of monitor facility */
printf (" Mean response time = %.2f\n",s/n);
}
El índice que interesa estudiar es el tiempo medio de respuesta de los trabajos
proporcionados en los terminales. Se parte de los siguientes datos fijos:
Variable
n_term
t_term
p_disk1
p_disk2
Valor
20
10
0’9
0
Descripción
número de terminales
tiempo de reflexión
probabilidad de usar el disco 1
probabilidad de usar el disco 2
Ejemplos de modelos instrumentados
121
Se desean evaluar dos elecciones para la memoria de entrada, la CPU y el disco 1
que son:
• Memoria entrada: para 2 ó 10 trabajos.
• CPU: rendimiento de 0,1 ó 0,2 segundos por trabajo.
• Disco 1: tiempo de servicio de 0,05 ó 0,1 segundos.
Un análisis adecuado para este tipo de problemas es un plan 23 equilibrado que
con 8 experimentos es capaz de evaluar todas las posibilidades. Las variables a usar
en este experimento son cualitativas.
La Figura 3-32 muestra una hoja de cálculo de Microsoft Excel usada para preparar los datos de entrada al experimento. El factor A corresponde a las unidades de
memoria, el factor B a la CPU y el factor C al disco.
Figura 3-32. Preparando el plan 23 en Excel.
Ahora es necesario pasar estos datos a la interfaz de CSX. Para ello se usa primeramente la opción de rellenado automático de CSX (Figura 3-33).
122
Propuesta de un entorno paralelo para la ejecución de simulaciones
Figura 3-33. Parámetros de entrada al modelo usando opción “Auto Fill”.
Los datos del experimento se pueden pasar a CSX desde Excel usando “copiar y
pegar”, aplicando previamente la traspuesta a los datos de Excel, pues allí están en
columnas y en CSX en filas. El resto de los campos se fijan con los parámetros deseados (ver Figura 3-34).
Figura 3-34. Parámetros de entrada al modelo.
El siguiente paso consiste en realizar las simulaciones. En este caso se harán ejecuciones largas para tener un resultado de salida con mínimas garantías de ser estable. Nótese que éste no es el procedimiento correcto y que los resultados no tienen
validez estadística. Unos resultados más correctos se obtendrían empleando el anali-
Ejemplos de modelos instrumentados
123
zador estadístico desarrollado en el siguiente capítulo. La Figura 3-35 muestra la
interfaz de CSX ejecutando los experimentos.
Figura 3-35. Experimento en ejecución.
Finalmente, con CSX se consiguen los datos de la Tabla 3-4.
n_terms
20
20
20
20
20
20
20
20
t_terms
10
10
10
10
10
10
10
10
t_disk1
0,05
0,05
0,05
0,05
0,1
0,1
0,1
0,1
0,9
0,9
0,9
0,9
0,9
0,9
0,9
0,9
t_disk2
p_disk1
p_disk2
t_cpu
n_mem
0
0
0
0
0
0
0
0
0,1
0,1
0,2
0,2
0,1
0,1
0,2
0,2
2
10
2
10
2
10
2
10
100000
100000
100000
100000
100000
100000
100000
100000
event_count
4795497
5807581
2637220
2852770
3823489
5739481
2404152
2952084
ev_mili_m
403,2201 352,0812 399,2158 338,3266 399,4451
ev_mili_i
403,2200 352,0812
sim_time
time_start
time_end
Mean_resp_time
355,056 395,9407 340,1018
399,215 338,3264 399,4450 355,0559 395,9405 340,1017
110
110
110
110
110
110
11893
16495
6606
8432
9572
16165
12,78382 10,11871 31,32411 29,71388 18,47125 11,36811
110
110
6072
8680
35,2256 29,99521
f_CPU_U
0,876774 0,994667 0,960229 0,999996 0,701565 0,936988 0,876788 0,999809
f_CPU_B
0,099971 0,099998
f_CPU_Lq
0,604116 6,979303 0,783718 8,681610 0,369833 4,497974 0,604210 8,154842
F_disk1_U
0,394750 0,447630 0,216272 0,224924 0,630080 0,843498 0,395781
F_disk1_B
F_disk1_Lq
0,05001 0,049997
0,19968 0,199839 0,100065 0,100055 0,199524 0,199851
0,05000 0,049973 0,099876
0,122511 0,356666 0,039768
0,45003
0,10008 0,100125 0,099938
0,06520 0,298359 2,818800 0,123209 0,367662
F_disk2_U
0
0
0
0
0
0
0
F_disk2_B
0
0
0
0
0
0
0
0
F_disk2_Lq
0
0
0
0
0
0
0
0
F_Mem_resource_U
F_Mem_resource_B
1,998030 8,777650 1,999975 9,970117
2,27685 8,832056 4,136283
0
1,99983 9,096397 1,999732 9,970524
19,8181 2,846856 9,706758 4,528994 19,95382
124
Propuesta de un entorno paralelo para la ejecución de simulaciones
F_Mem_resource_Lq
F_Terminals_U
F_Terminals_B
9,221356 1,278814
13,1473 4,979646 10,97642 1,556926 13,55678 5,018475
8,77975 9,942010 4,852210
5,0481
7,02319 9,344528 4,442091 5,008574
10,00348 10,00242 10,03269 10,03174 9,996429 9,970687 10,05657 10,02075
F_Terminals_Lq
0
0
0
0
0
0
0
0
F_Monitor_U
11,21831 10,05638 15,14583 14,94846 12,97550 10,65328 15,55354 14,98801
F_Monitor_B
12,78382 10,11871 31,32411
F_Monitor_Lq
0
0
0
29,7138 18,47125 11,36811
0
0
35,2256 29,99521
0
0
0
Tabla 3-4. Datos generados con CSX al ejecutar el modelo del servidor central.
El índice que interesa analizar se ha obtenido por dos vías: como tiempo medio
de permanencia en la estación de servicio monitor y mediante la función
Mean_resp_time creada al efecto (obsérvese que los resultados coinciden). Estos
datos se copian y pegan transpuestos a la hoja de cálculo previa para proceder al
análisis de los datos. La Tabla 3-5 muestra el resultado.
A
+
+
+
+
B
+
+
+
+
C
+
+
+
+
A
B
C
2
0,1
0,05
+
10
0,2
0,1
A
2
10
2
10
2
10
2
10
B
0,1
0,1
0,2
0,2
0,1
0,1
0,2
0,2
C
0,05
0,05
0,05
0,05
0,1
0,1
0,1
0,1
MRT
12,78
10,12
31,32
29,71
18,47
11,37
35,23
30,00
22,38
Ef. A
Ef. B
Ef. C
Ef. AxB
Ef. AxC
Ef. BxC
-2,08
9,19
1,39
0,37
-1,01
-0,34
0,10
Ef. AxBxC
Tabla 3-5. Análisis de los resultados en la hoja de cálculo.
Un vistazo a los datos permite ver que el factor CPU (Ef. B) es el más destacado,
seguido del número de memorias para los trabajos. Sería necesario un análisis de la
varianza (ANOVA) para ver realmente cuáles de los resultados son significativos
estadísticamente. Obsérvese que parece haber una interacción entre la cantidad de
memoria de entrada y el tiempo de acceso al disco duro.
Ejemplos de modelos instrumentados
125
3.6.3 Modelo CSIM de una cola M/M/3//k
A continuación se lista una implementación en CSIM de un modelo de colas
M/M/3//k. La adaptación de modelos CSIM es igual o más sencilla que la de modelos SMPL. Para ilustrar otras posibilidades, se ha decidido emplear las funciones
csx_obs_new() y csx_obs_add() para la recogida de muestras. Esta funciones permiten que CSX pueda especificar el número de muestras del parámetro de
interés que se deben recoger para realizar cada envío.
// mm35
#include <csim.h>
#include <csx_csim.h>
void csx_createuservariables(void);
// ----------------- parametres del model -----------------------int NTERMS;
double Z=0.5;
double Tcpu=1.0/8.0;
#define TSIM
50000.0
FACILITY cpu;
TABLE respt_closed;
int obrespt_closed, obcpu_cnt;
void informe(void);
void closed_job(int i);
int closed_job_cnt = 0;
int terminal_cnt = 0;
double terminal_tsim = 0.0;
// ------ int main(int argc, char *argv[]) ----------------------int main(int argc, char *argv[])
{
long sid;
int i;
csx_gpint(argc,argv,"nterms",&NTERMS,5);
set_model_name("MM35");
obrespt_closed = csx_obs_new("obrespt_closed");
obcpu_cnt = csx_obs_new("obcpu_cnt");
sim();
}
126
Propuesta de un entorno paralelo para la ejecución de simulaciones
// ------------------- sim() -----------------------------------void sim (void) {
int i;
create("sim");
cpu = facility_ms("CPU",3);
respt_closed = table("respt_closed");
// closed jobs
for (i=0;i<NTERMS;i++)
closed_job(i);
hold(0.0);
// impedir la terminación en modo monitorizado
if (CSX_M != CSXMODE_OFF) {
EVENT dummy;
csx_proc();
hold(0.0);
dummy = event("dummy");
wait(dummy); //no ocurrirá nunca
}
else {
hold(TSIM);
informe();
conclude_csim();
}
}
// ----------------------- informe() -----------------------------void informe (void) {
int i;
printf("est, serv, util, qlen, resp, tput\n");
printf("CPU, %lf, %lf, %lf, %lf, %lf\n", serv(cpu), util(cpu),
qlen(cpu), resp(cpu), tput(cpu));
printf("Tiempo respuesta trabajos cerrados. %lf\n",
table_mean(respt_closed));
printf("Productividad terminales........... %lf\n",
terminal_cnt/(clock-terminal_tsim)) ;
printf("Trabajos terminales................ %d\n",
terminal_cnt);
}
// -------------- void closed_job(int i) -------------------------void closed_job(int i) {
double dprob;
TIME timestamp;
create("closed_job");
while(1) { // siempre
hold(exponential(Z));
terminal_cnt++;
timestamp = clock;
CPU_CLOSE:
//terminal
Ejemplos de modelos instrumentados
127
use(cpu, exponential(Tcpu)); // CPU
csx_obs_add(obcpu_cnt,1.0);
closed_job_cnt++;
record(clock - timestamp, respt_closed);
csx_obs_add(obrespt_closed,clock - timestamp);
} //while(1)
}
3.6.4 Modelo CSIM de un servidor central mixto
El siguiente listado corresponde a la implementación en CSIM de un modelo servidor central mixto (con clientes abiertos y cerrados). En este caso se ha optado por
instrumentar el modelo de manera que se recojan estadísticas mediante funciones
definidas por el usuario y funciones csx_obs*(). Se pretende también ilustrar la
forma de recoger muchos índices de prestaciones del modelo sin tener que realizar un
gran esfuerzo de codificación de funciones de usuario.
// mixed central server
#include <csim.h>
#include "csx_csim.h"
void csx_createuservariables(void);
// ----------------- parametres del model ------------------------#define NDISK
3L
double Tdisk=0.01;
double Tdisk1=0.02;
double Tdisk2=0.05;
int NTERMS;
double Z=6.0;
double lambda;
double Tcpu=0.0375;
#define TSIM
50000.0
FACILITY cpu;
FACILITY disk[NDISK];
TABLE respt_open, respt_closed;
//observadores
int obrespt_open, obrespt_closed, obterm_cnt;
void
void
void
void
open_job(void);
open_job_generator(void);
informe(void);
closed_job(int i);
128
Propuesta de un entorno paralelo para la ejecución de simulaciones
int closed_job_cnt = 0;
int open_job_cnt = 0;
int terminal_cnt = 0;
double terminal_tsim = 0.0;
// ----------- int main(int argc, char *argv[]) ------------------int main(int argc, char *argv[])
{
long sid;
int i;
csx_gpint(argc,argv,"nterms",&NTERMS,48);
csx_gpdouble(argc,argv,"lambda",&lambda,0.0001);
set_model_name("Mixed central server");
// observadores
obrespt_open = csx_obs_new("obrespt_open");
obrespt_closed = csx_obs_new("obrespt_closed");
obterm_cnt = csx_obs_new("obterm_cnt");
sim();
}
// ---------------------- sim() ---------------------------------void sim (void) {
int i;
create("sim");
cpu = facility("CPU");
facility_set(disk,"DISK",NDISK);
respt_open = table("respt_open");
respt_closed = table("respt_closed");
// closed jobs
for (i=0;i<NTERMS;i++)
closed_job(i);
hold(0.0);
// open jobs
if (lambda > 0.0)
open_job_generator();
/* #@ */
csx_createuservariables();
//detectar si se trabaja en modo monitorizado
if (CSX_M != CSXMODE_OFF) {
EVENT dummy;
csx_proc();
hold(0.0);
dummy = event("dummy");
wait(dummy); //no ocurrirá nunca
}
Ejemplos de modelos instrumentados
129
else {
hold(TSIM);
informe();
conclude_csim();
}
}
}
// ------------------ informe() ----------------------------------void informe (void) {
int i;
printf("est, serv, util, qlen, resp, tput\n");
printf("CPU, %lf, %lf, %lf, %lf, %lf\n", serv(cpu), util(cpu),
qlen(cpu), resp(cpu), tput(cpu));
i=0; printf("DISK_1, %lf, %lf, %lf, %lf, %lf\n", serv(disk[i])
,util(disk[i]), qlen(disk[i]), resp(disk[i]), tput(disk[i]));
i=1; printf("DISK_2, %lf, %lf, %lf, %lf, %lf\n", serv(disk[i])
,util(disk[i]), qlen(disk[i]), resp(disk[i]), tput(disk[i]));
printf("Temps resposta treballs oberts %lf\n",
table_mean(respt_open));
printf("Temps resposta treballs tancats %lf\n",
table_mean(respt_closed));
printf("Throughput terminals %lf\n",
terminal_cnt/(clock-terminal_tsim)) ;
printf("Treballs terminals %d\n",terminal_cnt);
}
// ---------------- void open_job_generator(void) ----------------void open_job_generator(void) {
create("open_job_generator");
while (1) {
open_job(); //new job
hold(expntl(1.0/lambda));
}
//interarrival
}
// -------- void open_job(void) ----------------------------------void open_job(void) {
double dprob;
TIME timestamp;
create("open_job");
timestamp = clock;
CPU_OPEN:
use(cpu, exponential(Tcpu)); //CPU use
dprob = uniform01();
if (dprob <= (25.0/320))
{ use(disk[0], exponential(Tdisk1)); goto CPU_OPEN;}
else if (dprob <= ((25.0+6.0)/320))
{ use(disk[1], exponential(Tdisk2)); goto CPU_OPEN;}
else
{ open_job_cnt++;
record(clock - timestamp, respt_open);
csx_obs_add(obrespt_open,clock - timestamp);
130
Propuesta de un entorno paralelo para la ejecución de simulaciones
}; // OUT
}
// ---------- void closed_job(int i) ----------------------------void closed_job(int i) {
double dprob;
TIME timestamp;
create("closed_job");
while(1) { // looping forever
hold(exponential(Z));
//terminal
terminal_cnt++;
csx_obs_add(obterm_cnt,1.0);
timestamp = clock;
CPU_CLOSE:
use(cpu, exponential(Tcpu)); // CPU use
dprob = uniform01();
if (dprob <= (25.0/320))
{
use(disk[0], exponential(Tdisk1));
goto CPU_CLOSE;}
else if (dprob <= ((25.0+6.0)/320))
{
use(disk[1], exponential(Tdisk2));
goto CPU_CLOSE;}
else
{ closed_job_cnt++;
record(clock - timestamp, respt_closed);
csx_obs_add(obrespt_closed,clock - timestamp);
}; //TERM
} //while(1)
}
// -------------- user variables -------------------#define CSXCSIMFUNC(A,B) double A (int x) \
{static int i = 1; \
if (i==1) \
{ \
i=0;\
return(0.0); \
} \
else \
return(B); \
}
CSXCSIMFUNC(cpu_serv,serv(cpu))
CSXCSIMFUNC(cpu_util,util(cpu))
CSXCSIMFUNC(cpu_qlen,qlen(cpu))
CSXCSIMFUNC(cpu_resp,resp(cpu))
CSXCSIMFUNC(cpu_tput,tput(cpu))
double term_tput (int x)
{static int i = 1;
Ejemplos de modelos instrumentados
if (x==1) { //reset
terminal_cnt = 0;
terminal_tsim = clock;
return(0.0);
}
if (i==1)
{
i=0;
return(0.0);
}
else
return(terminal_cnt/(clock-terminal_tsim));
}
double term_cnt (int x)
{static int i = 1;
if (x==1) { //reset
terminal_cnt = 0;
return(0.0);
}
if (i==1)
{
i=0;
return(0.0);
}
else
return(terminal_cnt);
}
CSXCSIMFUNC(disk1_serv,serv(disk[0]))
CSXCSIMFUNC(disk1_util,util(disk[0]))
CSXCSIMFUNC(disk1_qlen,qlen(disk[0]))
CSXCSIMFUNC(disk1_resp,resp(disk[0]))
CSXCSIMFUNC(disk1_tput,tput(disk[0]))
CSXCSIMFUNC(disk2_serv,serv(disk[1]))
CSXCSIMFUNC(disk2_util,util(disk[1]))
CSXCSIMFUNC(disk2_qlen,qlen(disk[1]))
CSXCSIMFUNC(disk2_resp,resp(disk[1]))
CSXCSIMFUNC(disk2_tput,tput(disk[1]))
CSXCSIMFUNC(open_cnt,open_job_cnt)
CSXCSIMFUNC(closed_cnt,closed_job_cnt)
CSXCSIMFUNC(frespt_open,table_mean(respt_open))
CSXCSIMFUNC(frespt_closed,table_mean(respt_closed))
void csx_createuservariables(void) {
csx_uservar("cpu_serv",cpu_serv);
csx_uservar("cpu_util",cpu_util);
csx_uservar("cpu_qlen",cpu_qlen);
csx_uservar("cpu_resp",cpu_resp);
131
132
Propuesta de un entorno paralelo para la ejecución de simulaciones
csx_uservar("cpu_tput",cpu_tput);
csx_uservar("term_tput",term_tput);
csx_uservar("term_cnt",term_cnt);
csx_uservar("disk1_serv",disk1_serv);
csx_uservar("disk1_util",disk1_util);
csx_uservar("disk1_qlen",disk1_qlen);
csx_uservar("disk1_resp",disk1_resp);
csx_uservar("disk1_tput",disk1_tput);
csx_uservar("disk2_serv",disk2_serv);
csx_uservar("disk2_util",disk2_util);
csx_uservar("disk2_qlen",disk2_qlen);
csx_uservar("disk2_resp",disk2_resp);
csx_uservar("disk2_tput",disk2_tput);
csx_uservar("open_cnt",open_cnt);
csx_uservar("closed_cnt",closed_cnt);
csx_uservar("rnd_cnt",rnd_cntb);
csx_uservar("respt_open",frespt_open);
csx_uservar("respt_closed",frespt_closed);
}
3.7
Conclusiones
Con el objetivo principal de obtener un entorno paralelo donde ejecutar simulaciones por eventos discretos, este capítulo propone las características básicas deseables de dicho entorno.
El entorno paralelo propuesto aquí pretende ser capaz de gestionar eficientemente
los experimentos de simulación que múltiples usuarios soliciten, encargándose de
repartir el trabajo entre los recursos de computación disponibles.
Con estas premisas se describe también en este capítulo el desarrollo de las técnicas para obtener el entorno.
Una premisa fundamental es la aplicabilidad a cualquier lenguaje de simulación
por eventos. Con la técnica de inyección de eventos en la cola del simulador, se tiene
un mecanismo de instrumentación que permite, al entorno paralelo, tomar el control
de un modelo de simulación de forma transparente.
Se ha comprobado que la instrumentación del modelo y su ejecución en el entorno paralelo no supone una sobrecarga apreciable en la ejecución de éste, con lo que
se demuestra lo adecuado de la técnica propuesta.
Conclusiones
133
La adaptación de un modelo al entorno paralelo requiere muy pocas modificaciones, con lo que se garantiza una rápida aplicabilidad.
Como la “máquina paralela de simulación” está compuesta por computadores de
distintas prestaciones, se han desarrollado y probado las técnicas que permiten, por
una parte, clasificar a las máquinas por su potencia de simulación, y por otra, medir
la velocidad efectiva de simulación de un modelo en ejecución. Estas dos medidas
pueden permitir la aplicación de técnicas de migración de carga en un futuro.
En este capítulo no se ha hablado del análisis estadístico a realizar con los datos
de salida de las réplicas, pues se ha seguido la estrategia de separar ambas partes para
garantizar, en la medida de lo posible, su independencia.
4. Desarrollo de un analizador paralelo basado en réplicas independientes
4
Desarrollo de un analizador
paralelo basado en réplicas
independientes
En este capítulo se describe el planteamiento, desarrollo y refinamiento de un
módulo de análisis de la salida basado en el método de las réplicas independientes en
régimen permanente, aplicado a la herramienta CSX.
Para la implementación del método de las réplicas se elige ejecutar una cantidad
fija de ellas y permitir que evolucionen hasta que se alcancen las condiciones deseadas. Esta aproximación es la más adecuada desde el punto de vista estadístico, pero
presenta problemas en su implementación. Se ha diseñado un algoritmo de gestión de
las réplicas que permite resolver la limitación y permite obtener un gran rendimiento
a la propuesta. El algoritmo se describe en el apartado 4.2.
Para terminar una simulación por eventos discretos se pueden emplear distintos
criterios de parada. En este sentido se proponen nuevos criterios de parada que son
descritos en el apartado 4.3. La propuesta de algoritmo de gestión de réplicas es
evaluada junto a los criterios de parada, consiguiéndose una buena aceleración de las
simulaciones y unos criterios de parada más robustos, estadísticamente hablando, que
los clásicos.
En los experimentos del apartado antes reseñado se pone de manifiesto la problemática del método de las réplicas para conseguir importantes aceleraciones en el
caso de modelos con transitorios iniciales apreciables. En el apartado 4.4 se propone
un algoritmo para reducir el efecto del transitorio. Los experimentos realizados con
la propuesta demuestran una mejora de la calidad estadística (cobertura) de los datos
de salida de la simulación sin incrementar el coste de la simulación, y permitiendo
mayores posibilidades de aceleración.
136
Desarrollo de un analizador paralelo basado en réplicas independientes
Para completar la flexibilidad de la herramienta de análisis estadístico, en el
apartado 4.5 se propone un algoritmo para la automatización de los tiempos entre
extracciones en aquellos modelos cuyas variables de salida deban analizarse empleando como referencia el tiempo simulado.
Este capítulo es un extracto de [Perles 1998], [Perles et al. 2002b] y [Perles et al.
2003].
4.1 Criterio de selección del método y propuesta básica de
funcionamiento
El planteamiento de la herramienta CSX hace viable la aplicación de aquellos
métodos de análisis estadístico de la salida descritos en el capítulo 2 que no precisan
de procesamiento estadístico previo en los esclavos.
La justificación de la elección del método de las réplicas frente a las propuestas
que se adaptan con naturalidad a la secuencialidad de un monoprocesador es, precisamente, el hecho de que en este caso no se tiene dicha restricción. Ello permite
aprovechar la gran ventaja estadística de la independencia real entre réplicas exclusiva de este método y que fuerza a otros métodos a estimar o intentar reducir las correlaciones muestrales.
El método de las réplicas es el preferido de muchos autores por este hecho [Law
y Kelton 2000] y por otras ventajas adicionales cuando se pretenden comparar distintas configuraciones de sistemas. Sin embargo, la realidad muestra que es más fácil
implementar un método estadístico con control automático de parada basado en una
técnica de análisis secuencial (por ejemplo, lotes) que hacerlo con el método de las
réplicas, pues en el segundo caso se debe fijar a priori el tamaño de cada réplica, con
lo que se está a expensas de que el efecto del transitorio inicial sesgue los resultados.
Si se usa el método de las réplicas en paralelo y este paralelismo se basa en lanzar
réplicas de tamaño fijo hasta que se alcance un criterio de parada se pueden producir
efectos indeseados de sesgo que obligan a importantes cautelas como se demuestra
en [Heidelberger y Welch 1983, Heidelberger 1988].
En [Glynn 1995] se muestra que es asintóticamente mejor ejecutar un conjunto
reducido de réplicas durante mucho tiempo que ejecutar muchas cortas. Ello se debe
principalmente al talón de Aquiles del método de las réplicas, que es el efecto del
transitorio inicial.
Propuesta de algoritmos para gestionar la ejecución de las réplicas independientes
137
El entorno donde resulta natural explotar la herramienta CSX consiste en los laboratorios docentes de un departamento universitario, los cuales se pueden emplear
para propósitos de investigación fuera del horario de prácticas. En el caso del DISCA, dichos laboratorios están constituidos por entre 20 y 30 ordenadores personales
con idénticas características, por lo que parece muy viable utilizar el método de las
réplicas independientes. Pero se elige la opción de lanzar una cantidad fija de réplicas y dejar que evolucionen hasta que se cumpla un determinado criterio de parada.
Con ello se evita el problema del sesgo que implica tener que decidir el tamaño de la
réplica (en términos de tiempo de simulación, de consumo de CPU, etc.).
La propuesta básica del método es lanzar un número fijo de modelos de simulación idénticos en diferentes máquinas. La única diferencia entre los modelos es que
emplearán un canal de números aleatorios diferente y, por tanto, serán estadísticamente independientes entre sí. Los modelos deberán enviar a intervalos fijos (medidos en las unidades que interese) las medias estadísticas recolectadas de los índices
de prestaciones elegidos.
El proceso monitor recoge las muestras y las analiza para comprobar si se ha
cumplido un determinado criterio de parada. Si el criterio se cumple, se envía orden
de que las réplicas terminen; en caso contrario, la orden es que continúen hasta el
siguiente punto de sincronización y se repita el proceso.
En principio, el beneficio teórico de esta aproximación es la disminución del
efecto del transitorio inicial según aumenta el tamaño de la réplica. Técnicas de disminución del efecto del transitorio podrían mejorar aún más esta aproximación, reduciéndose el tiempo de simulación necesario o aumentando la cobertura de las medidas.
4.2 Propuesta de algoritmos para gestionar la ejecución de
las réplicas independientes
El primer prototipo de gestor de la ejecución de las réplicas se propuso en [Perles
1994]. Como ya se ha indicado, la manera de gestionar la ejecución de las réplicas
consiste en que estas envíen la información estadística recogida a intervalos fijos
(checkpoints). En el primer prototipo, cada vez que la réplica ha enviado su información, esperará a que el proceso monitor le indique si debe seguir calculando o no. El
monitor dará la orden de continuar cuando haya recibido la información de cada una
de las réplicas y no se hayan alcanzado las condiciones de finalización de la simula-
138
Desarrollo de un analizador paralelo basado en réplicas independientes
ción. La Figura 4-1 muestra un esquema del comportamiento real cuando se emplea
esta estrategia.
Monitor
Réplica 1
Réplica 2
Réplica 3
Desocupado
1 rocesando
P
1
tiempo
Figura 4-1. Escenario típico de una monitorización de 3 réplicas sincronizándose en
cada punto de comunicación de estadísticas.
Este planteamiento hace que el tiempo de ejecución de la simulación sea el sumatorio de los máximos tiempos de ejecución de las réplicas entre dos puntos consecutivos de comprobación (checkpoint). Expresado matemáticamente, para k réplicas
y un total de c puntos de comprobación se tiene,
t ≈ ∑ (máx(t R1, j , t R 2, j ,..., t Rk , j ) + t mon + t com1 + t com 2 ) =
c
j =1
c
= c(t mon + t com1 + t com 2 ) + ∑ máx(t R1, j , t R 2, j ,..., t Rk , j )
(4.1)
j =1
donde tRi,j representa el tiempo de reloj necesario para procesar (simular) el jésimo checkpoint en la réplica i, tmon representa el tiempo para que el monitor procese la información estadística recibida, tcom1 representa el tiempo necesario para la
transmisión de la información estadística de la réplica más lenta al monitor, y tcom2
representa el tiempo necesario para la transmisión de las respuestas del monitor a las
réplicas. Por simplicidad se han supuesto constantes tmon, tcom1 y tcom2 respectivamente.
La expresión muestra claramente que a mayor cantidad de puntos de comprobación se tendrán un aprovechamiento peor de los recursos computacionales. En la expresión destacan, por una parte, los costes fijos de monitorización y de comunicación
y, por otra, la suma de los costes de la peor réplica en cada punto de comprobación.
Teniendo en cuenta que el tiempo de ejecución de cada fragmento de simulación
no es exactamente el mismo y que los efectos de la variación de carga de máquinas
particulares afectarán muy negativamente a la globalidad de la simulación, cabe esperar que los efectos sean considerables, obligando a tomar otras alternativas.
Propuesta de algoritmos para gestionar la ejecución de las réplicas independientes
139
En [Yau 1999] ya se indica que la necesidad de sincronización de las réplicas hace que esta técnica no sea adecuada para su aplicación en entornos paralelos. Esta
importante limitación debe se ha de soslayar para hacer viable el método de análisis
propuesto.
Una posibilidad consiste en que las réplicas se comuniquen asíncronamente con
el monitor, sin espera en una sincronización. Con ello se consigue una disminución
del tiempo de respuesta y un mejor aprovechamiento de los recursos. Un beneficio
adicional directo será una disminución del efecto de las fluctuaciones transitorias de
la carga en un computador compartido, siendo la carga media del computador un
índice apropiado para el reparto de réplicas. La Figura 4-2 ilustra el nuevo escenario
empleando la estrategia propuesta.
Monitor
Réplica 1
Réplica 2
Réplica 3
Desocupado
1 rocesando
P
1
tiempo
Figura 4-2. Escenario asíncrono de una monitorización de 3 réplicas.
Ahora, el tiempo de ejecución de la simulación se puede estimar aproximadamente como,
c
c

 c
t ≈ máx ∑ t R1, j ,∑ t R 2, j ,...,∑ t Rk , j 
(4.2)
j =1
j =1

 j =1
El primer beneficio es la práctica desaparición de los costes, en tiempo de ejecución, que implican el monitor y las comunicaciones. Se consigue que el tiempo de
ejecución de la simulación sea, precisamente, el tiempo de ejecución de la réplica
más lenta, midiéndose este tiempo de igual manera que se haría en un entorno secuencial, pero con todas las ventajas de un entorno paralelo. Como importante ventaja adicional, las pequeñas fluctuaciones de carga, que afectaban muy negativamente a la aproximación anterior, son absorbidas por esta estrategia.
Un defecto de la segunda aproximación es la posibilidad de desperdicio de tiempo de computación debido a que parte de las réplicas pueden haber simulado más allá
del punto de comprobación que cumple la condición de fin de la simulación. Esta
situación parece inevitable si se quieren obtener las ventajas descritas.
140
Desarrollo de un analizador paralelo basado en réplicas independientes
Aunque no parece necesario en este caso, es posible cuantificar estadísticamente
el efecto de las expresiones (4.1) y (4.2) aplicando los resultados de [Bhavasar and
Isaac 1987], donde se establece que los tiempos de ejecución de las réplicas son variables aleatorias que se distribuyen exponencialmente con media normalizada a 1.
Este algoritmo de gestión de las réplicas se ha implementado en CSX, y ha cumplido los resultados teóricos expuestos. Por tanto, la estrategia resuelve los problemas
comentados en la literatura y puede ser un buen candidato para un gestor paralelo
basado en réplicas independientes.
La aproximación propuesta es satisfactoria en un escenario donde cada réplica se
ejecuta en una máquina distinta. Ése puede no ser el escenario en muchas ocasiones,
pudiendo ocurrir que se desee ejecutar más de una réplica en una máquina (por
ejemplo, si se dispone de pocas máquinas, o una máquina es más potente que las
otras). La Figura 4-3 ilustra esta situación; en el caso b) se ha decidido introducir 2
réplicas en cada estación.
R1
R2
R3
R1
R2
R3
R4
R5
R6
R4
R5
R6
a)
b)
Figura 4-3. Ejemplos del reparto de 6 réplicas. a) Una en cada estación,
b) Dos en cada estación.
En los casos en que se decida planificar más de una réplica en cada estación, se
estará repartiendo el tiempo de procesador entre cada réplica, por lo que todas competirán continuamente por dicho recurso. Parece intuitivo que la aproximación inicial
(con síncronización en el monitor) puede no ser tan mala en este caso, pues cuando
una réplica “llega” a su punto de comprobación y se detiene, cede el recurso de computación al resto de las réplicas, autocompensándose el sistema de simulación.
La Figura 4-4 muestra un escenario límite de una simulación real donde un monitor y 5 réplicas se ejecutan en la misma máquina con el esquema síncrono. La imagen se ha obtenido con el monitor XPVM que complementa al paquete PVM. Cuando la réplica más rápida en cada punto de comprobación (checkpoint) termina, el
Propuesta de algoritmos para gestionar la ejecución de las réplicas independientes
141
resto tienen más posibilidades de terminar antes. A pesar de todo, se sigue apreciando el efecto negativo de la sincronización con el monitor.
Monitor
Procesando
Desocupado
Figura 4-4. Traza de una simulación real síncrona de un monitor
y 5 réplicas ejecutándose en una máquina.
La Figura 4-5 muestra el mismo escenario pero trabajando en modo asíncrono. Se
aprecia un “alargamiento” en el tiempo de ejecución de cada punto de comprobación.
En dicha imagen también se puede apreciar que el tiempo de ejecución de un checkpoint no es constante e independiente de puntos de comprobación anteriores.
Figura 4-5. Traza de una simulación real asíncrona de un monitor y 5 réplicas ejecutándose en una máquina.
En este tipo de escenarios sería ideal combinar las ventajas de las dos aproximaciones. Para ello se ha mejorado el algoritmo incluyendo un esquema híbrido de sincronización local para las réplicas que se ejecutan en una misma máquina.
El sistema de sincronización local se basa en que todas las réplicas colocadas en
una máquina conozcan el número de puntos de comprobación que han generado el
resto de réplicas en la misma máquina. Una réplica podrá continuar simulando si no
ha sobrepasado en una cantidad fija el número de puntos (checkpoints) que han producido el resto de las réplica locales.
142
Desarrollo de un analizador paralelo basado en réplicas independientes
El mecanismo se plantea de la siguiente forma: dadas l réplicas locales y cki el
número de puntos de comprobación generados por una réplica, la réplica i podrá
continuar simulando si se cumple que,
mín(ck1, ck2, … ckl) + TH > cki
(4.3)
donde TH es un valor entero mayor o igual a 1.
Con esta expresión se consigue limitar la "distancia", medida en puntos de comprobación, entre las réplicas más rápidas y las más lentas, y proporcionar recursos
computacionales a las más lentas cuando se rezaguen.
La Figura 4-6 muestra un ejemplo de escenario donde la distancia máxima entre
la réplica más rápida y la más lenta es TH=1. En el gráfico, los puntos indican el
instante en que una réplica indica a sus vecinas que ha completado su punto de comprobación. Debajo de cada punto se representa el número de checkpoints finalizados
hasta el momento.
R1
R2
R3
(ckR1, ckR2, ckR3)
(0,0,0)
(1,1,0)
(1,2,1)
(2,2,2)
(1,0,0) (1,1,1)
(1,2,2)
Figura 4-6. Ejemplo de sincronización local con TH=1.
En la Figura 4-7 se muestra un escenario con distancia TH=2.
R1
R2
R3
(1,1,0) (2,2,0)
(0,0,0)
(ckR1, ckR2, ckR3)
(1,0,0)
(2,1,0)
(2,2,1)
(3,3,2)
(2,3,1)
(2,3,2)
Figura 4-7. Ejemplo de sincronización local con TH=2.
Para poder evaluar la expresión (4.2) se requiere que todas las réplicas conozcan
el estado de simulación del resto. La opción finalmente desarrollada consiste en que
cada réplica conozca cuáles son sus vecinas locales y les remita un mensaje asíncrono cada vez que finaliza un punto de comprobación.
Propuesta de algoritmos para gestionar la ejecución de las réplicas independientes
143
Tal como se ha realizado la implementación de CSX, la cola de mensajes sólo se
consulta al final de cada punto de comprobación. En ese momento es cuando la réplica sabe cómo está el resto y toma la decisión de continuar o no (bloqueándose o no a
la espera de un mensaje).
Esta implementación no produce ninguna sobrecarga apreciable a las réplicas y se
aprovecha del esquema de diseño de CSX. Como ventaja adicional, todas las comunicaciones son locales. Los únicos aspectos negativos vienen en la complicación de
relaciones entre réplicas en el caso de aplicar técnicas de tolerancia a fallos.
El sistema de sincronización local diseñado es especialmente útil cuando se pretende comparar un sistema con dos configuraciones A y B. El método de las réplicas
permite un análisis pareado donde se estudia directamente la diferencia entre las medias X A − X B de las dos configuraciones en lugar de simular por separado y comparar después los resultados. Al trabajar así se aumenta la potencia del experimento y
se puede recurrir, además, al uso de técnicas de reducción de la varianza como números aleatorios comunes.
Si suponemos el escenario asíncrono inicialmente descrito, el problema aparente
de realizar un experimento paralelo con dos modelos es la probable diferencia de
velocidades de simulación, siendo el modelo más costoso de ejecutar el que rezague
el experimento, permitiendo que el modelo más rápido esté realizando trabajo en
balde yendo más allá de lo necesario.
Para enfocar el problema, una posibilidad consiste en conseguir que todas las réplicas se ejecuten al mismo ritmo, y que, de alguna manera, se asignen los recursos
computacionales de forma que se puedan compensar las velocidades, proporcionando
más recursos al que más los necesita.
R1A
R2A
R3A
R4A
R5A
R6A
R1B
R2B
R3B
R4B
R5B
R6B
Figura 4-8. Análisis pareado con una réplica de cada modelo en cada máquina.
Para hacerlo, se puede aprovechar el mecanismo de sincronización local entre los
experimentos pareados, y colocar dos réplicas en cada máquina, una del modelo A y
otra del modelo B. La réplica más rápida cederá procesador a la más lenta para compensar las diferencias de velocidad. El mecanismo funcionará de forma transparente
utilizando los algoritmos descritos y sin necesidad de intervención del usuario. La
144
Desarrollo de un analizador paralelo basado en réplicas independientes
Figura 4-8 ilustra la aproximación. Este mecanismo es apropiado siempre y cuando
los dos modelos quepan en la máquina.
4.3
Criterios de parada. Propuestas y su análisis
Partiendo de que CSX está empleando el analizador estadístico basado en el método de las réplicas independientes, supóngase que se lanzan k réplicas de un programa de simulación, cada una de las cuales emplea un canal aleatorio distinto.
Sea ahora X j la media de las observaciones de una variable de salida de la jésima réplica, que es remitida al monitor de CSX en cada punto de comprobación.
Según la teoría del método de las réplicas independientes, Estas observaciones se
pueden considerar como realizaciones de variables aleatorias independientes y distribuidas normalmente. El monitor calcula un estimador de la verdadera media
µ = E( X ) como,
k
X=
∑X
j
j =1
k
Para obtener un intervalo de confianza con un porcentaje del (1-α)100% asintóticamente válido para la media global X , el monitor aplica la siguiente ecuación,
X ± t1−α / 2,k −1
S k2
k
donde S k2 es la varianza de las medias muestrales y t es la distribución t de Student.
Cada vez que se alcanza un punto de comprobación en las réplicas, el monitor
reevalúa las anteriores expresiones y, en función de los resultados obtenidos y de
otros criterios deberá decidir si se debe poner fin a la simulación. A ello se le denomina "criterio de parada".
A continuación se describirán los criterios de parada clásicos y nuevas propuestas. Dichos criterios se han evaluado desde el punto de vista del rendimiento en la
ejecución de la simulación y cobertura de la verdadera media. En esta sección se describirá también la metodología de evaluación y los resultados que se obtienen con
ella.
Criterios de parada. Propuestas y su análisis
145
4.3.1 Criterio 1: Comprobación de la precisión relativa del intervalo de
confianza
El criterio de parada más ampliamente extendido para todos los métodos de análisis de la salida secuenciales es la comprobación del error relativo de la mitad del intervalo de confianza a un determinado nivel de confianza. Para el método de las réplicas dicho error se calcula como,
ε=
t1−α / 2 ,k −1
Sk2
k
X
El criterio se aplica comprobando si el error relativo calculado con la expresión
anterior está por debajo de un umbral ε max , dándose entonces por finalizada la simulación. Es decir,
si ε < ε max entonces parar
Valores habituales de εmax son 0,05 ó 0,1 que corresponden a un error relativo del
5% y del 10% respectivamente. Estos errores se suelen calcular a niveles de confianza del 95% o del 99%.
En general, elegir errores relativos pequeños es mejor que elegirlos grandes desde
el punto de vista de la cobertura de las medias, ya que suele obligar a los métodos de
análisis de la salida a simular más, con lo que disminuyen problemas de falta de
normalidad y de correlación.
4.3.2 Criterio 2: Comprobación del error relativo y su decrecimiento
La aleatoriedad de la salida de las simulaciones y los efectos de correlación pueden dar lugar a terminaciones prematuras de las simulaciones por culpa de una casual
convergencia de factores adversos que se dan en momentos concretos de la simulación.
Para evitar estos efectos, se suele forzar a una simulación que cumple la condición de finalización a que simule algo más para estar más seguro de que se sigue
cumpliendo dicha condición y no se trata de un efecto espúreo. Por ejemplo, el paquete comercial QNAP utiliza esta estrategia de simular más allá del cumplimiento
del error relativo para comprobar que se sigue cumpliendo la condición de fin.
146
Desarrollo de un analizador paralelo basado en réplicas independientes
Aquí se propone aplicar la misma idea al método de las réplicas, concretándose
en que la simulación terminará cuando se alcance el error relativo deseado y éste
decrezca en las siguientes muestras. Esta comprobación se hará dos puntos de comprobación más adelante, es decir,
si
εmax > εi >εi+1 >εi+2 entonces parar
La aplicación de esta técnica se basa en que las medias que se obtienen al empezar la simulación suelen ser mucho más variables que cuando va avanzando la simulación, donde la sucesión de observaciones hace que la media acumulada vaya siendo
más suave conforme se incrementa el tiempo de simulación.
Los resultados que se describen más adelante muestran que esta estrategia aumenta considerablemente la cobertura de la media de algunos modelos, pero no es
adecuado para otros.
4.3.3 Criterio 3: Comprobación del error relativo y la pendiente de la
media
En esta prueba se comprueba el error relativo y, además, si la pendiente s de la
media global de las muestras entre dos puntos de comprobación consecutivos es cercana a 0, es decir, prácticamente horizontal. Con ello se trata de evitar terminaciones
espúreas debidas a fuertes correlaciones negativas (ver Figura 4-9).
Figura 4-9. Pendientes de la media que pretende calcular el criterio 3.
El cálculo se realiza aplicando la expresión,
 X i − X i −1 

 tsim i − tsim i −1

<s
Xi
Criterios de parada. Propuestas y su análisis
147
donde tsimi es el tiempo simulado en el i-ésimo punto de comprobación. O la expresión,
 X i − X i −1 

 obsi − obsi −1

<s
Xi
donde obsi es el número de muestras recogidas en el i-ésimo punto de comprobación.
La elección entre una u otra expresión depende del tipo de variable de salida a
analizar, que influirá en tipo de punto de comprobación a aplicar (basado en tiempo
simulado o número de observaciones).
En las expresiones se intenta normalizar el análisis dividiendo entre la media de
forma que sea aplicable tanto a medias pequeñas como grandes.
En este caso, el propósito es disminuir las posibilidades de que el sesgo inicial
haga terminar prematuramente las simulaciones. Si un modelo parte de unas condiciones iniciales poco razonables, y los valores de salida están muy correlados, puede
ocurrir que la media "evolucione" lentamente hacia el valor de convergencia. En este
caso, la distancia de las medias entre réplicas será pequeña, provocando que el error
relativo sea pequeño, pero no debido a la cercanía a la media verdadera. Cuando la
pendiente de la media global sea prácticamente horizontal es más probable que esté
cerca de la media verdadera.
El criterio de parada a aplicar se ha definido como,
si
εmax >εi,εi+1,εi+2
∧
smax=0.0001>si,si+1,si+2
entonces parar
esto es, el error relativo es menor que εmax y la pendiente es menor que Smax en
las siguientes dos muestras. El valor de smax se ha elegido intentando que sea lo suficientemente pequeño y, simplemente, es una primera elección para su evaluación
empírica posterior.
4.3.4 Criterio 4: Combinación de los criterios 2 y 3
Los criterios 2 y 3 se han pensado para resolver problemas distintos, por lo que
puede ocurrir que el criterio 2 sea adecuado a unos modelos y el criterio 3 a otros. En
este trabajo el propósito es dejar el trabajo de modelado al modelador y el análisis
148
Desarrollo de un analizador paralelo basado en réplicas independientes
estadístico de la salida a la herramienta, con los suficientes mecanismos para que el
modelador no tenga que enfrentarse a muchos aspectos estadísticos que la mayoría
no dominan.
En esa línea de generalidad de aplicación a cualquier modelo de simulación, es
interesante que el criterio de terminación sea aplicable a cualquier tipo de respuesta
de salida de los modelos, por lo que se ha decidido combinar el criterio 2 y el criterio
3.
Se propone como criterio 4 que,
si
εmax > εi >εi+1 >εi+2
∧
smax=0.0001>si+1,si+2
entonces parar
es decir, que se cumplan simultáneamente criterios muy similares al 2 y 3. El
propósito es que los problemas de un criterio con algunos modelos sea resuelto por el
otro criterio y viceversa.
El criterio aquí propuesto no es exactamente la combinación del criterio 2 y 3,
esto se ha hecho deliberadamente para poder apreciar como influye la diferencia introducida en el comportamiento del criterio.
4.3.5 Evaluación de los criterios
4.3.5.1
Metodología
En este apartado se expone la metodología seguida para la evaluación de la técni-
ca de las réplicas paralelas propuesta. Los aspectos que interesan son el rendimiento
de la ejecución de la simulación y la cobertura de la verdadera media.
Desde el punto de vista del rendimiento, interesa conocer el número medio de observaciones o el tiempo simulado medio (promedio de las repeticiones del experimento con distintos números aleatorios) necesario para alcanzar el criterio de parada
en función del número de réplicas empleado. Con ello se desea apreciar el efecto del
número de réplicas en el tiempo de ejecución del modelo.
En cuanto a la cobertura de la verdadera media p̂ , ésta se estima empleando la
relación,
pˆ =
x
n
Criterios de parada. Propuestas y su análisis
149
donde n es el número de repeticiones estadísticamente independientes de un experimento y x es el número de experimentos que producen un intervalo de confianza
de la media muestral de salida que incluye a la verdadera media µ.
Dado que el análisis de cobertura implica conocer la media verdadera µ, es necesario emplear modelos con solución analítica.
Se ha elegido un conjunto de modelos con solución analítica para este propósito
que se describirán en el siguiente apartado, y para los que se ha escrito y validado un
modelo equivalente de simulación por eventos discretos en el lenguaje CSIM [CSIM
1998] y se ha instrumentado para que pueda ser utilizado por CSX.
Debido a que no se conoce la naturaleza y bondad del generador aleatorio de
CSIM, pues no está documentado y no se dispone de su código fuente, se ha decidido
sustituir su generador por el generador mrg32k5a [L'Ecuyer 1999] con periodo 2319
descrito en el capítulo 2. Por la misma razón se ha decidido sustituir la generación de
variables aleatorias. Con ello se pretende asegurar la máxima calidad en la generación de las variables aleatorias de entrada para disminuir el riesgo de sesgos. La
Figura 4-10 muestra el esquema del procedimiento seguido.
Generador
números
aleatorios
MRG32K5A
Modelo
de simulación
Variables
de salida
Figura 4-10. Un generador aleatorio externo maneja las simulaciones.
Para el cálculo de rendimiento medio y de cobertura se ha repetido cada experimento 1.000 veces usando secuencias aleatorias independientes generadas a partir de
la corriente principal del generador mrg32k5a y separadas 108 números aleatorios
entre sí con el objeto de garantizar que no se solapen las corrientes de números aleatorios. Este número de repeticiones del experimento es suficientemente grande para
apreciar la diferencia de coberturas entre las distintas propuestas.
Para las condiciones estadísticas de fin de la simulación se ha seleccionado un
error relativo del 5% al 95% de nivel de confianza, por ser éste un valor ampliamente
utilizado. Para el criterio de parada 3 se ha elegido smax=0,0001. Los experimentos se
han ejecutado para el conjunto de número de réplicas paralelas R={3, 5, 7, 8, 10, 15,
20, 30}.
150
Desarrollo de un analizador paralelo basado en réplicas independientes
Los resultados experimentales que se obtienen con los modelos que se describen
en el siguiente apartado se mostrarán resumidos en forma de gráficas organizadas
como en la Figura 4-11. Dichas gráficas representan la cobertura y el coste de la simulación.
El pie de dichas gráficas describe la referencia al modelo utilizado, incluyendo la
configuración de los parámetros de entrada y, si es necesario, la variable de salida a
analizar. También contiene el punto temporal de extracción de muestras estadísticas
en cada réplica paralela (parámetro "check") y el punto temporal donde se descartan
las observaciones recogidas previamente con el propósito de eliminar un transitorio
(parámetro "reset").
Cobertura
Coverage
Observaciones
por réplica
Observations
per replication
40k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 120k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
10
15
20
Número
de réplicas
Replications
0
30
0
3
5
78
10
15
20
Número
de réplicas
Replications
Figura 4-11 Cobertura y rendimiento. Modelo (nombre del modelo y configuración).
Check=(punto de comprobación), reset=(punto de reinicio de estadísticas).
La gráfica de la izquierda representa la cobertura obtenida en función del número
de réplicas y el criterio usado (criterio 1=p1, criterio 2=p2, …). Para la obtención de
cada punto de la gráfica de cobertura se ha repetido 1.000 veces cada experimento.
Recuérdese que la cobertura teórica es del 95%, y por tanto, aquellos puntos que estén por debajo del punto de abcisa 0,95 corresponden a coberturas nominales por
debajo de la teórica, y al contrario para los que estén por encima.
La gráfica central representa, el coste medio de la simulación promediado a partir
de las 1.000 repeticiones del experimento. Dicho coste se puede medir en número
medio de observaciones o en tiempo medio simulado (dependiendo del tipo de variable de salida a analizar) que debe generar cada réplica para que el algoritmo termine.
Este valor es asintóticamente proporcional a otros tipos de métrica, como por ejemplo, el tiempo de CPU o el tiempo de ejecución del modelo, pero con la ventaja de
ser independientes del sistema de apoyo a la simulación (computador, sistema operativo, lenguaje de simulación, etc.). Un decrecimiento en esta curva según aumenta el
0
30
Criterios de parada. Propuestas y su análisis
151
número de réplicas indica que el paralelismo está logrando reducir el tiempo de ejecución del modelo.
La gráfica de la derecha representa la cantidad total de muestras o el tiempo simulado total que se ha necesitado para terminar la simulación. Es la suma de las
muestras o del tiempo generado por cada réplica. Por ejemplo, si con 10 réplicas se
han generado 200 muestras en cada réplica, el número total de observaciones será
2.000. Esta gráfica contiene la misma información que la gráfica central, pero es más
fácil apreciar en ella la influencia del número de réplicas en la cantidad total de
muestras o de tiempo total a generar. Un mínimo en una curva indica el número de
réplicas que alcanza el criterio de parada con menos muestras. De igual forma, un
crecimiento de la curva indica que se requerirán más muestras según aumenta el número de réplicas, y una horizontal indica un comportamiento lineal en la mejora de
rendimiento.
4.3.5.2
Modelos con solución analítica
Para el análisis de rendimiento se han seleccionado cuatro modelos de colas con
solución analítica exacta. Dos de los modelos son abiertos y dos son cerrados. Aunque todos estos modelos son sencillos de evaluar recurriendo a las expresiones matemáticas disponibles en la literatura, se ha recurrido a desarrollar una representación
equivalente en QNAP, pues permite recurrir al análisis analítico o por simulación sin
cambiar de herramienta.
El primer modelo abierto es una cola M/M/1. La Figura 4-12 representa un diagrama de colas equivalente.
entrada
salida
Figura 4-12. Modelo de una cola M/M/1.
La variable de salida empleada para el análisis ha sido el tiempo de respuesta de
los clientes. Para la obtención de los valores analíticos se ha recurrido al siguiente
modelo QNAP.
/DECLARE/
QUEUE FONT, ESTACION;
REAL lambda;
REAL mu;
/STATION/
152
Desarrollo de un analizador paralelo basado en réplicas independientes
NAME
TYPE
SERVICE
TRANSIT
=
=
=
=
/STATION/
NAME
=
TYPE
=
SERVICE =
TRANSIT =
FONT;
SOURCE;
EXP(1.0/lambda);
ESTACION;
ESTACION;
SERVER, SINGLE;
EXP(1.0/mu);
OUT;
/CONTROL/
OPTION=NRESULT;
/EXEC/
BEGIN
mu := 1.0;
FOR lambda:=0.1 STEP 0.1 UNTIL 1.0 DO
BEGIN
SOLVE;
PRINT(lambda/mu,MRESPONSE(ESTACION));
END;
END;
/END/
La Tabla 4-1 resume los valores analíticos del tiempo de respuesta obtenidos con
el modelo QNAP para distintos valores de carga normalizada.
Carga normalizada (ρ
ρ)
0,1
0,2
0,3
0,4
0,5
0,6
0,7
0,8
0,9
Tiempo de respuesta
1,111
1,250
1,429
1,667
2,000
2,500
3,333
5,000
10,00
Tabla 4-1. Tiempos de respuesta para los clientes de la cola M/M/1
El segundo modelo empleado es un modelo de servidor central abierto [Lazowska
et al. 1984]. En la Figura 4-13 se representa la red de colas equivalente.
En este caso se han considerado como variables de salida el tiempo de respuesta
del sistema para los clientes. El tiempo de respuesta corresponde en este modelo al
tiempo medio que tarda un cliente en ser procesado, es decir, el tiempo transcurrido
desde que entra al sistema hasta que sale de él.
Criterios de parada. Propuestas y su análisis
discos
CPU
λ
entrada
153
tdisk=0,02
pdisk=25/32
tdisk=0,05
tcpu=0,0375
pdisk=6/32
salida
Figura 4-13. Modelo de colas de un servidor central abierto.
Igual que antes, se ha empleado el siguiente programa QNAP para la evaluación
analítica.
/DECLARE/
INTEGER ND=2;
QUEUE REAL Tdisc;
QUEUE FONT,CPU,DISC(ND);
REAL Tcpu;
REAL lambda;
REAL R;
/STATION/
NAME = FONT;
TYPE = SOURCE;
SERVICE
= EXP(1.0/lambda);
TRANSIT
= CPU;
/STATION/
NAME = CPU;
TYPE = SERVER, SINGLE;
SERVICE
= EXP(Tcpu);
TRANSIT
= DISC(1),25,DISC(2),6,OUT,1;
/STATION/
NAME = DISC;
TYPE = SERVER, SINGLE;
SERVICE
= EXP(Tdisc);
TRANSIT
= CPU;
/CONTROL/
OPTION=NRESULT;
/EXEC/
BEGIN
Tcpu:=0.0375;
DISC(1).Tdisc:=0.02;
DISC(2).Tdisc:=0.05;
FOR lambda:=0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.75,0.8 DO
BEGIN
SOLVE;
154
Desarrollo de un analizador paralelo basado en réplicas independientes
R :=
(MCUSTNB(DISC(1))+MCUSTNB(DISC(2))+MCUSTNB(CPU))/lambda;
PRINT(lambda,R);
END;
END;
La Tabla 4-2 contiene el tiempo medio de respuesta obtenido analíticamente para
distintos valores de carga de entrada.
Carga (ρ
ρ)
0,10
0,20
0,30
0,40
0,50
0,60
0,70
0,75
0,80
Tiempo de respuesta
2,199
2,454
2,793
3,274
4,020
5,366
8,649
13,19
31,23
Tabla 4-2. Tiempomedio de respuesta para los clientes del
modelo servidor central abierto.
El primer modelo cerrado empleado es una cola M/M/3//K. La Figura 4-14
muestra una representación de dicho sistema.
K
Z=0,5
t=1/8
Figura 4-14. Modelo de M/M/3//K.
En este caso se han considerado como variables de salida la productividad del
sistema y el tiempo de respuesta de los clientes. Al igual que antes, se ha desarrollado un modelo equivalente QNAP para obtener los resultados analíticos.
/CONTROL/
OPTION=SOURCE;
OPTION=NRESULT;
/DECLARE/
QUEUE TERMS,ESTACION;
REAL Z,K;
/STATION/
Criterios de parada. Propuestas y su análisis
155
NAME
=TERMS;
TYPE
=SERVER,INFINITE;
INIT
=K;
SERVICE=EXP(Z);
TRANSIT=CPU;
/STATION/
NAME
=ESTACION;
TYPE
=SERVER,MULTIPLE(3);
SCHED =FIFO;
SERVICE=EXP(1.0/8.0);
TRANSIT=TERMS;
/CONTROL/
MARGINAL = ESTACION;
/EXEC/
BEGIN
Z:=0.5;
FOR K:=5 STEP 5 UNTIL 25 DO
BEGIN
SOLVE;
PRINT(K,MTHRUPUT(CPU),MRESPONSE(CPU));
END;
END;
/END/
La Tabla 4-3 contiene los resultados analíticos obtenidos con el modelo QNAP
para diferentes poblaciones de clientes.
Clientes (K)
5
10
15
20
25
Productividad (trab./u.t.)
7,984
15,48
21,10
23,56
23,98
Tiempo de respuesta (u.t.)
0,1262
0,1459
0,2108
0,3489
0,5427
Tabla 4-3. Productividad del sistema y tiempo de respuesta de la cola M/M/3//K
para diferentes poblaciones de clientes
El segundo modelo cerrado empleado es un servidor central cerrado [Lazowska et
al. 1984]. La Figura 4-15 representa el modelo de colas equivalente. Los parámetros
de la CPU y los discos son los mismos que los empleados en el modelo servidor
central abierto.
El modelo se ha empleado para evaluar el tiempo medio de respuesta del sistema
experimentado por los clientes, es decir, de las peticiones hechas desde los terminales, y de la productividad del sistema.
156
Desarrollo de un analizador paralelo basado en réplicas independientes
TERMS
DISCOS
tdisk=0,02
pdisk=25/32
CPU
tdisk=0,05
tcpu=0,0375
pdisk=6/32
Z=6
Figura 4-15. Modelo servidor central cerrado.
Para su evaluación analítica se ha empleado el siguiente modelo QNAP.
/DECLARE/
INTEGER ND=2;
QUEUE REAL Tdisc;
QUEUE TERMS,CPU,DISC(ND);
REAL Tcpu;
REAL Z;
REAL R;
INTEGER N;
/STATION/
NAME = TERMS;
TYPE = SERVER,INFINITE;
INIT = N;
SERVICE
= EXP(Z);
TRANSIT
= CPU;
/STATION/
NAME = CPU;
TYPE = SERVER, SINGLE;
SERVICE
= EXP(Tcpu);
TRANSIT
= DISC(1),25,DISC(2),6,TERMS,1;
/STATION/
NAME = DISC;
TYPE = SERVER, SINGLE;
SERVICE
= EXP(Tdisc);
TRANSIT
= CPU;
/CONTROL/
OPTION=NRESULT;
/EXEC/
BEGIN
Tcpu:=0.0375;
DISC(1).Tdisc:=0.02;
DISC(2).Tdisc:=0.05;
Z:=6.0;
FOR N:=1 STEP 1 UNTIL 16 DO
BEGIN
Criterios de parada. Propuestas y su análisis
157
SOLVE;
R := (MCUSTNB(DISC(1))+MCUSTNB(DISC(2)) +
MCUSTNB(CPU))/MTHRUPUT(TERMS);
PRINT(N,MTHRUPUT(TERMS),R);
END;
END;
La Tabla 4-4 contiene los resultados analíticos obtenidos con el modelo QNAP
para diferente número de terminales.
Terminales (N)
1
2
3
4
5
6
7
8
9
10
11
12
16
100
Productividad
0,1250
0,2432
0,3534
0,4538
0,5432
0,6199
0,6832
0,7328
0,7695
0,7950
0,8115
0,8216
0,8327
0,8333
Tiempo de respuesta
2,000
2,223
2,490
2,814
3,205
3,678
4,246
4,917
5,696
6,579
7,555
8,606
13,21
114,0
Tabla 4-4. Productividad y tiempo de respuesta del modelo servidor central cerrado
para diferentes cantidades de terminales.
4.3.5.3
Resultados de cobertura y rendimiento en el modelo M/M/1
Este apartado muestra los resultados que se han obtenido al evaluar el modelo
M/M/1 con la metodología descrita y con los cuatro criterios de parada propuestos.
La variable de salida del modelo a estimar es el tiempo medio de respuesta de los
clientes, y, para la gestión de las réplicas, se ha decidido que el análisis se realice
cada 100 muestras recogidas por cada réplica. Esto implica que cada réplica enviará
la media muestral al monitor CSX cuando haya recogido 100 muestras. Este valor es,
en la práctica real, un valor pequeño y arriesgado, pero en este experimento interesa
saber los efectos que tiene este riesgo en los criterios. Además, se ha decidido no
eliminar el transitorio inicial en la primera serie de experimentos.
La Figura 4-16, Figura 4-17, Figura 4-18 y Figura 4-19 muestran los resultados
de cobertura y rendimiento para cargas normalizadas del modelo 0,1, 0,4, 0,7 y 0,9
respectivamente. Cabe destacar que las escalas temporales de las gráficas de rendi-
158
Desarrollo de un analizador paralelo basado en réplicas independientes
miento no son iguales para cada configuración del modelo. Esto se ha hecho así porque el cambio de parámetros del modelo da lugar a necesidades de simulación muy
distintas. Si se usase siempre la misma escala, sería difícil apreciar las diferencias en
el comportamiento de cada criterio, ya que se vería una línea horizontal para todos
los modelos con poca carga y sólo se apreciarían diferencias en el modelo con carga
alta.
Observaciones
por réplica
Observations
per replication
Cobertura
Coverage
4k
Total de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 15k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
0
30
10
15
20
Número
de réplicas
Replications
0
3
5
78
0
30
10
15
20
Número
de réplicas
Replications
Figura 4-16 Cobertura y rendimiento. Modelo M/M/1, carga ρ=0,1.
Check= 100 muestras, reset=no.
Observaciones
por réplica
Observations
per replication
Cobertura
Coverage
10k
Total de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 35k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
0
30
10
15
20
Número
de réplicas
Replications
0
3
5
78
0
30
10
15
20
Número
de réplicas
Replications
Figura 4-17 Cobertura y rendimiento. Modelo M/M/1, carga ρ=0,4.
Check= 100 muestras, reset=no.
Cobertura
Coverage
Observaciones
por réplica
Observations
per replication
40k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 120k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
10
15
20
Número
de réplicas
Replications
0
30
0
3
5
78
10
15
20
NúmeroReplications
de réplicas
Figura 4-18 Cobertura y rendimiento. Modelo M/M/1, carga ρ=0,7.
Check= 100 muestras, reset=no.
0
30
Criterios de parada. Propuestas y su análisis
159
Observaciones
por réplica
Observations per replication
Cobertura
Coverage
300k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 900k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
10
15
20
Número
de réplicas
Replications
0
30
0
3
5
78
10
15
20
Número
de réplicas
Replications
Figura 4-19 Cobertura y rendimiento. Modelo M/M/1, carga ρ=0,9.
Check= 100 muestras, reset=no.
En las gráficas de la Figura 4-16 se observa que con una carga normalizada 0,1,
todos los criterios de parada ofrecen buenos resultados de cobertura, a excepción del
método clásico (criterio 1) para un número muy bajo de réplicas. El método clásico
ofrece siempre un rendimiento temporal superior, pero a costa de una disminución de
cobertura. Todos los criterios mejoran el tiempo de simulación con un aumento del
número de réplicas paralelas; sin embargo, los criterios 2, 3 y 4 consumen más recursos debido a que el test de finalización obliga a una innecesaria generación de eventos que desperdicia recursos, pues la media ya está correctamente cubierta con los
datos previos.
Un aumento de la carga del sistema (Figura 4-17, Figura 4-18, Figura 4-19) implica una disminución de la cobertura, sobre todo en el criterio clásico 1. El criterio 2
es el que mejor se comporta en este caso. A pesar de todo, ninguno de los criterios
supera el efecto de una carga muy alta ρ=0,9 en el modelo.
En cuanto al rendimiento, los nuevos criterios mejoran conforme aumenta la carga del modelo, comportándose casi linealmente y compensando ampliamente las
pérdidas de rendimiento cuando el modelo está poco cargado. La Figura 4-20 ilustra
el coste de simulación de modelo para los distintos niveles de carga. Es evidente que
el modelo en carga alta consume recursos computacionales que están muy por encima del modelo a baja carga.
Uno de los aspectos más delicados del método estadístico de las réplicas independientes es el efecto del transitorio inicial. En teoría, la eliminación de parte de las
muestras iniciales deben disminuir el sesgo de las medias que suelen producir las
primeras observaciones. En el caso particular de la cola M/M/1 se ha decidido eliminar 100 y 400 observaciones iniciales en los modelos más cargados (ρ={0,7, 0,9}).
0
30
160
Desarrollo de un analizador paralelo basado en réplicas independientes
número total de observaciones
número total de observaciones
700000
p1
600000
p2
500000
p3
400000
p4
300000
200000
100000
0
0,1
0,4
0,7
700000
p1
600000
p2
500000
p3
400000
p4
300000
200000
100000
0
0,1
0,9
0,4
0,7
0,9
carga modelo
carga modelo
10 réplicas
30 réplicas
Figura 4-20 Número total de observaciones para distintos niveles de carga
del modelo M/M/1.
La Figura 4-21 y Figura 4-22 muestran los resultados para carga ρ=0,7 y eliminando 100 y 400 observaciones respectivamente. Se aprecia una ligera mejora de
cobertura, sobre todo en el criterio clásico 1 y un pequeño incremento en el tiempo
de simulación que, lógicamente, es más perjudicial según se aumenta el número de
réplicas, pues se han desechado más observaciones en total.
Cobertura
Coverage
Observaciones
por réplica
Observations
per replication
40k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 120k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
0
30
10
15
20
Número
de réplicas
Replications
0
3
5
78
0
30
10
15
20
NúmeroReplications
de réplicas
Figura 4-21 Cobertura y rendimiento. Modelo M/M/1, carga ρ=0,7.
Check= 100 muestras, reset=100 muestras.
Observaciones
por réplica
Observations per replication
Cobertura
Coverage
40k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 120k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
Replications
de réplicas
30
0
3
5
78
10
15
20
NúmeroReplications
de réplicas
0
30
0
3
5
78
10
15
NúmeroReplications
de réplicas
Figura 4-22 Cobertura y rendimiento. Modelo M/M/1, carga ρ=0,7.
Check= 100 muestras, reset=400 muestras.
20
0
30
Criterios de parada. Propuestas y su análisis
161
La Figura 4-23 y la Figura 4-24 muestran los resultados para ρ=0,9, observándose
que, en este caso crítico, la eliminación de muestras no aporta nada y no afecta prácticamente al tiempo de simulación, pues la cantidad de muestras eliminadas en relación con la cantidad total de muestras es muy pequeña.
Observaciones
réplica
Observations per por
replication
Cobertura
Coverage
300k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 900k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
0
30
10
15
20
NúmeroReplications
de réplicas
0
3
5
78
10
15
NúmeroReplications
de réplicas
0
30
20
Figura 4-23 Cobertura y rendimiento. Modelo M/M/1, carga ρ=0,9.
Check= 100 muestras, reset=100 muestras.
Cobertura
Coverage
Observaciones
por réplica
Observations per replication
300k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 900k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
10
15
20
Número
de réplicas
Replications
0
30
0
3
5
78
10
15
20
NúmeroReplications
de réplicas
Figura 4-24 Cobertura y rendimiento. Modelo M/M/1, carga ρ=0,9.
Check= 100 muestras, reset=400 muestras.
Como recurso para intentar mejorar el comportamiento en el caso de carga ρ=0,9
se puede optar por aumentar el número de muestras entre puntos de comprobación.
La Figura 4-25 muestran el efecto de aumentar a 1.000 el punto de comprobación y
no eliminando transitorio, y en la Figura 4-26, el efecto de eliminar 4.000 muestras.
En estos dos casos se aprecia de nuevo la mejora que aportan los nuevos criterios y el
hecho de que eliminar 4.000 muestras no aporta una mejora sustancial de cobertura,
pero tampoco perjudica demasiado al rendimiento en este caso, aunque sí empeora a
los casos con menor carga.
0
30
162
Desarrollo de un analizador paralelo basado en réplicas independientes
Cobertura
Coverage
Observaciones
réplica
Observations per por
replication
300k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 900k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
0
30
10
15
20
NúmeroReplications
de réplicas
0
3
5
78
10
15
NúmeroReplications
de réplicas
0
30
20
Figura 4-25 Cobertura y rendimiento. Modelo M/M/1, carga ρ=0,9.
Check= 1000 muestras, reset= no.
Observaciones
réplica
Observations per por
replication
Cobertura
Coverage
300k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 900k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
10
15
20
NúmeroReplications
de réplicas
0
30
0
3
5
78
10
15
20
NúmeroReplications
de réplicas
Figura 4-26 Cobertura y rendimiento. Modelo M/M/1, carga ρ=0,9.
Check= 1000 muestras, reset=4000 muestras.
4.3.5.4
Resultados de cobertura y rendimiento en el modelo del
servidor central abierto
Este apartado muestra los resultados que se han obtenido al evaluar el modelo del
servidor central abierto con la metodología descrita y con los cuatro criterios de parada propuestos.
La variable salida del modelo a estimar es el tiempo medio de respuesta del sistema experimentado por los clientes. Al igual que para el modelo M/M/1, para la
gestión de las réplicas se ha decidido que el análisis se realice cada 100 muestras
recogidas por cada réplica. En la primera serie de experimentos no se han eliminado
muestras iniciales.
En la Figura 4-27, Figura 4-28, Figura 4-29 y Figura 4-30 se muestran los resultados de cobertura y rendimiento para cargas de entrada al modelo λ={0,10, 0,30,
0,60, 0,75}.
0
30
Criterios de parada. Propuestas y su análisis
163
Observaciones
por réplica
Observations
per replication
Cobertura
Coverage
5k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 50k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
0
30
10
15
20
Número
de réplicas
Replications
0
3
5
78
0
30
10
15
20
Número
de réplicas
Replications
Figura 4-27 Cobertura y rendimiento. Modelo servidor central abierto, carga λ=0,10.
Check= 100 muestras, reset = no.
Cobertura
Coverage
Observaciones
por réplica
Observations
per replication
10k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 50k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
0
30
10
15
20
Número
de réplicas
Replications
0
3
5
78
0
30
10
15
20
Número
de réplicas
Replications
Figura 4-28 Cobertura y rendimiento. Modelo servidor central abierto, carga λ=0,30.
Checkpoint= 100 muestras, reset = no.
Cobertura
Coverage
Observaciones
por réplica
Observations per replication
55k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 200k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
10
15
20
Número
de réplicas
Replications
0
30
0
3
5
78
10
15
NúmeroReplications
de réplicas
20
Figura 4-29 Cobertura y rendimiento. Modelo servidor central abierto, carga λ=0,60.
Check = 100 muestras, reset = no.
Los resultados mostrados reflejan un comportamiento muy similar al del modelo
M/M/1. Los criterios de parada propuestos se comportan mejor que el criterio clásico, destacando la diferencia con un número bajo de réplicas; pero fallan también
cuando el modelo está próximo a la saturación. En este modelo particular, la saturación se produce al alcanzarse una carga crítica en uno de los discos.
0
30
164
Desarrollo de un analizador paralelo basado en réplicas independientes
Cobertura
Coverage
Observaciones
réplica
Observations per por
replication
170k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 700k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
0
30
10
15
20
NúmeroReplications
de réplicas
0
3
5
78
0
30
10
15
20
NúmeroReplications
de réplicas
Figura 4-30 Cobertura y rendimiento. Modelo servidor central abierto, carga λ=0,75.
Check= 100 muestras, reset = no.
La Figura 4-31 y la Figura 4-32 muestran el efecto de eliminar 200 muestras iniciales en el modelo con carga 0,60 y carga 0,75. Como en el caso de la cola M/M/1,
se obtiene una ligera mejoría de la cobertura, y el rendimiento no se ve prácticamente
afectado.
Cobertura
Coverage
Observaciones
por réplica
Observations per replication
55k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 200k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
0
30
10
15
20
Número
de réplicas
Replications
0
3
5
78
10
15
NúmeroReplications
de réplicas
0
30
20
Figura 4-31 Cobertura y rendimiento. Modelo servidor central abierto, carga λ=0,60.
Check = 100 muestras, reset=200.
Observaciones
réplica
Observations per por
replication
Cobertura
Coverage
170k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 700k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
10
15
20
NúmeroReplications
de réplicas
0
30
0
3
5
78
10
15
20
NúmeroReplications
de réplicas
Figura 4-32 Cobertura y rendimiento. Modelo servidor central abierto, carga λ=0,75.
Check = 100 muestras, reset = 200.
El aumento del espacio entre puntos de comprobación mejora notablemente el
comportamiento de la cobertura. La Figura 4-33 y Figura 4-34 muestran los resultados para carga 0,60 y 0,75, espacio entre puntos de comprobación igual a 1.000 y sin
0
30
Criterios de parada. Propuestas y su análisis
165
eliminación de transitorio. Como en el caso anterior, el modelo más cargado es el
que más se beneficia, pues se consigue la cobertura teórica y el rendimiento no se ve
excesivamente afectado. En el caso de carga 0,60, el rendimiento disminuye, pues el
algoritmo es obligado a recolectar más muestras de lo necesario. Este efecto es más
patente cuantas más réplicas hay. Por ejemplo, para 30 réplicas, cada nueva incorporación supone 30 x1.000 = 30.000 muestras. En cualquier caso, de nuevo destaca
mayor cobertura de los nuevos criterios frente al clásico.
Observaciones
por réplica
Observations per replication
Cobertura
Coverage
55k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 200k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
0
30
10
15
20
Número
de réplicas
Replications
0
3
5
78
10
15
NúmeroReplications
de réplicas
0
30
20
Figura 4-33 Cobertura y rendimiento. Modelo servidor central abierto, carga λ=0,60.
Check = 1000 muestras, reset = no.
Observaciones
por réplica
Observations per replication
Cobertura
Coverage
170k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 700k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
10
15
20
Número
de réplicas
Replications
0
30
0
3
5
78
10
15
20
NúmeroReplications
de réplicas
Figura 4-34 Cobertura y rendimiento. Modelo servidor central abierto, carga λ=0,75.
Check= 1000 muestras, reset = no.
La Figura 4-35, y la Figura 4-36 muestran el efecto de eliminar 2000 muestras en
los dos casos anteriores. La cobertura no mejora significativamente y el rendimiento
para la carga 0,60 es afectado para un número alto de réplicas. Lógicamente, a más
réplicas, más muestras desechadas. Por ejemplo, se han desechado
30 x 2.000 = 60.000 muestras en el caso de 30 réplicas, aunque con la "ventaja" tem-
poral de que se han desperdiciado en paralelo. En el caso de carga 0,75, quien más se
ha beneficiado de ésta eliminación ha sido el método clásico.
0
30
166
Desarrollo de un analizador paralelo basado en réplicas independientes
Observaciones
réplica
Observations per por
replication
Cobertura
Coverage
55k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 200k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
0
30
10
15
20
NúmeroReplications
de réplicas
0
3
5
78
10
15
NúmeroReplications
de réplicas
0
30
20
Figura 4-35 Cobertura y rendimiento. Modelo servidor central abierto, carga λ=0,60.
Check= 1000 muestras, reset=2000.
Cobertura
Coverage
Observaciones
por réplica
Observations per replication
170k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 700k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
10
15
20
NúmeroReplications
de réplicas
0
30
0
3
5
78
10
15
20
NúmeroReplications
de réplicas
Figura 4-36 Cobertura y rendimiento. Modelo servidor central abierto, carga λ=0,75.
Check= 1000 muestras, reset=2000.
4.3.5.5
Resultados de cobertura y rendimiento en el modelo
M/M/3//K
Este apartado muestra los resultados que se han obtenido al evaluar el modelo
M/M/3//k. La naturaleza de este modelo es distinta a la de los anteriores, pues se trata
de un modelo cerrado, con lo que cabe esperar un tipo de respuesta distinto.
En este caso se analiza el modelo para las variables de salida tiempo medio de
respuesta de los clientes y productividad del sistema. Estas elecciones afectan notablemente al modo en que se extrae la información de las réplicas en paralelo. En el
primer caso, la extracción se realiza cada n observaciones recogidas, mientras que en
el segundo caso se realiza cada t unidades de tiempo simulado. Con ello se evitan los
problemas de sesgo por ratio descritos en capítulos previos.
En primer lugar se muestran los resultados para el tiempo medio de respuesta de
los clientes donde, como en los apartados anteriores, el análisis se realiza cada 100
observaciones recogidas en cada réplica.
0
30
Criterios de parada. Propuestas y su análisis
167
En la Figura 4-37, Figura 4-38 y Figura 4-39 se muestran los resultados obtenidos
para k={5, 15, 25} clientes, y sin eliminación de muestras iniciales. Los primeros
resultados obtenidos muestran un comportamiento muy distinto a los modelos abiertos descritos en los apartados anteriores. Por una parte, es ahora el criterio 3 el que
muestra el mejor comportamiento en cuanto a cobertura, y por otra, el aumento del
número de réplicas lleva a una caída en la cobertura para los criterios 1 y 2.
El mantenimiento de la cobertura del criterio 3 fuerza a una disminución del rendimiento en comparación con los otros criterios. Ello obliga a preguntarse si este
sobrecoste es excesivo en comparación con los beneficios obtenidos.
Observaciones
por réplica
Observations
per replication
Cobertura
Coverage
10k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 100k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
0
30
10
15
20
Número
de réplicas
Replications
0
3
5
78
0
30
10
15
20
NúmeroReplications
de réplicas
Figura 4-37 Cobertura y rendimiento. Modelo M/M/3//k, k=5, "tiempo de respuesta de
los clientes". Check = 100 muestras, reset = no.
Cobertura
Coverage
Observaciones
por réplica
Observations per replication
20k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 200k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
10
15
20
Número
de réplicas
Replications
0
30
0
3
5
78
10
15
NúmeroReplications
de réplicas
20
Figura 4-38 Cobertura y rendimiento. Modelo M/M/3//k, k=15, variable "tiempo de
respuesta de los clientes". Check = 100 muestras, reset = no.
El hecho de que el aumento de réplicas lleve a una caída de la cobertura hace
sospechar que el talón de Aquiles del método de las réplicas se está manifestando, es
decir, el sesgo producido por las muestras iniciales contamina la media muestral y no
la hace representativa del régimen estacionario. Esta sospecha es clara cuando se
sabe cómo se ha implementado el modelo: en este caso concreto los clientes se crean
como k clientes encolados en una estación con ∞ servidores, por lo que hay un estado
inicial del sistema no natural al régimen permanente del modelo.
0
30
168
Desarrollo de un analizador paralelo basado en réplicas independientes
Cobertura
Coverage
Observaciones
por réplica
Observations
per replication
20k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 200k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
0
30
10
15
20
Número
de réplicas
Replications
0
3
5
78
0
30
10
15
20
Número
de réplicas
Replications
Figura 4-39 Cobertura y rendimiento. Modelo M/M/3//k, k=25, variable "tiempo de
respuesta de los clientes". Check = 100 muestras, reset = no.
La Figura 4-40 y Figura 4-41 muestran el efecto del borrado de 200 observaciones en los casos k = {15, 25}. Como resultado, la cobertura mejora notablemente
para los criterios 1 y 2, y el rendimiento no se ve prácticamente afectado. Se aprecia
especialmente la mejora de cobertura al emplearse un número alto de réplicas. Este
efecto se debe a que se han eliminado muestras iniciales muy sesgadas, que se aprecian más cuando aumenta el número de réplicas, pues al ser más cortas, su efecto es
más patente.
Cobertura
Coverage
Observaciones
por réplica
Observations per replication
20k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 200k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
0
30
10
15
20
Número
de réplicas
Replications
0
3
5
78
10
15
NúmeroReplications
de réplicas
0
30
20
Figura 4-40 Cobertura y rendimiento. Modelo M/M/3//k, k=15, variable "tiempo de
respuesta de los clientes". Check = 100 muestras, reset = 200 muestras.
Cobertura
Coverage
Observaciones
por réplica
Observations
per replication
20k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 200k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Replications
Número
de réplicas
30
0
3
5
78
10
15
20
Replications
Número
de réplicas
0
30
0
3
5
78
10
15
20
NúmeroReplications
de réplicas
Figura 4-41 Cobertura y rendimiento. Modelo M/M/3//k, k=25, Variable "tiempo de
respuesta de los clientes". Check= 100 muestras, reset = 200 muestras.
0
30
Criterios de parada. Propuestas y su análisis
169
A continuación se muestran los resultados para la productividad del sistema. La
extracción de la información estadística de las réplicas se ha hecho para ts=1 (tiempo
simulado). Este valor es pequeño, pero, como en los casos anteriores, interesa observar el comportamiento en condiciones desfavorables. La Figura 4-42, Figura 4-43 y
Figura 4-44 resumen los resultados para k ={5, 15, 25} clientes.
La interpretación de los resultados se complica debido a que se fija el mismo
tiempo de extracción para las tres configuraciones del modelo. Al contrario de lo que
ocurre para las simulaciones cuyo control se basa en el número de observaciones
recogidas, en este caso el tiempo simulado necesario es menor según aumenta la carga, lo cual es lógico, pues al incrementar la carga se generan más eventos de interés
por unidad de tiempo. Sin embargo, la cobertura no responde proporcionalmente al
cambio de carga porque la influencia del control por tiempo simulado está enmascarando el efecto sobre la cobertura e impidiendo que los resultados sean intuitivos.
Fijar el tiempo de extracción para todas las configuraciones del modelo no parece la
política más adecuada y sería más interesante implementar un mecanismo que se
pueda adaptar a los diferentes niveles de carga.
Cobertura
Coverage
Observaciones
réplica
Simulated
time per por
replication
1k
Total de observaciones
Simulated
time accumulated
p1
p2
p3
p4
1
1 10k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
0
30
10
15
20
Número
de réplicas
Replications
0
3
5
78
0
30
10
15
20
NúmeroReplications
de réplicas
Figura 4-42 Cobertura y rendimiento. Modelo M/M/3//k, k=5,
variable "productividad". Check = 1, reset=no.
Observaciones
réplica
Simulated
time per por
replication
Cobertura
Coverage
1k
Total de observaciones
Simulated
time accumulated
p1
p2
p3
p4
1
1 10k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
10
15
20
Número
de réplicas
Replications
0
30
0
3
5
78
10
15
20
NúmeroReplications
de réplicas
Figura 4-43 Cobertura y rendimiento. Modelo M/M/3//k, k=15,
variable "productividad ". Check = 1, reset=no.
0
30
170
Desarrollo de un analizador paralelo basado en réplicas independientes
Observaciones
por réplica
Observations
per replication
Cobertura
Coverage
500
Total de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1
5k
0
30
0
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
10
15
20
Número
de réplicas
Replications
3
5
78
0
30
10
15
20
Número
de réplicas
Replications
Figura 4-44 Cobertura y rendimiento. Modelo M/M/3//k, k=25,
variable "productividad ". Check = 1, reset = no.
Con independencia del problema detectado, los resultados son parecidos a los
obtenidos con la variable tiempo de respuesta. La cobertura cae con el aumento de
réplicas, y el criterio 3 ofrece mejor cobertura a costa de un peor rendimiento.
Los resultados obtenidos muestran un comportamiento superior del criterio 3 en
cuanto a cobertura, pero reflejan una penalización en rendimiento. La Figura 4-45
muestra el efecto de modificar el parámetro s de este criterio. Para los tres valores
elegidos de s, s={0,01, 0,001, 0,0001} la cobertura es buena, siendo la diferencia
fundamental el coste temporal de la simulación. En este caso particular, una de las
elecciones para s llega a ofrecer una mayor cobertura con un rendimiento similar.
Cobertura
Coverage
Observaciones
réplica
Simulated
time perpor
replication
500
p1
p2
p3(s=0.0001)
p4
p3(s=0.01)
p3(s=0.001)
1
Total de time
observaciones
Simulated
accumulated
1
5k
0
30
0
p1
p2
p3(s=0.0001)
p4
p3(s=0.01)
p3(s=0.001)
1
0.95
0.9
0.85
p1
p2
p3(s=0.0001)
p4
p3(s=0.01)
p3(s=0.001)
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
10
15
20
Número
de réplicas
Replications
3
5
78
10
15
20
Número
de réplicas
Replications
Figura 4-45 Ampliación de la Figura 4-44 con el efecto del parámetro s
del criterio 3 en la cobertura.
La Figura 4-46 y la Figura 4-47 muestran el efecto de aumentar el tiempo de extracción a ts=10 para los casos k ={15, 25} respectivamente. En este caso, con un
rendimiento temporal ligeramente mejor se solventan todos los problemas de cobertura. El mayor tiempo entre muestras permite superar el transitorio inicial a los criterios con peor comportamiento, con lo que proveen una solución adecuada en cuanto
a rendimiento, pero no segura en su aplicación a otros modelos en los que no se conozca la longitud del transitorio. En cualquier caso, parece imprescindible un tiempo
0
30
Criterios de parada. Propuestas y su análisis
171
entre extracciones grande para evitar los problemas de falta de cobertura mostrados.
Al elegir un tiempo mayor, se tiende a acortar las diferencias entre los algoritmos con
mejor rendimiento temporal y los que ofrecen un peor comportamiento en el caso de
modelos saturados.
Cobertura
Coverage
Observaciones
réplica
Simulated
time per por
replication
1k
Total de observaciones
Simulated
time accumulated
p1
p2
p3
p4
1
1 10k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
0
30
10
15
20
Número
de réplicas
Replications
0
3
5
78
0
30
10
15
20
Número
de réplicas
Replications
Figura 4-46 Cobertura y rendimiento. Modelo M/M/3//k, k=15,
variable "productividad ". Check = 10, reset = no.
Observaciones
por réplica
Observations
per replication
Cobertura
Coverage
500
Total de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1
5k
0
30
0
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
10
15
20
Número
de réplicas
Replications
3
5
78
10
15
20
Número
de réplicas
Replications
Figura 4-47 Cobertura y rendimiento. Modelo M/M/3//k, k=25,
variable "productividad ". Check = 10, reset = no.
4.3.5.6
Resultados de cobertura y rendimiento en el modelo del
servidor central cerrado
Este apartado muestra los resultados que se han obtenido al evaluar el modelo
servidor central cerrado. Como en el caso anterior, se trata de un modelo cerrado, y
donde la cantidad de clientes (terminales) se fija en cada configuración del modelo.
En este caso se analiza el modelo para las variables de salida tiempo medio de
respuesta de los clientes y productividad del sistema. En el primer caso, la extracción
se realiza cada n observaciones recogidas, mientras que en el segundo caso se realiza
cada t unidades de tiempo simulado.
0
30
172
Desarrollo de un analizador paralelo basado en réplicas independientes
En primer lugar se muestran los resultados para la variable tiempo medio de respuesta de los clientes, donde el análisis se realiza cada 100 observaciones recogidas
en cada réplica y sin eliminación de muestras iniciales.
La Figura 4-48, Figura 4-49, Figura 4-50, Figura 4-51, y Figura 4-52 muestran
los resultados de cobertura y rendimiento obtenidos para N={1, 4, 8, 12, 100} terminales, respectivamente.
Se aprecia una disminución de la cobertura según aumenta la carga (N), apreciándose una clara caída de cobertura cuando aumenta el número de réplicas, lo que pone
de manifiesto el efecto negativo del transitorio inicial. Para N=100 la cobertura cae
drásticamente para todas las pruebas. La combinación de los criterios 2 y 3 en 4 ofrece el mejor resultado para dicho caso, pero no consigue tampoco mantener una cobertura adecuada. El efecto se debe a la tremenda diferencia entre el estado inicial del
modelo y el régimen permanente, y a la lentitud de convergencia hacia el valor esperado.
Cobertura
Coverage
Observaciones
por réplica
Observations
per replication
10k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 200k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
0
30
10
15
20
Número
de réplicas
Replications
0
3
5
78
0
30
10
15
20
NúmeroReplications
de réplicas
Figura 4-48 Cobertura y rendimiento. Modelo servidor central cerrado, N=1, variable
"tiempo de respuesta de los clientes". Check = 100 muestras, reset = no.
Cobertura
Coverage
Observaciones
por réplica
Observations
per replication
10k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 200k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
10
15
20
Número
de réplicas
Replications
0
30
0
3
5
78
10
15
20
NúmeroReplications
de réplicas
Figura 4-49 Cobertura y rendimiento. Modelo servidor central cerrado, N=4, variable
"tiempo de respuesta de los clientes". Check = 100 muestras, reset = no.
0
30
Criterios de parada. Propuestas y su análisis
173
Observaciones
por réplica
Observations per replication
Cobertura
Coverage
10k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 200k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
0
30
10
15
20
Número
de réplicas
Replications
0
3
5
78
10
15
NúmeroReplications
de réplicas
0
30
20
Figura 4-50 Cobertura y rendimiento. Modelo servidor central cerrado, N=8, variable
"tiempo de respuesta de los clientes". Check = 100 muestras, reset = no.
Observaciones
por réplica
Observations
per replication
Cobertura
Coverage
20k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 200k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
0
30
10
15
20
Número
de réplicas
Replications
0
3
5
78
0
30
10
15
20
NúmeroReplications
de réplicas
Figura 4-51 Cobertura y rendimiento. Modelo servidor central cerrado, N=12, variable
"tiempo de respuesta de los clientes". Check = 100 muestras, reset = no.
Cobertura
Coverage
Observaciones
por réplica
Observations per replication
20k
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
Replications
de réplicas
30
0
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
3
5
78
10
15
20
Número
Replications
de réplicas
1 200k
0
30
0
p1
p2
p3
p4
3
5
78
10
15
20
NúmeroReplications
de réplicas
Figura 4-52 Cobertura y rendimiento. Modelo servidor central cerrado, N=100, variable "tiempo de respuesta de los clientes". Check = 100 muestras, reset = no.
La Figura 4-53 y Figura 4-54 muestran el efecto de la eliminación de 200 observaciones de cada réplica para los casos N=12 y N=100. Cabe destacar una sustancial
mejora de la cobertura y una disminución del tiempo necesario para realizar la simulación con el aumento del número de réplicas. Esta pequeña eliminación ha repercutido en una mejora del tiempo total de simulación, compensando el desperdicio inicial.
1
0
30
174
Desarrollo de un analizador paralelo basado en réplicas independientes
A pesar de la mejora, los criterios 1 y 2 siguen fallando para N=100, mientras qu
el y el 4 manifiestan sus virtudes en este caso.
Observaciones
por réplica
Observations
per replication
Cobertura
Coverage
20k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 200k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
0
30
10
15
20
Número
de réplicas
Replications
0
3
5
78
0
30
10
15
20
Número
de réplicas
Replications
Figura 4-53 Cobertura y rendimiento. Modelo servidor central cerrado, N=12, variable
"tiempo de respuesta de los clientes". Check = 100 muestras, reset = 200 muestras.
Observaciones
por réplica
Observations
per replication
Cobertura
Coverage
20k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 200k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
10
15
20
Número
de réplicas
Replications
0
30
0
3
5
78
10
15
20
NúmeroReplications
de réplicas
Figura 4-54 Cobertura y rendimiento. Modelo servidor central cerrado, N=100, variable "tiempo de respuesta de los clientes". Check = 100 muestras, reset = 200 muestras.
En la Figura 4-55 y la Figura 4-56 se muestra el efecto de aumentar hasta 1.000 el
número de observaciones recogidas antes de enviar la información estadística al monitor para los casos N ={12, 100}. La cobertura aumenta con respecto a los ejemplos
anteriores, pero a costa de un notable incremento del coste temporal.
En el caso de un número elevado de réplicas, dicho coste temporal se debe a que
el criterio de terminación fuerza a continuar la simulación más allá de lo necesario.
En cualquier caso, el criterio 1 sigue sin aportar un comportamiento adecuado para
N=100.
0
30
Criterios de parada. Propuestas y su análisis
Cobertura
Coverage
175
Observaciones
por réplica
Observations
per replication
20k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 200k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
0
30
10
15
20
Número
de réplicas
Replications
0
3
5
78
0
30
10
15
20
Número
de réplicas
Replications
Figura 4-55 Cobertura y rendimiento. Modelo servidor central cerrado, N=12, variable
"tiempo de respuesta de los clientes". Check = 1000 muestras, reset = no.
Cobertura
Coverage
Observaciones
por réplica
Observations
per replication
20k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 200k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Replications
Número
de réplicas
30
0
3
5
78
0
30
10
15
20
Replications
Número
de réplicas
0
3
5
78
0
30
10
15
20
Replications
Número
de réplicas
Figura 4-56 Cobertura y rendimiento. Modelo servidor central cerrado, N=100, variable "tiempo de respuesta de los clientes". Check = 1000 muestras, reset = no.
En la Figura 4-57 y Figura 4-58 se muestra el efecto de eliminar 2.000 observaciones de cada de una de las réplicas para los dos casos anteriores. Nótese que el criterio 1 consigue una buena cobertura para N=100, pues la eliminación del transitorio
le permite ofrecer dicho resultado. En cualquier caso el rendimiento se ve afectado
por el desperdicio de muestras.
Cobertura
Coverage
Observaciones
por réplica
Observations
per replication
20k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 200k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
10
15
20
Número
de réplicas
Replications
0
30
0
3
5
78
10
15
20
NúmeroReplications
de réplicas
Figura 4-57 Cobertura y rendimiento modelo servidor central cerrado, N=12, variable
"tiempo de respuesta de los clientes". Check = 1000 muestras, reset = 2000 muestras.
0
30
176
Desarrollo de un analizador paralelo basado en réplicas independientes
Observaciones
por réplica
Observations per replication
Cobertura
Coverage
20k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 200k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
0
30
10
15
20
Número
de réplicas
Replications
0
3
5
78
10
15
NúmeroReplications
de réplicas
0
30
20
Figura 4-58 Cobertura y rendimiento. Modelo servidor central cerrado, N=100, variable "tiempo de respuesta de los clientes". Check = 1000 muestras, reset = 2000.
A continuación se muestran los resultados para la variable de salida productividad del sistema. La extracción de la información estadística de las réplicas se ha hecho para ts=50. Como en los casos anteriores, este valor está por debajo de lo razonable para así intentar observar el comportamiento en condiciones desfavorables.
La Figura 4-59, Figura 4-60, Figura 4-61, Figura 4-62 y Figura 4-63 muestran los
resultados para N={1, 4, 8, 12, 100}. Dichos resultados son similares a los obtenidos
con la variable tiempo de respuesta donde la contaminación con el transitorio reduce
notablemente la cobertura para los modelos más cargados y para un número alto de
réplicas. De nuevo, los criterios de parada basados en s proporcionan la mejor cobertura.
Cobertura
Coverage
Observaciones
réplica
Simulated
time perpor
replication
10k
Total de observaciones
Simulated
time accumulated
p1
p2
p3
p4
1
1 50k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
10
15
20
NúmeroReplications
de réplicas
0
30
0
3
5
78
10
15
NúmeroReplications
de réplicas
20
Figura 4-59 Cobertura y rendimiento. Modelo servidor central cerrado, N=1, variable
"productividad ". Check = 50 tiempo simulado, reset = no.
La Figura 4-64y la Figura 4-65 muestran el efecto de aumentar el espacio entre
puntos de comprobación a 500 para los casos N ={12, 100}. A pesar del aumento de
cobertura, ninguno de los criterios consigue la cobertura para N=100, y produciéndose un efecto inesperado en 3 y 4, pues 3 produce una cobertura muy superior a la de
4. Este resultado se debe a la combinación de factores como tiempo de muestreo,
0
30
Criterios de parada. Propuestas y su análisis
177
características del modelo, etc., y que muestran el efecto de un transitorio poco representativo del régimen permanente.
Cobertura
Coverage
Observaciones
réplica
Simulated
time perpor
replication
10k
Total de observaciones
Simulated
time accumulated
p1
p2
p3
p4
1
1 50k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
0
30
10
15
20
Número
de réplicas
Replications
0
3
5
78
0
30
10
15
20
NúmeroReplications
de réplicas
Figura 4-60 Cobertura y rendimiento. Modelo servidor central cerrado, N=4, variable
"productividad ". Check = 50 tiempo simulado, reset = no.
Observaciones
réplica
Simulated
time per por
replication
Cobertura
Coverage
10k
Total de time
observaciones
Simulated
accumulated
p1
p2
p3
p4
1
1 50k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
0
30
10
15
20
Número
de réplicas
Replications
0
3
5
78
0
30
10
15
20
Número
de réplicas
Replications
Figura 4-61 Cobertura y rendimiento. Modelo servidor central cerrado, N=8, variable
"productividad ". Check = 50 tiempo simulado, reset = no.
Observaciones
réplica
Simulated
time perpor
replication
Cobertura
Coverage
10k
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
Total
de observaciones
Simulated
time accumulated
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
1 100k
0
30
0
p1
p2
p3
p4
3
5
78
10
15
NúmeroReplications
de réplicas
20
Figura 4-62 Cobertura y rendimiento. Modelo servidor central cerrado, N=12, variable
"productividad ". Check = 50 muestras, reset = no.
1
0
30
178
Desarrollo de un analizador paralelo basado en réplicas independientes
Cobertura
Coverage
Observaciones
réplica
Simulated
time per por
replication
10k
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Replications
Número
de réplicas
30
0
Total de observaciones
Simulated
time accumulated
p1
p2
p3
p4
3
5
78
1 100k
0
30
10
15
20
Replications
Número
de réplicas
0
p1
p2
p3
p4
3
5
78
1
0
30
10
15
20
NúmeroReplications
de réplicas
Figura 4-63 Cobertura y rendimiento. Modelo servidor central cerrado, N=100, variable "productividad ". Check = 50 tiempo simulado, reset = no.
Cobertura
Coverage
Observaciones
réplica
Simulated
time per por
replication
10k
Total de observaciones
Simulated
time accumulated
p1
p2
p3
p4
1
1 100k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
0
30
10
15
20
Número
de réplicas
Replications
0
3
5
78
0
30
10
15
20
NúmeroReplications
de réplicas
Figura 4-64 Cobertura y rendimiento. Modelo servidor central cerrado, N=12, variable
"productividad ". Check = 500 tiempo simulado, reset = no.
Cobertura
Coverage
Observaciones
réplica
Simulated
time perpor
replication
10k
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
Total
de observaciones
Simulated
time accumulated
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
1 100k
0
30
0
p1
p2
p3
p4
3
5
78
10
15
20
NúmeroReplications
de réplicas
Figura 4-65 Cobertura y rendimiento. Modelo servidor central cerrado, N=100, variable "productividad ". Check = 500 tiempo simulado, reset = no.
4.4 Técnica para la reducción del efecto del transitorio
inicial
Los resultados obtenidos con los criterios de terminación aplicados muestran el
negativo efecto del transitorio inicial. En función de la política seguida en su gestión
se pueden producir dos posibles resultados negativos.
1
0
30
Técnica para la reducción del efecto del transitorio inicial
179
Primero, si se toma la precaución de eliminar una cantidad apreciable de observaciones iniciales para garantizar la eliminación del sesgo en la estimación puntual, se
estarán limitando las posibilidades de explotación en paralelo, pues a mayor proporción de muestras desperdiciadas, menores serán las posibilidades de aceleración.
Segundo, si se obvia el efecto del transitorio y, por tanto, no se elimina, los criterios de terminación pueden acabar prematuramente y el resultado no cubrir la media.
Las características de la información estadística que envían las réplicas al monitor
hacen difícil aplicar técnicas que detecten automáticamente el fin del transitorio y lo
eliminen, pues dichas variables provienen de una media acumulada calculada con la
ponderación de las observaciones del total de la simulación. Ello dificulta enormemente la detección del fin del transitorio. Además, los métodos para la detección de
transitorio suelen ser más adecuadas para las técnicas secuenciales de análisis estadístico de la salida (lotes, espectral, etc.) donde un desperdicio inicial mayor de lo
necesario no afecta demasiado al coste temporal final del algoritmo.
De todas formas, los resultados obtenidos en los apartados anteriores sugieren
que la eliminación de una pequeña porción de las réplicas no afecta apreciablemente
al rendimiento toda vez que la mejora la cobertura. Dicho resultado concuerda con
los resultados teóricos descritos en [Glynn 1995].
La eliminación de una pequeña proporción de las muestras iniciales puede ser insuficiente en los casos con transitorios que tardan en disiparse, como ha ocurrido en
el caso del modelo de servidor central cerrado. En consecuencia, resulta de interés
intentar aplicar alguna estrategia que permitia disminuir el efecto del transitorio sin
limitar las posibilidades de paralelismo.
Como ya se ha dicho, el transitorio inicial es el talón de Aquiles del método de
las réplicas, y la literatura sugiere que una de las formas de reducir su efecto es
arrancar el modelo en un estado similar al del régimen permanente. En esta línea, en
[Kelton 1985] se prueba el efecto de iniciar un modelo de cola Erlang-exponencial en
estados cercanos al final, concluyéndose que, para dicho modelo, es mejor iniciar el
modelo por encima del régimen permanente que por debajo. Otras aproximaciones
inicializan el modelo en un estado aleatorio, lo que evita el uso del mismo estado
para todas las réplicas. También hay aproximaciones que parten de ejecuciones previas o de modelos analíticos simplificados para obtener un punto de partida más cercano al régimen permanente.
180
Desarrollo de un analizador paralelo basado en réplicas independientes
El esfuerzo de aplicar las aproximaciones anteriores puede no ser rentable. Si se
usa la aproximación de realizar ejecuciones previas, la rentabilidad de ésta aproximación se puede perder en cuanto a tiempo de ejecución que hay que añadir a la solución del experimento, requiriendo, además, una posterior preparación del modelo
con las condiciones iniciales obtenidas. Si se emplea la aproximación basada en un
modelo analítico, la problemática será el coste del desarrollo de dicho modelo y lo
representativo que pueda ser del modelo de simulación; incluso puede ser tremendamente complejo o imposible conseguir un modelo cercano al de simulación. Como
consecuencia, estas aproximaciones se suelen limitar actualmente al terreno de la
investigación teórica en el área de simulación.
Los beneficios que, según la literatura, puede aportar una inicialización adecuada
en la técnica de análisis, hacen considerar la posibilidad de un esfuerzo en este sentido. Para plantear la estrategia se ha decidido seguir el camino inverso, es decir, conociendo las limitaciones descritas antes, preguntarse cómo aplicar la aproximación
al producto final de un experimento de simulación.
La Figura 4-66 muestra un ejemplo habitual de posible resultado de un estudio en
que se emplea la simulación. Un modelo se ejecuta con diferentes parámetros de entrada w para estimar el valor X wi de alguna variable de salida del modelo y, por
ejemplo, poder trazar una curva o una superficie de comportamiento.
Variable de salida (media)
Wk
W k-1
W4
W3
W2
W1
Carga
Figura 4-66 Ejemplo de resultado obtenido con un experimento de simulación.
Ordenando cada instancia del modelo (punto en la gráfica) de forma que la distancia entre cada par de tuplas de parámetros de entrada sea lo más pequeña posible,
seguramente estaremos ante modelos cuyo régimen permanente esté cercano o, al
Técnica para la reducción del efecto del transitorio inicial
181
menos, más cercanos entre sí que la distancia entre cada uno de los regímenes permanentes y el estado del modelo con condiciones iniciales no representativas del
régimen permanente. Si suponemos que se cumple dicha condición, la inicialización
de un modelo con el régimen permanente del anterior puede reducir significativamente el efecto del transitorio inicial, pues se parte de mejores condiciones iniciales.
Para implementar esta idea se propone la siguiente aproximación. El primer modelo se ejecuta de la forma habitual. Cuando el monitor de réplicas decide que se han
alcanzado las condiciones iniciales, las réplicas se reconfiguran adecuadamente para
empezar a ejecutar el siguiente punto partiendo del estado actual del modelo anterior.
La Figura 4-67 muestra un ejemplo real del efecto buscado. Cada nueva simulación parte del estado en que quedó el modelo anterior tras la simulación. Al partir de
un modelo no vacío y en equilibrio parece lógico esperar que la transición hasta el
nuevo régimen permanente sea menos sesgada y más rápida.
14000
Tiempo respuesta E/S (ciclo
s)
12000
Reinicio estadísticos
y cambio de configuración
10000
8000
6000
4000
2000
carga={8.5, 13.5,16, 23.5}
127
120
113
106
99
92
85
78
71
64
57
50
43
36
29
22
15
8
1
0
Tiempo simulado (ciclos/5,000)
Figura 4-67 Ejemplo de efecto buscado en la estrategia propuesta para reducir el efecto
del transitorio inicial.
El primer problema que se presenta para llevar a término esta idea es su implementación. El siguiente apartado describe cómo se ha llevado a cabo.
4.4.1 Implementación
Para la implementación de esta idea en CSX es necesario resolver dos problemas:
por una parte que cada réplica tenga capacidad para ser reconfigurada, y por otra, que
el monitor CSX coordine la reconfiguración de las réplicas.
182
Desarrollo de un analizador paralelo basado en réplicas independientes
Para la reconfiguración de cada réplica se ha decidido que el modelo sea consciente de dicha reconfiguración al implementarse. Ello va a permitir un mecanismo
de reconfiguración más flexible y más sencillo de realizar.
Para conseguir la máxima flexibilidad, el modelo debe proporcionar una función
cuya ejecución se encargue de la reconfiguración, y a la que las bibliotecas de CSX
llamarán cuando se desee realizar dicha reconfiguración. A continuación se describe
la implementación y cómo se ha aplicado al modelo M/M/1.
La siguiente función CSX permite informar al gestor de la réplica de la función
proporcionada por el modelo que se deberá encargar de la reconfiguración, y a la que
llamará CSX cuando desee la reconfiguración.
void csx_setchangeconffunc(void (*func)(char *));
La función de usuario proporcionada deberá aceptar una cadena de caracteres de
la que se extraerán los parámetros de reconfiguración. Por ejemplo, el siguiente
fragmento contiene la función de usuario que reconfigura el modelo M/M/1 desarrollado en CSIM.
//CSX llama a esta función cuando se require una reconfiguración
void change_conf(char *params) {
char buf[100];
char *myargv[50];
int myargc;
csx_stringtoargv(params,myargv,&myargc);
csx_gpdouble(myargc,myargv,"lambda",&lambda,0.1);
csx_gpdouble(myargc,myargv,"mu",&mu,1.0);
}
La reconfiguración de este modelo consiste en variar el ritmo de llegada de
clientes y el tiempo de servicio de la cola. Así, la función de reconfiguración simplemente cambia los valores de las variables lambda y mu que son empleadas para
generar las distribuciones de probabilidad, con lo que los clientes llegan al modelo y
son servidos a un ritmo diferente.
Para que CSX pueda llamar a esta función, se ha informado de la función de
usuario ejecutando,
csx_setchangeconffunc(change_conf);
La otra mitad del mecanismo la coordina el monitor de CSX. Para que éste realice la reconfiguración, se envía un mensaje con los nuevos parámetros de entrada del
Técnica para la reducción del efecto del transitorio inicial
183
modelo. Siguiendo con la filosofía de CSX, dicho mensaje será procesado en el siguiente punto de comprobación de cada réplica, momento en el que el modelo será
reconfigurado y empezará a trabajar como si de un modelo con parámetros de entrada diferentes se tratara.
mensajes con
datos estadísticos
monitor (LSM)
s
s
s
réplica
mensaje de
reconfiguración
a)
monitor (LSM)
s
s+1
s+1
réplica
b)
Figura 4-68 Reconfiguración de una simulación. a) El monitor LSM envía los datos de
reconfiguración mediante un mensaje. b) La réplica reconfigurada remite nuevos mensajes de datos con el indicador de secuencia s incrementado.
Con el propósito de evitar sincronizaciones de las réplicas, el monitor CSX puede
enviar información de reconfiguración a las réplicas en cualquier momento, aunque
haya mensajes con información estadística pendientes de procesar en la cola de recepción de mensajes del monitor. La Figura 4-68 representa el envío de un mensaje
de reconfiguración a una réplica por parte de un monitor LSM. Cuando la réplica
recibe la orden de reconfiguración y cambia su comportamiento, un identificador de
secuencia enviado en los mensajes de datos es incrementando, permitiendo al monitor detectar cuándo empieza a llegar el producto de la reconfiguración, con lo que
puede descartar los mensajes que pertenezcan a restos de simulación del experimento
previo.
La limitación de este sencillo mecanismo parece estar en la dificultad de implementar la reconfiguración del modelo. A pesar de las primeras dudas, la experiencia
ha mostrado que resulta sencillo, sobre todo si se tiene en mente este mecanismo a la
hora de desarrollar el modelo. Como ejemplo, a continuación se muestra la función
de reconfiguración del modelo del servidor central cerrado.
184
Desarrollo de un analizador paralelo basado en réplicas independientes
void change_conf(char *params) {
char buf[100];
char *myargv[50];
int myargc;
int i;
csx_stringtoargv(params,myargv,&myargc);
csx_gpint(myargc,myargv,"nterms",&new_NTERMS,0);
if (new_NTERMS > NTERMS) {
for (i=NTERMS;i<new_NTERMS;i++)
closed_job(i);
NTERMS = new_NTERMS;
} else {
//se autoeliminan a partir diferencia new_NTERMS y NTERMS
}
}
La variable NTERMS contiene el número previo de terminales que contenía el
modelo y en new_NTERMS se especifica la nueva cantidad. En el caso de que se
deseen más terminales que en el caso previo, se genera la diferencia entre NTERMS y
new_NTERMS como nuevos trabajos cerrados. En el caso de que se deseen menos,
dichos trabajos van siendo eliminados del modelo. El siguiente fragmento muestra la
función de simulación de los clientes donde se aprecia la progresiva eliminación de
los clientes (en subrayado).
void closed_job(int i) {
double dprob;
TIME timestamp;
create("closed_job");
while(1) { // bucle infinito
hold(exponential(Z));
//terminal
if (new_NTERMS < NTERMS) goto SAL_CLOSE;
terminal_cnt++;
csx_obs_add(obterm_cnt,1.0);
timestamp = clock;
CPU_CLOSE:
use(cpu, exponential(Tcpu)); // CPU use
if (new_NTERMS < NTERMS) goto SAL_CLOSE;
dprob = uniform01();
if (dprob <= (25.0/320))
{
use(disk[0], exponential(Tdisk1));
if (new_NTERMS < NTERMS) goto SAL_CLOSE;
goto CPU_CLOSE;}
else if (dprob <= ((25.0+6.0)/320))
{
use(disk[1], exponential(Tdisk2));
if (new_NTERMS < NTERMS) goto SAL_CLOSE;
Técnica para la reducción del efecto del transitorio inicial
185
goto CPU_CLOSE;}
else
{ closed_job_cnt++;
record(clock - timestamp, respt_closed);
csx_obs_add(obrespt_closed,clock - timestamp);
}; //TERM
} //while(1)
// salida por decremento de terminales
SAL_CLOSE:
NTERMS--;
}
La forma en que se implemente la reconfiguración influirá en lo rápido que se
diluya el efecto del estado previo. En el ejemplo anterior, la eliminación de terminales es mucho mejor que el incremento, pero a costa de una mayor complejidad.
4.4.2 Resultados de cobertura y rendimiento
A continuación se muestran algunos de los resultados obtenidos al evaluar los
modelos analíticos empleando esta técnica. Sólo se muestran los efectos obtenidos
cuando los modelos están muy cargados, pues tiene mayor interés.
La Figura 4-69 muestra el resultado de aplicar la técnica sobre el modelo M/M/1.
En este caso se ha configurado la extracción para que se relice cada 100 extracciones
y no se eliminen muestras iniciales. La configuración de los encadenamientos de
simulaciones ha consistido en empezar la simulación con carga normalizada ρ=0,1, y
continuar realizando simulaciones para ρ={0,4, 0,7, 0,9}, siendo el caso de mayor
carga el mostrado. Si se compara con su equivalente sin precalentamiento de la
Figura 4-19 no se aprecia una mejora notable, simplemente un pequeño aumento de
cobertura.
Cobertura
Coverage
Observaciones
por réplica
Observations per replication
300k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 900k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
Replications
de réplicas
30
0
3
5
78
10
15
20
Número
Replications
de réplicas
0
30
0
3
5
78
10
15
20
Número
Replications
de réplicas
Figura 4-69. Cobertura y rendimiento con precalentamiento. Modelo M/M/1, carga
ρ=0,10 → 0,40 → 0,70 → 0,90. Check= 100 muestras, reset=no.
0
30
186
Desarrollo de un analizador paralelo basado en réplicas independientes
La Figura 4-70 y la Figura 4-71 muestran el equivalente con precalentamiento de
la Figura 4-30 para el modelo del servidor central abierto, empleando extracción cada
100 observaciones. En este caso se han probado dos configuraciones de precalentamiento, la primera, cuando la carga del modelo pasa de λ=0,60 a 0,75, y la segunda,
cuando pasa de λ=0,10 a 0,75. Para el primer caso se aprecia una mejoría en la cobertura mayor que en el modelo M/M/1 y en el segundo caso esta mejoría no es tan
apreciable. Como parece lógico, cuando la configuración previa del modelo está
“cercana” a la siguiente, esta técnica produce mejores resultados.
Cobertura
Coverage
Observaciones
por réplica
Observations per replication
170k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 700k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
0
30
10
15
20
Número
de réplicas
Replications
0
3
5
78
0
30
10
15
20
NúmeroReplications
de réplicas
Figura 4-70 Cobertura y rendimiento con precalentamiento. Modelo servidor central
abierto, carga λ=0,60 → 0,75. Check= 100 muestras, reset = no.
Observaciones
réplica
Observations per por
replication
Cobertura
Coverage
170k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 700k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
10
15
20
NúmeroReplications
de réplicas
0
30
0
3
5
78
10
15
20
NúmeroReplications
de réplicas
Figura 4-71 Cobertura y rendimiento con precalentamiento. Modelo servidor central
abierto, carga λ= 0,10 → 0,75. Check= 100 muestras, reset = no.
La Figura 4-72 muestra el efecto de aumentar el número de muestras recogido
entre envíos a 1.000 para el caso λ=0,60 a 0,75. Su equivalente es la Figura 4-34. No
cabe destacar una mejora significativa al aplicar la técnica de precalentamiento, pero
sí se aprecia que desaparece el efecto de caída de cobertura con el aumento de réplicas paralelas.
0
30
Técnica para la reducción del efecto del transitorio inicial
187
Observaciones
réplica
Observations per por
replication
Cobertura
Coverage
170k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 700k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
0
30
10
15
20
NúmeroReplications
de réplicas
0
3
5
78
0
30
10
15
20
NúmeroReplications
de réplicas
Figura 4-72 Cobertura y rendimiento con precalentamiento. Modelo servidor central
abierto, carga λ=0,60 → 0,75. Check= 1000 muestras, reset = no.
La Figura 4-73 muestra resultados para el modelo del servidor central cerrado
cuando N pasa de 8 a 12. Comparándolo con su equivalente de la Figura 4-51 se
aprecia una notable mejoría de la cobertura, sobre todo al aumentar el número de
réplicas, y todo ello sin afectar al rendimiento. La aplicación de la técnica a este caso
está permitiendo el aprovechamiento adecuado del paralelismo, dado que se puede
usar un mayor número de réplicas sin que el problema del transitorio inicial limite el
paralelismo.
Cobertura
Coverage
Observaciones
por réplica
Observations
per replication
20k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 200k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
10
15
20
Número
de réplicas
Replications
0
30
0
3
5
78
10
15
20
Número
de réplicas
Replications
Figura 4-73 Cobertura y rendimiento con precalentamiento.
Modelo servidor central cerrado, N=8 → 12, variable "tiempo de respuesta del
sistema". Check = 100 muestras, reset = no.
La Figura 4-74 muestra resultados para el modelo del servidor central cerrado
cuando N pasa de 12 a 100. Su equivalente es la Figura 4-51. A pesar de que la cobertura mejora, no se consigue alcanzar el límite teórico. Se aprecia también un comportamiento superior de los criterios 3 y 4, destacando, además, una mejora de rendimiento con un número alto de réplicas.
En este caso es interesante destacar el salto que supone pasar de 12 a 100 terminales, el cual puede suponer una fuerte contaminación inicial de las observaciones.
Como el modelador ha tenido que implementar el mecanismo de reconfiguración del
0
30
188
Desarrollo de un analizador paralelo basado en réplicas independientes
modelo, debe ser consciente de que la forma de esta implementación influye en la
reducción del efecto del transitorio. Nótese que en la implementación realizada se
consigue disipar con mayor rapidez la configuración del modelo si se disminuye el
número de terminales que si se aumenta.
Observaciones
por réplica
Observations
per replication
Cobertura
Coverage
20k
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
1 200k
0
30
0
p1
p2
p3
p4
3
5
78
10
15
20
NúmeroReplications
de réplicas
Figura 4-74 Cobertura y rendimiento con precalentamiento.
Modelo servidor central cerrado, N=12 → 100, variable "tiempo de respuesta del
sistema". Check = 100 muestras, reset = no.
Se han realizado experimentos con precalentamiento donde se ha ido disminuyendo la carga del modelo en lugar de aumentarla. Los resultados suelen ser mejores,
(ver estudios teóricos en [Kelton 1985]) pero se ha omitido deliberadamente comentarlos porque los casos problemáticos son los que emplean cargas altas, por lo que es
lógico empezar con cargas bajas e ir aumentándolas progresivamente.
La eliminación de observaciones iniciales en la técnica del precalentamiento puede solventar algunos problemas que esta técnica no consigue resolver completamente. La Figura 4-75 muestra el efecto de eliminar 200 observaciones de cada réplica,
como se hace en su equivalente de la Figura 4-54. Se consigue una mejora notable de
cobertura y un rendimiento ligeramente mayor. Este resultado muestra que la técnica
de precalentamiento y la de eliminación clásica de muestras iniciales se complementan sin problemas.
Con la variable productividad del sistema del modelo del servidor central cerrado
se obtienen resultados similares. La Figura 4-76 y la Figura 4-77 muestran los resultados para N=8 a 12 y para N=12 a 100, respectivamente. Sus equivalentes son la
Figura 4-63 y la Figura 4-64. Se aprecia un notable incremento de cobertura y una
mejora del rendimiento, sobre todo en el último caso donde un número alto de réplicas no penaliza la aceleración del experimento.
1
0
30
Técnica para la reducción del efecto del transitorio inicial
Cobertura
Coverage
189
Observaciones
por réplica
Observations
per replication
20k
Total
de observaciones
Observations
accumulated
p1
p2
p3
p4
1
1 200k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
0
30
10
15
20
Número
de réplicas
Replications
0
3
5
78
0
30
10
15
20
Número
de réplicas
Replications
Figura 4-75 Cobertura y rendimiento con precalentamiento.
Modelo servidor central cerrado, N=12→
→100, variable "tiempo de respuesta del
sistema". Check = 100 muestras, reset = 200 muestras.
Cobertura
Coverage
Observaciones
réplica
Simulated
time per por
replication
10k
Total de observaciones
Simulated
time accumulated
p1
p2
p3
p4
1
1 100k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Número
de réplicas
Replications
30
0
3
5
78
0
30
10
15
20
Número
de réplicas
Replications
0
3
5
78
0
30
10
15
20
NúmeroReplications
de réplicas
Figura 4-76 Cobertura y rendimiento con precalentamiento.
Modelo servidor central cerrado, N=8 → 12, variable "productividad sistema".
Check = 50 muestras, reset = no.
Cobertura
Coverage
Observaciones
réplica
Simulated
time per por
replication
10k
Total de observaciones
Simulated
time accumulated
p1
p2
p3
p4
1
1 100k
p1
p2
p3
p4
1
0.95
0.9
0.85
p1
p2
p3
p4
3
5
78
10
15
20
Replications
Número
de réplicas
30
0
3
5
78
10
15
20
Replications
Número
de réplicas
0
30
0
3
5
78
10
15
20
NúmeroReplications
de réplicas
Figura 4-77 Cobertura y rendimiento con precalentamiento.
Modelo servidor central cerrado, N=12 → 100, variable "productividad sistema".
Check = 50 tiempo simulado, reset = no.
Cuando se emplea la técnica con los modelos a baja carga los resultados son similares a la técnica clásica. Este resultado es importante, pues indica que, en general,
la técnica no va a empeorar ni el rendimiento ni la cobertura y puede emplearse a
discreción, aportando siempre beneficios en los casos peores.
0
30
190
Desarrollo de un analizador paralelo basado en réplicas independientes
4.5 Técnica para el ajuste automático del punto de
comprobación basado en tiempo simulado
La gestión de los puntos de comprobación (checkpoint) de las réplicas se puede
hacer de dos formas: basándose en el número de observaciones recogidas de la variable de interés o en el tiempo de simulación transcurrido. La elección dependerá de la
naturaleza de la variable a analizar, y con el propósito de evitar sesgos por ratio.
En el caso de que se emplee el número de muestras como punto de comprobación, el usuario no tendrá problema en especificar un valor (idealmente grande) con
el cual es consciente de la cantidad de información estadística que se introduce en
cada análisis.
En cambio, si se usa el tiempo para realizar el control, será muy difícil estar seguro de si, para el cálculo de la variable, se han recogido muchas o pocas muestras.
Más aún, fijar dicho tiempo para todos los experimentos no es una buena política,
pues suele cambiar drásticamente la cantidad de eventos contabilizados según la carga del modelo.
Para resolver este problema se propone una técnica de ajuste automático del
punto de comprobación en el caso de usar tiempo simulado. Para ello, junto a la variable observada se recoge la cuenta de eventos que se ha empleado para el cálculo
de la misma (por ejemplo, para el cálculo de la productividad de un modelo de colas,
se recoge la cuenta de clientes servidos, que es la que se emplea, dividida por el
tiempo, para el cálculo de dicha productividad).
Las réplicas se lanzan para ser comprobadas transcurrido un tiempo simulado especificado por el usuario tuser. Suponiendo k réplicas, cada una de ellas informará de
que se han contabilizado ci eventos para el cálculo de la variable de interés. Las replica se gestionan en modo síncrono, por lo que quedan bloqueadas a la espera de
ódenes.
Con los ci eventos remitidos es posible calcular el tiempo adecuado para los
puntos de comprobación. Para ello, el usuario habrá especificado previamente el número de eventos mínimos N con los que se debe calcular la variable de salida. El
tiempo de comprobación se calcula aplicando la expresión,
t chk =
t user
xN
min(c1 , c 2 ,..., c k )
Conclusiones
191
Las réplicas son informadas entonces del nuevo punto de comprobación y continúan la simulación.
Puede ocurrir que se hayan recogido muy pocas muestras para calcular adecuadamente el tiempo de extracción. Dicho extremo se comprueba aplicando la expresión, min(c1,c2,…,ck)<50. Caso de cumplirse, se procede a utilizar el nuevo tiempo de
usuario tuser=tchk y se repite de nuevo el proceso.
El problema insalvable de este algoritmo es que el modelador debe elegir tuser,
pues es difícil que la herramienta de simulación averigüe automáticamente, y sin
equivocarse, los órdenes de magnitud involucrados en el modelo. Este valor debe ser
del orden de la magnitud de las variables temporales de interés del modelo, pero a la
vez suficientemente pequeño para no forzar una simulación más allá de lo necesario.
En cualquier caso, el algoritmo ajustará automáticamente el valor por mucho que el
modelador se haya equivocado en su estimación.
Como resultado de la aplicación de este algoritmo se estará proporcionando robustez a la estimación de la variable de salida de interés sin tener que preocuparse de
tener que ajustar el tiempo de comprobación para cada conjunto de configuraciones
de entrada al modelo.
4.6
Conclusiones
En este capítulo se han resumido los resultados obtenidos en el desarrollo de un
analizador paralelo basado en el método de las réplicas independientes.
Hay dos opciones posibles para gestionar réplicas independientes en paralelo.
Una de ellas propone ir lanzando réplicas de tamaño fijo en paralelo y recolectar resultados hasta que se alcance la precisión deseada. Esta aproximación es sencilla
pero puede dar lugar a importantes problemas de sesgo [Glynn y Heidelberger 1992,
Glynn y Heidelberger 1992b]. La otra opción consiste en mantener una cantidad fija
de réplicas en paralelo y permitir que evolucionen hasta que se alcancen las condiciones deseadas. Esta opción es más deseable que la anterior como justifican algunos
resultados [Glynn 1995]. La problemática es fácil de ilustrar: imagínese el caso de
lanzar decenas de réplicas de tamaño fijo en paralelo y ser éstas demasiado cortas
para superar el transitorio. Ello podría dar lugar a una estimación puntual muy precisa, pero que, probablemente, no cubriese la verdadera media.
192
Desarrollo de un analizador paralelo basado en réplicas independientes
A pesar de la aparente idoneidad de la segunda aproximación, no se dispone de
implementaciones paralelas eficientes. Ello es debido a la necesidad de sincronización entre todas las réplicas y el proceso colector en los puntos donde se hace el cálculo estadístico y se decide si la simulación debe continuar o no. Esta barrera de sincronización limita enormemente las posibilidades del método, que se agrava debido a
entornos de ejecución donde hay variaciones de carga y a la naturaleza aleatoria del
tiempo de ejecución de una porción de simulación.
En este capítulo se ha propuesto un algoritmo asíncrono de comunicación réplicas-monitor que elimina esta barrera. Con ello se consigue que los modelos de simulación ejecutados en paralelo corran tan rápido como lo harían sus equivalentes
secuenciales, no suponiendo la infraestructura de CSX una sobrecarga.
El algoritmo de gestión inicialmente propuesto se ha mejorado para los casos en
que más de una réplica se ejecuta en una misma máquina. El mecanismo compensa
automáticamente las diferencias de velocidad entre las réplicas, proporcionando más
recurso computacional (procesador) a quien más lo necesita en cada momento de la
simulación. Este mecanismo también se puede aprovechar para realizar un análisis
estadístico con datos pareados, consiguiendo ejecutar dos modelos distintos simultáneamente de manera que el algoritmo compense automáticamente las naturales diferencias de velocidad entre cada modelo.
Los algoritmos de gestión han permitido superar las restricciones que supone la
ejecución en paralelo de un conjunto fijo de réplicas independientes. Se ha pasado
entonces a probar el comportamiento del gestor desde los puntos de vista de rendimiento en paralelo y de la cobertura. Para ello se ha elegido una batería de modelos
de simulación, y se han ejecutado empleando el criterio de terminación clásico basado en el error relativo. Dicho criterio ha resultado poco satisfactorio en cuanto a cobertura de la media real, sobre todo en los casos con un número bajo o un número
elevado de réplicas.
Para resolver los problemas del criterio clásico de terminación se han propuesto
dos nuevos criterios: uno basado en la reducción del error relativo, y otro basado en
la pendiente normalizada de la media global de las réplicas. Los dos han mostrado
ser superiores al criterio clásico, aunque a costa de un rendimiento lógicamente menor.
Los criterios propuestos están pensados para resolver dos tipos de problemas distintos que suelen darse al simular con varios métodos de análisis de la salida. El cri-
Conclusiones
193
terio 2 intenta superar las finalizaciones de simulación espúreas debidas a una disminución puntual del error relativo (Figura 4-78 a)), y ha mostrado comportarse bien
con los dos modelos abiertos. El criterio 3 pretende evitar la terminación prematura
en modelos que evolucionan lentamente hacia el valor de régimen permanente debido, principalmente, al sesgo inicial (ver Figura 4-78 b) y c)). Este segundo criterio se
ha comportado adecuadamente con los dos modelos cerrados.
a)
b)
c)
Figura 4-78 Distintas evoluciones típicas de la media de la variable de salida
de un modelo de simulación.
Como los dos criterios resuelven problemas distintos se ha decidido combinar
ambos con la idea de disponer así de un criterio que pueda hacer frente a diferentes
tipos de problemáticas sin necesidad de que el modelador deba distinguirlos. El criterio combinado propuesto se comporta bien incluso para valores bajos y altos de réplicas.
En caso de emplear un tiempo entre extracciones demasiado pequeño, ninguno de
los criterios es capaz de enfrentarse a modelos muy saturados. Para resolver este problema es necesario recurrir al borrado de muestras iniciales y a incrementar el tiempo
entre extracciones.
El borrado de muestras iniciales puede resolver el problema del sesgo pero a
costa de limitar el paralelismo. Por el contrario, el sesgo inicial limita la cobertura
para un número alto de réplicas. Estos dos efectos limitan las posibilidades de paralelismo. La técnica de precalentamiento de modelos propuesta en este trabajo permite
romper ese límite, logrando aumentar la cobertura y mejorar el rendimiento en los
modelos que presentan transitorio inicial. Además, el mecanismo no suele reducir el
rendimiento ni la cobertura en ningún caso, por lo que puede explotarse sistemáticamente sin temor a empeorar los resultados. El mecanismo es sencillo de implementar
y sólo requiere que el usuario proporcione una función que permita la reconfiguración de un modelo en ejecución.
194
Desarrollo de un analizador paralelo basado en réplicas independientes
Esta última técnica permite incrementar las posibilidades de aceleración del modelo al lograr que un número más alto de réplicas (probablemente más cortas) no
sesguen el resultado. Combinándolo con el método clásico del borrado inicial puede
resolver muchos problemas de cobertura.
Como recomendación de uso del analizador se propone:
•
Utilizar un mínimo de 10 réplicas paralelas para realizar el experimento. Si no
se dispone de suficientes máquinas se puede recurrir a ejecutar varias réplicas
en la misma máquina. Por ejemplo, si se dispone de 5 máquinas, depositar 2
réplicas por máquina es una buena opción. Si, por ejemplo, se dispone de 3
máquinas, se puede optar por colocar 3 réplicas en cada máquina, teniendo un
total de 9 réplicas paralelas. Incluso ejecutar 10 réplicas en paralelo en una
sola máquina proporciona buenos resultados y es una alternativa viable a los
métodos secuenciales clásicos. La limitación viene dada por el tamaño del
ejecutable en la memoria del computador, pudiéndose dar el caso de que todas las réplicas no quepan simultáneamente en la memoria principal del computador lo que causará un exceso de paginado a disco duro que limitará
enormemente la potencia de computación.
•
Emplear un espacio entre puntos de extracción relativamente grande. Por
ejemplo, 500 observaciones. Aunque esto pueda limitar el rendimiento, es
mejor que arriesgarse a un problema de cobertura.
•
En caso de usar control espacio entre puntos de extracción basado en tiempo
simulado, emplear el algoritmo de ajuste automático del tiempo de extracción
fijando el número de observaciones según lo dicho en el punto anterior.
•
Utilizar el criterio de terminación combinado propuesto con s = 0,001.
•
Utilizar siempre que sea posible la técnica de precalentamiento del modelo.
En caso de modelos con transitorio inicial, su efecto será menor y, posiblemente, también reduzca el tiempo para alcanzar el régimen permanente. Su
implantación es sencilla y los beneficios pueden ser notables
•
Borrar siempre una pequeña porción de las muestras iniciales. Por ejemplo,
eliminar hasta el primer punto de comprobación mejorará la cobertura de los
modelos sesgados y no disminuirá demasiado el rendimiento. En el caso de
modelos con transitorio rápido, apenas aportará beneficio, pero tampoco
afectará excesivamente al rendimiento.
Conclusiones
195
Con el analizador propuesto en este capítulo se consigue una herramienta de análisis estadístico robusta y adecuada para acelerar simulaciones por eventos discretos.
Además, el método de las réplicas independientes es el método preferido por muchos
analistas debido a sus propiedades, las cuales se pierden al recurrir a otros métodos
impuestos por los entornos secuenciales.
La posible mejora del analizador se puede afrontar en dos aspectos. El primero es
encontrar otros criterios de terminación que permitan asegurar la recolección de suficientes observaciones para garantizar el cumplimiento de las restricciones del método de las réplicas independientes (normalidad, etc.). El segundo es la aplicación de
técnicas para la detección y eliminación automática del transitorio inicial, como por
ejemplo, las basadas en el método gráfico de Welch [Welch 1983] o [Vassilacopoulos 1989]. No son aplicables técnicas de eliminación automática habituales, como las
basadas en series temporales estandarizadas [Schruben 1983], [Goldsman et al. 1994]
o el método espectral [Heidelberger y Welch 1981b], pues la naturaleza de la información recogida por el monitor no lo permite y su aplicación a discreción puede desechar muchos valores válidos, efecto no tan negativo en los métodos secuenciales de
análisis.
5. Experimentos aplicando CSX a un modelo de red de almacenamiento
5
Experimentos aplicando
CSX a un modelo de red
de almacenamiento
Este capítulo resume las experiencias aplicando CSX a un modelo de simulación
de gran complejidad de una red de almacenamiento de altas prestaciones (SAN,
Storage Area Network) [Farley 2.000]. EL modelo se ha desarrollado en el lenguaje
de simulación CSIM y se describe en el apartado 5.1.
En estas experiencias se prueban distintas estrategias de configuración del entorno paralelo para el lanzamiento del experimento, donde el experimento es un conjunto de configuraciones del modelo. Dichas estrategias se describen en el apartado
5.2.
El propósito es tomar tiempos de ejecución de la simulación para compararlos
con el tiempo de simulación original que se obtiene aplicando el método por lotes
(batch-means) incorporado en el paquete CSIM.
En este capítulo se propone, además, una técnica para ajustar automáticamente la
cantidad de réplicas a fin de reducir el tiempo de ejecución necesario para simular el
sistema. Ello se aplica cuando se pretende resolver un experimento formado por un
modelo de simulación en el que se varía un parámetro de entrada.
Los resultados que se ofrecen en el apartado 5.3 muestran que la herramienta
construida como resultado de este trabajo es capaz de ofrecer también buenos resultados cuando lo que se pretende es resolver rápidamente un experimento (conjunto
de simulaciones); siendo superior a estrategias de lanzamiento simultáneo de simulaciones secuenciales en un conjunto de computadores.
198
Experimentos aplicando CSX a un modelo de red de almacenamiento
Este capítulo resume resultados publicados en [Perles et al. 2000], [Perles et al.
2000b] y [Perles et al. 2002].
5.1
El modelo de simulación SAN
Las redes de almacenamiento (SAN) son una plataforma emergente de comunicación de datos que interconecta servidores y dispositivos de almacenamiento para
crear un sistema de almacenamiento al que los usuarios pueden acceder directamente. Esta aproximación en red proporciona muchos beneficios, como por ejemplo,
flexibilidad topológica, tolerancia a fallos, alta disponibilidad, computación en grupo, gestión remota, etc.
Para evaluar el rendimiento de estos sistemas se ha desarrollado un simulador
muy flexible y sencillo de usar [Molero et al. 2.000]. El simulador se ha escrito empleando las bibliotecas CSIM. Por tanto, el modelo interpreta el comportamiento del
sistema mediante un conjunto de procesos que interactúan entre ellos empleando las
estructuras y mecanismos internos de CSIM. La versión actual es un programa de
unas 18.000 líneas en código estándar ANSI C que se ejecuta tanto en plataformas
Unix como Windows gracias a su portabilidad.
Como este simulador modela con precisión una SAN centrándose en su diseño
interno, el programa resultante es complejo y necesita de gran cantidad de recursos
computacionales para su evaluación, tanto de memoria de principal como de procesador.
Originalmente, el simulador emplea el método de análisis estadístico por lotes
(batch-means) implementado internamente en CSIM para el análisis de las variables
de salida. La obtención de resultados precisos provoca largos tiempos de ejecución.
La Figura 5-1 muestra un resultado típico obtenido usando el modelo de simulación, donde cada punto representado corresponde a un proceso de simulación sim()
de CSIM con un valor distinto para la carga de trabajo de entrada. Esta carga se calcula como el tráfico total inyectado en la red de interconexión, y se mide en bytes por
ciclo de reloj. Como se puede observar en la gráfica, el sistema estará en un estado
operacional mientras el tráfico distribuido sea igual al tráfico inyectado (zona lineal).
En este estudio particular con el entorno de simulación paralelo CSX se ha considerado una SAN con la topología floors [Ovicki y Karlin 1.992] mostrado en la
Figura 5-2. En esta topología, que es usada en edificios, la mayoría de las conexiones
El modelo de simulación SAN
199
se dan entre los conmutadores y los dispositivos de cada una de las plantas. La estructura en cada planta, mostrada en la Figura 5-2(b), consiste en una estrella con
conmutadores centrales y conmutadores finales. Esta estructura se replica tantas veces como plantas se incluyan en la SAN. Los conmutadores centrales están específicamente dedicados a la conexión de conmutadores entre las distintas plantas. Los
servidores y dispositivos de almacenamiento están conectados a la SAN mediante los
conmutadores finales. Esta estructura tiene bastantes conexiones para proporcionar
cierto grado de tolerancia a fallos.
900
I/O mean response time (cicles)
800
700
sim()
600
sim()
500
sim()
400
300
200
0.5
1
1.5
2
2.5
3
3.5
4
4.5
Delivered traffic (bytes/cycle)
Figura 5-1. Resultado típico del simulador SAN: “tiempo medio de respuesta de E/S”
comparado con “tráfico distribuido”.
S
D
Planta n
D
D
D
D
Conmutador final
Conmutador central
Planta 3
Conmutador final
Planta 2
S
D
D
D
D
D
Planta 1
a) Conexión entre conmutadores
de diferentes plantas
b) Conexión entre los
conmutadores de una planta
Figura 5-2. Configuración SAN considerada en el estudio.
200
Experimentos aplicando CSX a un modelo de red de almacenamiento
En este caso particular, la estructura está compuesta por una topología de 5 plantas, donde cada planta tiene dos conmutadores centrales. Cada conmutador central
está conectado a todos los conmutadores centrales de las plantas adyacentes. Cuatro
conmutadores finales proveen conectividad a cada planta. Cada conmutador final
está conectado a un servidor y a 5 discos. Por tanto, 20 servidores y 100 discos componen la red de almacenamiento.
5.2
Estrategias de simulación
Se asume que el modelo de simulación se ha de resolver para w valores diferentes
de la carga de entrada, y que la simulación se ejecuta en un cluster compuesto por n
computadores, donde w ≤ n. En esta sección se proponen diferentes estrategias para
acortar el tiempo de ejecución del experimento, midiendo este tiempo como el tiempo real que transcurre desde que se inicia el experimento hasta que se obtiene el resultado de la última simulación.
Se describen a continuación las diferentes estrategias de planificación de las simulaciones que se han comparado en este estudio. El método A corresponde a la
técnica secuencial de análisis por lotes de la versión original. Los métodos B, C y D
corresponden a diversas políticas de ejecución en paralelo.
5.2.1 Método A: ejecución secuencial
Este método corresponde a la aproximación clásica secuencial. El modelo de simulación es ejecutado en una estación para cada valor de carga de entrada empleando la técnica de análisis por lotes para la obtención del intervalo de confianza de la
variable de salida.
Zona transitoria.
Arranque del
modelo en vacío.
Una estación
Punto de carga 1
Punto de carga 2
En paralelo
Zona de régimen permanente. Una estación
Punto de carga w
Figura 5-3. Método A: simulaciones independientes para cada punto de carga.
Estrategias de simulación
201
Estas simulaciones independientes pueden ejecutarse simultáneamente, cada una
en una máquina diferente del cluster, como se representa en la Figura 5-3.
Si se arrancan todas las simulaciones al mismo tiempo, entonces la cantidad de
tiempo T que el experimento necesitará para estar terminado será el coste de la ejecución más larga, esto es,
w
T = max{ti }
i =1
donde w es el número de puntos de carga de entrada y ti es el tiempo necesario
para simular el punto de carga i.
5.2.2 Método B: ejecución paralela
En este caso, cada configuración de entrada es realizada mediante la ejecución de
tantas réplicas paralelas como computadores haya en el cluster. Como es habitual en
el método de las réplicas independientes, todas las réplicas parten de un estado del
modelo anormal, poco representativo del régimen permanente, hasta que, transcurrido un transitorio inicial, el modelo está en equilibrio y genera observaciones propias
del régimen permanente.
La ejecución del modelo de simulación para cada punto de carga se hace secuencialmente, tal y como se muestra en la Figura 5-4.
n estaciones
Zona transitoria
global (n réplicas)
Punto de carga 1
Punto de carga 2
Zona estable
global
n estaciones
Simulaciones con
transitorio debido
a arranque en
vacío del modelo.
Punto de carga w
Figura 5-4. Método B: réplicas independientes en paralelo para cada punto de carga.
202
Experimentos aplicando CSX a un modelo de red de almacenamiento
El tiempo total de ejecución T que el experimento necesitará para ser calculado se
puede calcular como la suma de los tiempos de ejecución necesarios para realizar
cada uno de los puntos, esto es,
w
T = ∑ ti
i =1
donde w es el número de puntos de carga, y ti es el tiempo necesario para ejecutar
el punto i.
5.2.3 Método C: ejecución paralela ajustando el número de réplicas
independientes
En este caso la simulación del primer punto es empleada para ajustar el número
adecuado de réplicas independientes que debería utilizarse para el resto de los puntos
de simulación. Este proceso de ajuste tiene en cuenta la relación entre computadores
disponibles, su potencia de cálculo, y el particular comportamiento del modelo de
simulación con el propósito de estimar cuál es la cantidad idónea de réplicas que
permite terminar más rápidamente el experimento.
n estaciones
Zona transitoria
global
1ª fase
(sintonización)
Punto de carga 1
n1 estaciones
Punto de carga 2
Zona estable
global
n2 estaciones
Simulaciones
arrancadas con el
modelo vacío
2ª fase
(en paralelo)
Punto de carga 3
Figura 5-5. Método C: el primer punto de carga simulado se emplea para sintonizar el
resto del proceso.
Estrategias de simulación
203
La Figura 5-5 muestra gráficamente la aplicación de este proceso. Como se puede
ver, el primer punto de carga es simulado empleando todas las estaciones del cluster,
cada una de ellas ejecutando una réplica. Una vez que el primer punto ha sido simulado, la información recogida puede ser empleada para sintonizar la ejecución del
resto de las simulaciones.
En este caso, el segundo punto de carga es ejecutado en n1 estaciones y el tercero
en n2 estaciones, con n=n1+n2. Se asume que los dos conjuntos de estaciones se
mantienen inalterado a lo largo del resto de las simulaciones.
El tiempo total de repuesta T del experimento de simulación se puede calcular
sumando al tiempo de la primera simulación el tiempo más largo del subconjunto de
ejecuciones de puntos de carga. Por ejemplo, si el conjunto se divide en dos subconjuntos iguales de puntos se tendrá,
 w2 +1

w


T = t1 + max ∑ t i , ∑ t j 
 i=2 j = w +2 
2


donde w es el número de puntos de carga, y ti es el tiempo necesario para ejecutar
el punto i.
5.2.4 Método D: ejecución paralela ajustando el número de réplicas y
reduciendo el efecto del transitorio inicial
El objetivo de este método es reducir del efecto el estado inicial no representativo
en el que se suelen arrancar las simulaciones. Como se ha descrito en el capítulo previo, este método arranca el modelo en un estado cercano al régimen permanente
aprovechando el estado que deja la simulación previa.
Para hacerlo, se puede aplicar una pequeña variación al caso previo. Una vez que
la simulación del primer punto ha terminado, el resto de las simulaciones pueden
empezar a partir del estado dejado por la simulación previa. Como en el método C, la
ejecución del primer punto sirve para ajustar el número de réplicas que deben usarse
en el resto de los puntos.
La Figura 5-6 muestra gráficamente la aplicación de este método. El primer punto
de carga es simulado empleando todas las estaciones del cluster: cada estación ejecuta una réplica independiente. Una vez que el primer punto ha sido simulado, el
resultado obtenido se puede usar para ajustar el resto de la simulación. Por ejemplo,
204
Experimentos aplicando CSX a un modelo de red de almacenamiento
en este caso el segundo punto es ejecutado en n1 estaciones y el tercero en n2, con n =
n1 + n2. Sin embargo, a diferencia del caso anterior, todas las réplicas del segundo y
siguientes puntos empiezan en un estado distinto al vacío.
n1 estaciones
n workstations
Resto de los “puntos
de carga”
Zona transitoria
global
El estado inicial de estos puntos viene determinado
por el estado final de la simulación previa
Punto de carga 1
Simulaciones con
transitorio arrancadas con
el modelo vacío
Simulaciones con
transitorio debido al
estado previo no vacío
n2 estaciones
Figura 5-6. Método D: primera simulación sintoniza y el resto se simulan reconfigurando las réplicas en ejecución.
El tiempo total de respuesta T del experimento de simulación se puede calcular
igual que en el caso anterior.
5.3
Resultados experimentales
Esta sección compara la cantidad de tiempo T necesaria para realizar el experimento cuando se usa cada uno de los métodos descritos previamente. Para ejecutar
los experimentos se ha utilizado un cluster compuesto por 10 PC (n=10) AMD K62/350 Mhz con 128 MB de RAM y ejecutando Linux SuSE 6.1.
La variable de salida del modelo considerada ha sido el tiempo medio de respuesta de las operaciones de E/S. Este tiempo incluye la latencia de la red, el tiempo
de acceso a disco y los tiempos de esperan en colas. Se han considerado 7 niveles
diferentes para el parámetro de carga de entrada del modelo (w = 7). Estos niveles de
carga han sido 8,5, 11, 13,5, 16, 18,5, 21 y 23,6, todos medidos en bytes/ciclo, donde
un ciclo de reloj equivale a 6,5 nanosegundos [Molero et al. 2.000].
El código original del simulador SAN ha sido modificado y enlazado con la biblioteca CSX para que pueda ser monitorizado en el entorno paralelo. Para el criterio
Resultados experimentales
205
de fin de simulación se ha empleado un error relativo del 5% a un nivel de confianza
del 95%.
5.3.1 Método A: ejecución secuencial
Este experimento se ha realizado empleando el método de análisis por lotes implementado en CSIM. Debido a que la implementación particular del método en
CSIM no está accesible y no está adecuadamente documentada, se le ha considerado
como una especie de caja negra que ofrece dos salidas: un intervalo de confianza y
un indicador lógico de si se ha producido la convergencia.
La Tabla 5-1 resume los resultados obtenidos para cada punto de carga. Se muestran la media, el intervalo de confianza, y el tiempo de ejecución para cada caso.
Como se puede apreciar, el tiempo de ejecución se incrementa al aumentar el nivel
de carga. Este hecho se debe al incremento de variabilidad como ocurría en los modelos estudiados teóricamente en el capítulo previo, pero también al hecho de que
CSIM incrementa el número de lotes a recoger cuando no se ha alcanzado la convergencia en la fase previa. Para el valor más alto de carga, el método no ha convergido
a pesar de haber invertido 10 horas de simulación.
Carga
Media
H
8,5
11
13,5
16
18,5
21
23,5
4281,9
4875,8
5528,2
6552,1
7649,2
9255,0
11583,4
61,1
106,2
117,6
154,5
180,7
177,6
no disponible
Tiempo de ejecución
(minutos)
50
52
51
104
199
109
600
Tabla 5-1. Media, intervalo de confianza y tiempo de ejecución para el análisis de la
variable de salida en el método A.
De los datos de la Tabla 5-1, el tiempo de ejecución para obtener los resultados
del experimento utilizando el cluster de computadores es,
w
T = max{t i } = max{50,52,51,104,199,109,600} = 600 minutos
i =1
5.3.2 Método B: ejecución paralela
Para llevar a cabo este experimento se han lanzado 10 réplicas independientes en
el cluster, una en cada computador. La información estadística relacionada con la
206
Experimentos aplicando CSX a un modelo de red de almacenamiento
evolución de la variable objetivo es enviada periódicamente a CSX para que calcule
la media global y el intervalo de confianza.
Se ha analizado el efecto del arranque inicial antes de llevar a cabo el experimento definitivo. La Figura 5-7 muestra el efecto en la evolución de la media y del
error relativo para 10 réplicas cuando se aplica una eliminación de muestras iniciales
en el punto que parece apropiado. Como se puede observar, el reinicio de estadísticos
hace que la media alcance más rápidamente el valor de régimen permanente, y la
evolución del error relativo es similar en ambos casos.
7000
Tiempo de respuesta E/S (ciclos)
6000
5000
4000
R e in ic io d e e s ta d ís tic o s
3000
S in r e in ic io
2000
1000
c arg a = 1 6
0
1
8
15
22
29
36
43
50
57
64
71
78
85
92
99
T i e m p o s i m u l a d o ( c i c l o s /5 .0 0 0 )
Error (%)
15%
10%
5%
0%
1
9
17
25
33
41
49
57
65
73
81
89
97
Figura 5-7. Evolución de la media y el error relativo al aplicar un reinicio de estadísticos. 10 réplicas y carga 16.
Carga
Media
H
8,5
11
13,5
16
18,5
21
23,5
4253,6
4840,0
5508,6
6348,1
7484,7
9081,0
11328,5
92,9
105,2
96,9
72,0
95,5
162,8
289,8
Tiempo de ejecución
(minutos)
3,1
4,0
5,9
9,5
14,7
27,9
45,7
Tabla 5-2. Media, intervalo de confianza y tiempo de ejecución para el análisis de la
variable de salida en el método B.
Resultados experimentales
207
A pesar de que la eliminación de muestras mejora la calidad de la salida, se ha
decidido no aplicarlo para facilitar la comparación de tiempos de ejecución. La Tabla
5-2 resume los resultados obtenidos para cada nivel de carga y 10 réplicas. De los
datos de la tabla se tiene que el tiempo para obtener los resultados del experimento
es,
w
T = ∑ t i = 3.1 + 4.0 + 5.9 + 9.5 + 14.7 + 27.9 + 45.7 = 110 minutos
i =1
5.3.3 Método C: ejecución paralela ajustando el número de réplicas
independientes
En este caso se emplean los 10 computadores para ejecutar una réplica en cada
uno de ellos con el primer punto de carga. A la simulación se la dejará ejecutarse lo
suficiente para descubrir cuál es el número adecuado de réplicas en función del comportamiento del modelo y la potencia de procesamiento de las máquinas.
La idea básica es sencilla: por medio de la ejecución de 10 réplicas durante un
tiempo suficientemente largo, se puede calcular cuánto tiempo sería invertido para
alcanzar la convergencia con 9, 8, 7 ... réplicas. Este tiempo es buen indicador del
comportamiento del modelo cuando se simulen el resto de los puntos de carga, siempre y cuando estos estén cercanos entre sí.
Tiempo de ejecución (minutos)
La Figura 5-8 muestra el tiempo de terminación para diferentes cantidades de réplicas cuando se emplea un nivel de carga de 8,5. Para seleccionar el número ideal de
réplicas las opciones más factibles son 3, 5 ó 10 réplicas. La elección de 3 réplicas
puede ser una elección poco segura desde el punto de vista de cobertura de la media,
mientras que 10 réplicas consumirán una gran cantidad de recursos computacionales
sin proporcionar una mejora importante comparado con 5 réplicas.
20
17,5
15
10
5
5,6
3,9
0
1
2
3
4
5
3,1
3,3
0
6
7
8
9
10
Número de réplicas
Figura 5-8. Tiempo de ejecución para diferentes cantidades de réplicas y carga 8,5.
208
Experimentos aplicando CSX a un modelo de red de almacenamiento
Teniendo en cuenta que el cluster de computadores empleado en el experimento
consta de 10 máquinas, parece que la elección más apropiada consiste en elegir 5
réplicas.
Con esta elección, se han ejecutado los puntos de carga 11, 13,5 y 16 en un grupo
de 5 máquinas, y los puntos de carga 18,5, 21 y 23,5 en el resto. La Tabla 5-3 resume
los resultados obtenidos para cada nivel de carga.
Carga
Media
H
8,5
11
13,5
16
18,5
21
23,5
4289,4
4792,1
5569,3
6432,6
7527,3
9109,7
11251,2
106,5
113,3
124,3
79,1
100,9
265,4
247,6
Tiempo de ejecución
(minutos)
6,0
5,1
7,8
13,1
21,6
32,5
48,8
Tabla 5-3. Media, intervalo de confianza y tiempo de ejecución para el análisis de la
variable de salida en el método C.
De los datos de la tabla, el tiempo de ejecución del experimento es,
 w2 +1

w


T = t1 + max ∑ t i , ∑ t j  = 6.0 + max{5.1 + 7.8 + 13.1, 21.6 + 32.5 + 48.8} = 108 minutos
 i =2 j = w + 2 
2


El análisis de la expresión anterior nos muestra que la ejecución del experimento
se ha penalizado debido a que uno de los grupos de 5 máquinas ha realizado los experimentos más costosos. Por tanto, sería deseable un mecanismo dinámico capaz de
repartir las simulaciones. Por ejemplo, si se planifica el siguiente punto de carga en
el grupo de estaciones que termina primero un punto, se obtiene el siguiente tiempo
de ejecución,
T = 6.0 + max{5.1 + 13.1 + 32.5, 7.8 + 21.6 + 48.8} = 84.2 minutos
Se llamará C2 a este método para diferenciarlo del primero, al que se llamará C1.
Por otra parte, si se planifica alternativamente el último y el primer punto de carga en
el grupo de estaciones que termina un determinado punto entonces se tiene un tiempo
de ejecución (C3),
T = 6.0 + max{5.1 + 7.8 + 13.1 + 21.6 + 32.5, 48.8} = 86.1 minutos
Resultados experimentales
209
Es posible realizar un mejor reparto del trabajo, por ejemplo, ejecutando los niveles de carga 11, 13.5 y 23.5 en un grupo de máquinas, y los niveles 16, 18.5 y 21
en el otro grupo. En este caso el tiempo de ejecución es,
T = 6.0 + max{5.1 + 7.8 + 48.8, 13.1 + 21.6 + 32.5} = 73 minutos
Sin embargo, este valor ideal no se puede obtener dinámicamente a priori, pues
no se conoce antemano el tiempo que necesitan los experimentos para simularse.
5.3.4 Método D: ejecución paralela ajustando el número de réplicas y
reduciendo el efecto del transitorio inicial
En este método, el primer punto simulado se usa, de la misma manera que en el
caso anterior, para sintonizar el número de réplicas. En este caso, basándonos en los
resultados precedentes, el experimento se ejecutará de la siguiente forma: los niveles
de carga 11, 18,5 y 21 en un grupo de máquinas y los niveles 13,5, 16 y 23,5 en otro
grupo. Esta elección pretende comprobar también el efecto de elegir puntos de carga
“cercanos” y “distantes” con respecto al valor previo.
La Figura 5-9 y Figura 5-10 muestran la evolución de la media y el error relativo
para los niveles de carga 8,5, 11, 18,5 y 21, y los niveles 8,5, 13,5, 16 y 23,5 respectivamente.
Tiempo de respuesta E/S (ciclos)
12000
Reinicio estadísticos
y cambio de carga
10000
8000
6000
4000
2000
carga={8.5, 11, 18, 5, 21}
115
121
116
121
97
96
109
91
91
103
85
86
79
73
67
61
55
49
43
37
31
25
19
13
7
1
0
111
106
101
81
76
71
66
61
56
51
46
41
36
31
26
21
16
6
11
15,0%
10,0%
5,0%
0,0%
1
Error (%)
Tiempo simulado (ciclos/5.000)
Figura 5-9. Evolución de la media y del error relativo para los niveles de carga 8,5, 11,
18,5 y 21.
210
Experimentos aplicando CSX a un modelo de red de almacenamiento
Tiempo de respuesta E/S (ciclos)
14000
12000
Reinicio estadísticos y
cambio de punto de carga
10000
8000
6000
4000
2000
carga={8,5, 13,5,16, 23,5}
127
120
113
106
99
92
85
78
71
64
57
50
43
36
29
22
15
8
1
0
131
126
121
116
111
106
101
96
91
86
81
76
71
66
61
56
51
46
41
36
31
26
21
16
11
6
15,0%
10,0%
5,0%
0,0%
1
Error (%)
Tiempo simulado (ciclos/5.000)
Figura 5-10. Evolución de la media y del error relativo para los niveles de carga 8,5,
13,5, 16 y 23,5.
La Tabla 5-4 resume los resultados obtenidos para todos los niveles de carga considerados.
Carga
Media
H
8,5
11
13,5
16
18,5
21
23,5
4289,4
4694,7
5367,4
6378,3
7494,7
9003,9
11729,4
106,5
112,8
156,5
79,2
105,1
231,1
282,3
Tiempo de ejecución
(minutos)
6,0
5,1
7,8
4,2
12,1
30,2
44,6
Tabla 5-4. Media, intervalo de confianza y tiempo de ejecución para el análisis de la
variable de salida en el método D.
De los datos de la tabla se tiene que el tiempo de ejecución del experimento completo es,
T = 6.0 + max{5.1 + 12.1 + 30.2, 7.8 + 4.2 + 44.6} = 62.6 minutos
Si el reparto de puntos de carga empleado aquí se hubiese empleado en el método
C, el tiempo de ejecución del experimento hubiese sido de 75,7 minutos, con lo que
la mejora es apreciable.
Conclusiones
5.4
211
Conclusiones
Es imposible justificar la validez estadística de los resultados obtenidos por los
distintos métodos, pues no es posible disponer de resultados analíticos del modelo
que permitan contrastar los resultados. De todas formas, los intervalos de confianza
solapan para los distintos métodos, lo cual es un punto a favor de considerar los resultados como válidos.
Tiempo de ejecución
(minutos)
La conclusión de este experimento solo puede tener el marco de los tiempos de
ejecución como único punto a analizar. La Figura 5-11 muestra los tiempos de respuesta para los distintos métodos. Se comprueba que la ejecución paralela mejora
notablemente los tiempos de terminación del experimento.
200
600
150
110
108
100
84,2
86,1
C2
C3
62,6
50
0
A
B
C1
D
Método de simulación
Figura 5-11. Tiempos de respuesta de los experimentos para distintos métodos.
Los métodos C2 y C3 son dos aproximaciones dinámicas al método C inicial que
proporcionan un mejor uso de los recursos computacionales. Por tanto, se puede perder el beneficio de la fase de sintonización si no se provee un mecanismo de planificación dinámica de las simulaciones. Los mejores resultados se obtendrán con el
mecanismo dinámico y, en general, un mayor número de niveles beneficiará los
tiempos de simulación del experimento.
Finalmente, el método D proporciona un rendimiento ligeramente superior a la
versión dinámica del método C. Este resultado se mejorará también al incrementar el
número de puntos y al aplicar técnicas de planificación dinámicas.
El método de sintonización de réplicas debe considerase con extremada cautela.
A la vista de los resultados del capítulo previo se desprenden dos problemáticas:. por
una parte, la variación de los parámetros de entrada del modelo modifica el comportamiento temporal de las réplicas, con lo que la elección adecuada del número de
212
Experimentos aplicando CSX a un modelo de red de almacenamiento
réplicas no es obvia, y por otra, la sintonización puede provocar una elección del
número de réplicas pequeña (5 en este experimento), lo que puede dar lugar a problemas de cobertura, problemas que se pueden corregir, en parte, gracias al método
de reducción del efecto del transitorio. Estos problemas sugieren que es necesario
investigar mejor las posibilidades del método de sintonización para analizar si su
aplicación práctica es viable
A parte de las conclusiones que ya se han justificado mucho mejor en el capítulo
previo, cabe aquí indicar que la aproximación paralela puede competir con la aproximación secuencial en dos frentes: la reducción del tiempo de ejecución de una simulación individual, o la reducción del tiempo de ejecución de un experimento completo (conjunto de simulaciones), resultado no tan obvio si se tiene en cuenta la posibilidad evidente de lanzar simultáneamente distintas simulaciones secuenciales en
distintas máquinas.
6. Conclusiones
6
Conclusiones
Este capítulo ofrece una síntesis general del trabajo realizado y de posibles líneas
de trabajo. Al final de los capítulos previos se comentan las conclusiones particulares
de cada uno de los aspectos del trabajo realizado.
6.1
Conclusiones generales y contribuciones
En esta tesis se han propuesto técnicas que permiten acelerar la ejecución de modelos de simulación por eventos discretos. Las propuestas han sido implementadas y
validadas empíricamente, pues el objetivo final es emplear dichas técnicas en los
modelos de simulación que se desarrollan en el grupo de investigación.
El trabajo pretende reducir el tiempo de obtención de resultados de estimadores
puntuales de régimen permanente en modelos de simulación por eventos discretos. El
estudio de las posible vías que se resume en el capítulo 2 concluye que la opción más
viable parece ser la aplicación de la técnica de réplicas en paralelo. Sin embargo, en
la literatura no hay ninguna propuesta adecuada al problema.
A partir de los criterios ideales que debe cumplir el entorno de simulación paralelo para adaptarse a la problemática particular, se han diseño y desarrollado las técnicas necesarias para hacer posible que un conjunto heterogéneo de ordenadores
forme parte de un sistema de simulación paralelo en el que sea posible lanzar modelos de simulación, especificados en cualquier lenguaje de simulación, de manera que
sean gestionados por el entorno. Se han propuesto las técnicas que permiten una fácil
adaptación de los modelos, con lo que se facilita enormemente la aplicación del entorno paralelo por parte de los modeladores. El modelo secuencial adaptado al entor-
214
Conclusiones
no paralelo no sufre prácticamente sobrecarga, por lo que se sigue ejecutando a la
misma velocidad que su versión original secuencial.
La naturaleza heterogénea del entorno de simulación ha obligado a desarrollar las
técnicas para estimar la potencia de simulación de los computadores que forman
parte del cluster y de evaluar el rendimiento de las simulaciones en ejecución. Con
estas técnicas el entorno conoce el “rendimiento” de una simulación en ejecución,
pudiéndose aplicar fácilmente estrategias de redistribución dinámica de la carga que
supone la ejecución de los modelos.
Uno de los criterios de diseño fundamental ha sido separar los aspectos de gestión
de los procesos que componen el entorno paralelo, de los aspectos de análisis estadísticos de los datos generados por las réplicas. En este sentido, se ha diseñado un
analizador de datos basado en el método de las réplicas independientes. Una de las
razones para la elección de este método, en detrimento de otros, se justifica en que la
ejecución paralela permite romper las barreras que no lo hacen adecuado en un entorno secuencial, y que han fomentando el empleo de otras técnicas como lotes
(batch-means). Además de ésta, hay otras razones importantes para elegir este método [Law y Kelton 2.000].
La aplicación paralela de la técnica de réplicas independientes tiene dos posibles
vertientes: la aproximación basada en la ejecución de réplicas de tamaño fijo y la
basada en la ejecución de una cantidad de réplicas fija a la que se les permite crecer.
En el capítulo 2 se justifica la mejor calidad estadística de la segunda aproximación.
Sin embargo, ésta no es la elección implementada en la literatura debido a los problemas originados por la diferente velocidad de generación de cada réplica. En este
sentido, el primer paso ha sido diseñar las técnicas que permiten romper esta barrera,
consiguiéndose un mecanismo capaz de permitir la ejecución de las réplicas a la máxima velocidad posible sin que se interfieran ente ellas. Ello se ha logrado con una
gestión asíncrona de las réplicas paralelas. También se han desarrollado mejoras al
mecanismo asíncrono en el caso particular de ejecutar más de una réplica en un computador mediante la aplicación de sincronizaciones locales. La mayor ventaja de este
mecanismo se logra cuando se pretende comparar dos modelos, pues es posible lanzarlos simultáneamente y compensar automáticamente las lógicas diferencias de velocidad de cada modelo.
El comportamiento del analizador por réplicas se ha evaluado desde el punto de
vista de rendimiento (tiempo de ejecución) y de cobertura de la media empleando
cuatro modelos con solución analítica. Las características evaluadas han sido: el
Conclusiones generales y contribuciones
215
tiempo entre extracciones de información estadística, la eliminación de muestras iniciales de las réplicas, el número de réplicas paralelas y los criterios de parada. Como
primer criterio de parada se ha utilizado el empleado en el método de las réplicas
independientes en su implementación secuencial. Los pobres resultados de cobertura
han obligado a plantear nuevos criterios de parada, que han mostrado ser superiores
al criterio clásico en distintos escenarios. Una combinación de los criterios propuestos permite un comportamiento superior para distintos tipos de respuesta del modelo
de salida. Este criterio combinado se basa en la comprobación de la disminución del
error relativo según evoluciona la simulación (para incrementar la probabilidad de
que no se trata de un cumplimiento espúreo de las condiciones de fin) y en la detección de la estabilización de la media mediante la comprobación de la pendiente entre
dos muestras sucesivas..
Un factor primordial que puede limitar la aceleración de la simulación es el sesgo
de las observaciones iniciales del método de las réplicas independientes, pues un
incremento del número de réplicas aumenta la cantidad de muestras contaminadas
que forman parte de la media, provocando una disminución de la cobertura. En este
sentido se ha propuesto y desarrollado una técnica de precalentamiento basada en
aprovechar el régimen permanente de una simulación previa para realizar la siguiente
simulación, con lo que se espera que la transición al nuevo régimen permanente sea
más rápida y menos sesgada. Como suele ser habitual ejecutar un modelo con distintos parámetros de entrada, esto se puede aprovechar para conseguir la propuesta
anterior. En este sentido, se han desarrollado las técnicas que permiten al entorno
paralelo reconfigurar un modelo en ejecución para que simule una configuración
diferente de parámetros de entrada.
Como demuestran los resultados del capítulo 4, la aplicación de la técnica de precalentamiento, una discreta eliminación de muestras iniciales, un tamaño de extracción suficientemente grande y el criterio de parada combinado propuesto, proporcionan un analizador paralelo bastante robusto desde el punto de vista estadístico y con
una alta escalabilidad paralela.
En el capítulo 5 se evalúan estrategias de reparto de réplicas en experimentos con
varios puntos de carga (configuraciones de entrada) aplicados a un complejo modelo
de SAN. Los resultados muestran que la aproximación paralela puede ser mejor que
la secuencial incluso si se pretende simular varios puntos y se toma la estrategia de
simular secuencialmente cada punto en una máquina diferente al mismo tiempo.
216
Conclusiones
En definitiva, las técnicas propuestas y su implementación práctica posibilitan el
aprovechamiento de computadores heterogéneos para la realización masiva de experimentos de simulación en paralelo, permitiendo una notable reducción del tiempo de
respuesta de los experimentos. Ajustándose a uno de los criterios de diseño propuestos, la aplicación de las técnicas es sencilla y extensible, en principio, a cualquier
lenguaje de simulación por eventos discretos, con lo que el modelador puede aprovechar fácilmente las nuevas ventajas y olvidarse del problema del análisis estadístico
de salida.
6.2
Publicaciones
Se detallan a continuación las publicaciones en las que se han difundido las principales aportaciones de esta tesis.
•
Perles, A., Martí, A., Serrano, J.J. Clustered simulation experimenter: A tool
for concurrent simulation execution on loosely coupled workstations. Proceedings 13th European Simulation Multiconference. Society for Computer Simulation International. pp: 207-214. 1999
•
Perles, A., Martí, A., Serrano, J.J. Reparto de experimentos de simulacion en
redes hetereógeneas de estaciones de trabajo. Actas del Simposio Español de
Informática Distribuida. pp: 213-219. 1999
•
Perles, A., Molero, X., Martí, A., Santonja, V., Serrano, J.J., Improving the
simulation of Storage Area Networks (SAN) using concurrent execution.
Proceedings 12th European Simulation Symposium. Society for Computer
Simulation International. pp: 149-153. 2000
•
Perles, A., Molero, X., Martí, A., Santonja, V., Serrano, J.J. Simulación concurrente de redes de almacenamiento de altas prestaciones (SAN, Storage
Area Networks). Actas del Simposio Español de Informática Distribuida
(SEID’2000). pp: 483-493. 2000
•
Perles, A., Molero, X., Martí, A., Santonja, V., Serrano, J.J., Improving the
execution of groups of simulations on a cluster o workstations and its application to Storage Area Networks. Proceedings of the 34th Annual Simulation
Symposium. IEEE Computer Society. pp: 227-234. 2002
Líneas de investigación abiertas
217
•
Perles, A., Molero, X., Martí, A., Serrano, J.J. Analysis of coverage and performance of the variable sized replications simulation method in parallel.
Proceedings of the16th European Simulation Multiconference. pp: 219-223.
2002
•
Perles, A., Molero, X., Martí, A., Serrano, J.J. Analysis of new proposals for
parallel replication based discrete-event simulation. Proceedings 2003 Industrial Simulation Conference. EUROSIS. pp: 103-110. 2003
6.3
Líneas de investigación abiertas
Dos son las líneas principales que se pueden seguir en un futuro:
•
Mejorar los aspectos relacionados con el análisis estadístico de los datos de
salida de las réplicas.
•
Optimizar algunos aspectos relacionados con la gestión de los procesos en el
cluster.
El análisis estadístico de los datos de salida debe ser la primera línea de trabajo a
seguir, pues es la que garantiza, en última instancia, la calidad de los estimadores de
las variables de salida.
En este sentido, cabe resaltar un punto débil del mecanismo de instrumentación
de las réplicas paralelas. Los modelos transfieren al monitor la media ponderada de
las observaciones recogidas hasta el momento. Esta forma de trabajar tiene la ventaja
de la poca cantidad de información a transferir entre procesos, pero presenta la contrapartida de que se pierde la riqueza que supone transferir todas las observaciones al
monitor, permitiendo realizar un análisis estadístico mucho más potente. Como resultado de la aproximación realizada, el proceso monitor recibe una media actualizada que es cada vez más suave según se incorporan datos y que imposibilita separar el
efecto de distintas tandas de observaciones. Una consecuencia importante en el método de las réplicas independientes es la imposibilidad de detectar automáticamente
qué muestras iniciales están sesgadas y eliminarlas para disminuir su efecto en la
estimación de la media.
La primera propuesta a investigar pasa por estudiar la posibilidad de que el mecanismo de instrumentación recoja información en forma de lotes, los cuales se calculan promediando una secuencia ordenada de observaciones. Así, por ejemplo, una
218
Conclusiones
réplica paralela puede dividir la secuencia de N observaciones en L lotes de tamaño
M, y remitir al monitor la media de cada lote, con lo que la cantidad de información a
transmitir se puede mantener arbitrariamente baja. Además, se cumple que la media
de las observaciones generadas por la réplica es igual a la media de los promedios de
los lotes, por lo que se siguen pudiendo aplicar directamente las propuestas hechas en
este trabajo. Si el monitor almacena la información de cada lote, es posible realizar
análisis estadísticos más potentes; por ejemplo, es posible la aplicación de heurísticos
para intentar la detección y eliminación automática del transitorio inicial. Parece
plausible que, aplicando ideas propuestas en [Fishman 2.001], [Vassilacopoulos
1.989], [Welch 1.983] y [Gafarian et al. 1.978], se pueda aumentar cualitativamente
la potencia del método de análisis basado en réplicas independientes, optimizándose
la eliminación del transitorio inicial.
La idea de implementar un sistema de lotes facilita la construcción de otros analizadores estadísticos. Por ejemplo, sería inmediato desarrollar un analizador por lotes
(batch-means) con la ventaja de que los lotes entre réplicas son independientes y, por
tanto, de mayor calidad que en la versión secuencial.
Por otro lado, cuando se emplean máquinas con distinta potencia lo habitual es
que unas réplicas sean más rápidas que otras, generando más observaciones. Una
segunda línea de trabajo intentaría mejorar el método de análisis estadístico para lograr estimadores de la esperanza y el intervalo de confianza en estos casos. Aunque
no se ha comentado en la presente tesis, se ha intentado lograr un método robusto
para estimar el intervalo de confianza en estos casos aplicando la estadística empleada en el método de las regeneraciones. El problema radica en que la estimación del
intervalo necesita una cantidad grande de ciclos regenerativos para suponer la normalidad, lo cual no es cierto en nuestro caso, pues el número de réplicas independientes suele ser relativamente bajo. A pesar de este problema, en [Mota et al. 1.998]
se aplica esta misma idea reforzándola con mecanismos adicionales, aunque el razonamiento no se ha demostrado teóricamente.
Una vez mejorados los mecanismos de análisis estadístico se puede trabajar la línea de la gestión de los procesos concurrentes. En este sentido, CSX está construido
mediante PVM, entorno de computación distribuida que, junto a MPI, se emplea en
interesantes arquitecturas Beowulf de 1ª generación (multicomputadores construidos
con ordenadores PC). Las herramientas paralelas para entornos Beowulf de 2º generación [Otero y Ferri 2002] están evolucionando rápidamente, sobre todo bajo el sistema operativo Linux, con lo que se dispone de plataformas ideales para dar un salto
Líneas de investigación abiertas
219
hacia adelante en la gestión de los procesos. El diseño de la herramienta ya se ha
hecho pensando en esta posibilidad, facilitando esta migración.
Los aspectos de gestión del entorno paralelo de simulación se deben centrar en
facilitar la gestión dinámica de los procesos (se han realizado experiencias con el
lenguaje Java, agentes inteligentes y Corba), garantizando la seguridad y confidencialidad de los datos contenidos en los computadores que los usuarios ceden a CSX
para la ejecución de simulaciones de terceras personas, y la aplicación de técnicas de
garantía de funcionamiento con el fin de asegurar la disponibilidad del entorno a pesar de las posibles pérdidas inesperadas de algunas máquinas.
1. Bibliografía
1
Bibliografía
1.1 Bibliografía
[Adam 1983] Adam, N. R. Achieving a confidence interval for parameters estimated
by simulation. Management Science. vol. 29. no. 7. pp: 856-866. July 1983
[Alexopoulos y Kim 2002] Alexopoulos, Ch., Kim, S-H. Output analysis for simulations. Proceedings of the 2002 Winter Simulation Conference. pp: 85-96.
2002
[Ayani 1989] Ayani, R. A parallel simulation scheme based on the distance between
objects. Proceedings of the SCS Multiconference on Distributed Simulation.
21, 2 pp: 113-118. March 1989
[Azadivar 1999] Azadivar, F. Simulation optimization methodologies. Proceedings
of the 1999 Winter Simulation Conference. pp: 93-100. 1999
[Bain y Scott 1988] Bain, W. L., Scott, D. S. An algorithm for time synchronization
in distributed discrete event simulation. Proceedings of the SCS Multiconference on Distributed Simulation. 19, 3. pp: 30-33. July 1988
[Bauer y Wilson 1989] Bauer, K. W. Jr., Wilson, J. R. Control-variate selection criteria, SMS 89-13. School of Industrial Engineering. Purdue University, West
Lafayette. 1989
[Bagrodia y Lio 1995] Bagrodia, R. L., Lio, W. –T. Maisie user manual, release 2.2.
UCLA Parallel Computing Lab. 1995
[Bagrodia 1996] Bagrodia, R. L. Perils and pitfalls of parallel discrete-event simulation. Proceedings 1996 Winter Simulation Conference. pp: 136-143. 1996
[Bhavsar e Isaac 1987] Bhavsar, V. C., Isaac, J. R. Design and analysis of parallel
Monte-Carlo algorithms. SIAM Journal on Scientific and Statistical Computing. 8. 73-95. 1987
[Biles et al. 1985] Biles, W. E., Daniels, D. M., O’Donell, T. J. Statistical considerations in simulation on a network of microcomputers. Proceedings 1985
Winter Simulation Conference. pp: 388-392. 1985
[Bryan 1977] Bryan, R. E. Simulation of packet communications architecture computer systems. MIT-LCS-TR-188- Massachusetts Institute of Technology.
1977
222
Bibliografía
[Bühlman y Künsch 1999] Bühlmann, P., Künsch, H. R. Block length selection in the
bootstrap for time series. Computational Statistics and Data Analysis 31,
pp: 295-310. 1999
[Carothers et al. 1999] Carothers, C. D., Perumalla, K. S., Fujimoto, R. M. Efficient
optimistic parallel simulations using reverse computation. ACM Transactions on Modelling and Computer Simulation. vol. 9 n.2 pp: 224-253. July
1999
[Casas et al. 1995] Casas, J., Clark, D., Konuru, R., Otto, S., Prouty, R., Walk Pole,
J. MPVM: A migration transparent version of PVM, Technical Report 95002, Oregon Graduate Institute of Science and Technology, Department of
Computer Science and Engineering, February 1995
[Comfort y Gopal 1988] Comfort, J. C., Gopal, R. R. Environment partitioned distributed simulation with transputers. Proceedings of the SCS Multiconference on Distributed Simulation. pp: 103-108. July 1988
[Cota y Sargent 1988] Cota, B., Sargent, R. A discrete event simulator with shared
memory. Proceedings of the SCS Multiconference on Distributed Simulation. July 1988
[Crane e Iglehart 1974a] Crane, M. A., Iglehart, D. L. Simulating estable stochastic
systems, I: General multiserver queues. Journal of the ACM. vol. 21. pp:
103-113. 1974
[Crane e Iglehart 1974b] Crane, M. A., Iglehart, D. L. Simulating estable stochastic
systems, II: Markov chains. Journal of the Association Computer Machines.
vol. 21. pp: 114-123. 1974
[Crane e Iglehart 1975] Crane, M. A., Iglehart, D. L. Simulating estable stochastic
systems, III: Regenerative processes and discrete event simulations. Operations Research. vol. 23. pp: 33-45. 1975
[CSIM 1998] User's guide: CSIM18 Simulation Engine (C version). Mesquite Software, Inc. 1998
[Chandy y Misra 1979] Chandy, K. M., Misra, J. Distributed simulation: a case study
in the design and verification of distributed programs. IEEE Transsaccions
on Software Engineering. SE-5, 5 pp: 440-452. September 1979
[Chandy y Misra 1981] Chandy, K. M., Misra, J. Asynchronous distributed simulation via a sequence of parallel computations. Communications of the ACM.
24,11 pp: 198-205. November 1981
[Chen y Sargent 1986] Chen, B., Sargent, G. Using standarized time series to estimate confidence intervals for the difference between two stationary stochastic processes. Operations Research. vol. 35 n. 3 pp:428-436. 1986
[Chen y Sargent 1990] Chen, B., Sargent, G. Asymptotic variance estimation for
stationary processes. Management Science, Vol. 36, No. 2 pp: 200-211.
1990
[Chen y Kelton 2000] Chen, E. J., Kelton, W. D. Mean estimation based on phimixing sequences. IEEE-SCS Proceedings of the 33rd Annual Simulation
Symposium. pp:237-244. 2000
Bibliografía
223
[Dado et. al. 1992] Dado, B., Menhart, P., Safarik, J. Distributed simulation: A
simulation system for discrete event systems. International Conference on
Decentralized and Distributed Systems. pp: 263-273. 1992
[Damerdji 1991] Damerdji, H. Strong consistency and others properties of the spectral variance estimator. Management Science. n. 37 pp: 1424-1440. 1991
[Damerdji y Henderson 1997] Damerdji, H., Henderson, S. G. Computational efficiency evaluation in output analysis. Proceedings of the 1997 Winter Simulation Conference. 1997
[Das et al. 1994] Das, S., Fujimoto, R. M., Panesar, K., Allison, D., Hybinette, M.
GTW: A Time Warp system for shared memory multiprocessors. Proceedings of the 1994 Winter Simulaciont Conference. pp: 1332-1339. 1994
[Deslandres y Pierreval 1991] Deslandres, V., Pierreval, H. An expert system prototype assisting the statistical validation of simulation models. Simulation.
vol. 56 n. 2 pp: 79-89. February 1991
[Dikken et al 1994] Dikken, L., Linden, F., Vesseur, J., Sloot, P. Dynamic PVM.
Dynamic load balancing on parallel systems,. High-Performance Computing
and Networking, proceedings, vol. 797 pp. 273-277. 1994
[Dickens y Reynolds 1990] Dickens, P. M., Reynolds Jr, P. F. SRADS with local
rollback. Proceedings of the SCS Multiconference on Distributed Simulation. 22,1 pp: 161-164. January 1990
[Edward et al. 1995] Mascarenhas, E., Knop, F., Rego, V. ParaSol: A multithreaded
system for parallel simulaton based on mobile threads. Proceedings of the
1995 Winter Simulation Conference. pp:690-697. 1995
[Falsafi y Wood 1997] Falsafi, B., Wood, D. A. Modelling cost/performance of a
parallel computer simulation. ACM Transactions on Modelling and Computer Simulation. vol. 7 n. 1 pp: 104-130. January 1997
[Farley 2000] Farley, M. Building storage area networks. McGraw-Hill, 2000
[Fishman 1971] Fishman, G. S. Estimating sample size in computer simulation experiments. Management Science. vol. 18 pp: 21-38. 1971
[Fishman 1973] Fishman, G. S. Statistical analysis for queueing simulations. Management Science. vol. 20 pp: 363-369. 1973
[Fishman 1973b] Fishman, G. S. Concepts and methods in discrete event digital
simulation. John Wiley. Ney York. 1973
[Fishman 1974] Fishman, G. S. Estimation in multiserver queueing simulations. Operations Research. vol. 22 pp:72-78. 1974
[Fishman 1977] Fishman, G. S. Achieving specific accuracy in simulation output
analysis. Communications of the ACM. vol. 20 n. 5 pp: 310-315. May 1977.
[Fishman 1978] Fishman, G. S. Grouping observations in digital simulation. Management Science. vol. 24. pp: 510-521. 1978
[Fishman y Yarberry 1994] Fishman, G. S., Yarberry, L. S. An implementation of
the batch means method. Technical report UNC/OR/TR-93/1. Department of
Operations Research. University of North Carolina al Chapel Hill. 1994
224
Bibliografía
[Fishman 2001] Fishman, G. S. Discrete-event simulation. Ed. Springer-Verlag. New
York. 2001
[Fox et al. 1991] Fox, B. L., Goldsman, D., Swain, J. J. Spaced batch means. Operations Research. vol. 10. pp: 255-263. 1991
[Fujimoto 1989] Fujimoto, R. M. Performance measurements of distributed simulation strategies. Transactions of the SCS. 6, 2, pp:89-132. April 1989
[Fujimoto 1990] Fujimoto, R. M. Parallel discrete event simulation. Communications
of the ACM. vol. 33. n. 10, pp:30-53. October 1990
[Fujimoto 1993] Fujimoto, R. M. Parallel discrete event simulation: Will the field
survive? ORSA Journal of Computing. 5,3 pp: 213-230. 1993
[Fujimoto 2000] Fujimoto, R. M. Parallel and distributed simulation systems. John
Wiley. 2000
[Gafarian et al. 1978] Gafarian, A. V., Anker, C. J. Jr., Morisaku, F. Evaluation of
commonly used rules for detecting “steady-state” in computer simulation.
Naval Research Logistics Quaterly. vol. 25 pp: 511-529. 1978
[Gafni 1988] Gafni, A. Roll-back mechanisms for optimistic distributed simulation.
Proceedings of the SCS Muticonference on Distributed Simulation. 19,3 pp:
61-67. July 1968
[Gallagher et al. 1996] Gallagher, M. A., Bauer, K. W. Jr., Maybeck, P. S. Initial
data truncation for univariate output of discrete-event simulations using the
kalman filter. Management Science. vol. 42 pp: 559-575. 1996
[Geist et al. 1994] Geist, A., Beguelin, A., Dongarra, J., Jiang, W., Manchek, R.,
Sunderam, V. PVM3 user's guide and reference manual, Technical Report
ORNL/TM-12187, Oak Ridge National Laboratory, May 1994
[Ghosh et al. 1994] Ghosh, K., Panesar, K., Fujimoto, R. M., Schwan, K. PORTS: A
parallel, optimistic, real-time simulator. Proceedings of the 8th Workshop on
Parallel and Distributed Simulation. pp: 24-31. 1994
[Glynn 1987] Glynn, P.W. Limit theorems for the method of replication. Communications Statist. Stochastic Models. vol. 3 pp: 343-355. 1987
[Glynn y Heidelberger 1991] Glynn, P. W., Heidelberger, P. Analysis of parallel
replicated simulations under a completion time constraint. ACM Transactions on Modelling and Computer Simulation. vol. 1 n. 1 pp: 3-23. January
1991
[Glynn y Heidelberger 1992] Glynn, P. W., Heidelberger, P. Analysis of initial transient eletion for parallel steady-steate simulations. SIAM Journal Sci. Stat.
Comput. vol. 13 n. 4 pp: 904-922. July 1992
[Glynn y Heidelberger 1992b] Glynn, P. W., Heidelberger, P. Experiments with initial transient deletion for parallel replicated steady-state simulations. Management Science. 38. pp: 400-418. 1992
[Glynn y Whitt 1992] Glynn, P. W., Whitt, W. The asymptotic efficiency of simulation estimators. Operations Research. vol. 40 n. 3 pp: 505-520. May-June
1992
[Glynn e Iglehart 1993] Glynn, P. W. Iglehart, D. L. Conditions for the applicability
of regenerative method. Management Science. vol. 39 pp: 1108-1111. 1993
Bibliografía
225
[Glynn 1995] Glynn, P. W. Some new results on the initial transient problem. Proceedings of the 1995 Winter Simulation Conference. pp:165-170. 1995
[Goldsman et al. 1990] Goldsman, D., Meketon, M., Schruben, L. Properties of standardized time series wighted area variance estimators. Management Science.
vol. 36 n. 5 pp: 602-612. 1990
[Goldsman y Schruben 1990] Goldsman, D., Schruben, L. New confidence interval
estimators using standardized time series. Management Science. vol. 36 n. 3
pp: 393-397. 1990
[Goldsman y Kang 1991] Goldsman, D., Kang, K. Cramer-von Mises variance estimators for simulations. Proceedings of the 1991 Winter Simulation Conference. pp: 916-920. 1991
[Goldsman et al. 1994] Goldsman, D., Schruben, L., Swain J. J. Tests for transient
means in simulated time series. Naval Research Logistics. vol. 41, pp: 171187. 1994
[Goldsman y Tokol 2000] Goldsman, D., Tokol, G. Output analysis procedures for
computer simulations. Proceedings of the 2000 Winter Simulation Conference. pp: 39-45. 2000
[GTU 1994] CPSim 1.0. User’s guide and reference manual. Arlington. June 1994.
[Hammersley y Morton 1956] Hammersley, J. M. y Morton, K. W. A new Monte
Carlo technique: antithetic variables. Proc. Camb. Phil. Soc. vol 52, pp:
449-475. 1956
[Heidelberger y Welch 1981] Heidelberger, P., Welch, P. D. Adaptative spectral
methods for simulation output analysis. IBM J. res. development. vol. 25
pp: 860-876. 1981
[Heidelberger y Welch 1981b] Heidelberger, P., Welch, P. D. A spectral method for
confidence interval generation and run length control in simulations. Communications of the ACM. vol. 24 pp:233-245. 1981
[Heidelberger y Welch 1983] Heidelberger, P., Welch, P. D. Simulation run length
control in the presence of an initial transient. Operations Research. vol. 31
pp: 1109-1144. 1983
[Heidelberger 1983] Heidelberger, P. Statistical analysis of parallel simulations. Proceedings of the 1986 Winter Simulation Conference. pp: 290-295. 1983
[Heidelberger 1988] Heidelberger, P. Discrete event simulations and parallel processing: Statistical properties. SIAM J. Sci. Stat. Comput. 9 pp: 1114-1132.
1988
[Howard et al. 1992] Howard, R. B., Gallagher, M. A., Bauer Jr., K. W., Maybeck, P.
S. Confidence intervals for univariate discrete-event simulation output using
the Kalman filter. Proceedings of the 1992 Winter Simulation Conference.
pp:586-593. 1992
[Iglehart y Lewis 1979] Iglehart, D. L., Lewis, P. A. Regenerative simulation with
internals controls. Journal of the ACM. vol 26 n. 2 pp: 271-282. April 1979
[Jain 1991] Jain, R. The art of computer systems performance analysis. techniques
for experimental design, measurement, simulation and modeling. John
Wiley & Sons, Inc. 1991
226
Bibliografía
[Jefferson 1985] Jefferson, D. R. Virtual time. ACM Transactions on Programming
Languages and Systems. 7,3 pp: 404-425. July 1985
[Katsaros y Lazos 2000] Katsaros, P., Lazos, L. Regenerative queuing network distributed simulation. Proceedings of the European Simulation Multiconference. pp: 108-113. 2000
[Kelton y Law 1983] Kelton W. D., Law, A. M. A new approach for dealing with the
startup problem in discrete event simulation. Naval Research Logistics
Quaterly. vol. 30, pp: 641-658. 1983
[Kelton y Law 1985] Kelton, W. D., Law, A. M. The transient behaviour of the
M/M/s queue with implications for steady-state simulation. Operations Reseach. 33 pp: 378-396. 1985
[Kelton 1985] Kelton, W. D. Transient exponential-Erlang queues and steady-state
simulation. Communications of the ACM. vol. 28 n. 7 pp: 741-749. July
1985
[Kelton 1986] Kelton W. D. Replication splitting and variance for simulating discrete-parameter stochastic processes. Operations Research Letters. vol. 4.
pp: 275-279. 1986
[Kelton 1989] Kelton, W. D. Random initialization methods in simulation. IEEE
Transactions. vol. 21 pp: 355-367. 1989
[Knop et al. 1994] Knop, F., Rego, V., Sunderam, V., Ferrari, A. Failure resilient
computation in the EcliPSe system. Proceedings of the International Conference on Parallel Processing. 1994
[Knop et al. 1994b] Knop, F. Mascarenhas, E., Rego, V., Sunderam, V. S. An introduction to fault tolerant parallel simulation with EcliPSe. Proceedings of the
1994 Winter Simulation Conference. pp: 700-707. 1994
[Knop et al. 1995] Knop, F., Mascarenhas, E., Rego, V. Concurrent and fail-safe
replicated simulations on heterogeneous networks: An introduction to
EcliPSe. Simulation Practice and Theory. 3 pp: 121-146. 1995
[Knop et al. 1996] Knop, F., Mascarenhas, E., Rego, V. A parallel GPSS based on
ParaSol simulation system. Proceedings of the 1996 Winter Simulation
Conference. pp: 801-808. 1996
[Knuth 1997] Knuth D. E. The Art of Computer Programming, Volume 2: Seminumerical Algorithms. Third ed. Reading Mass.: Addison-Wesley. 1997
[Kolawa 1991] Kolawa, A. The Express programming environment. Workshop on
Heterogeneous Network-Based Concurrent Computing. Tallahassee, October 1991
[Krishnamurthi et al 1985] Krishnamurthi, M., Chandrasekaran, U., Sheppard, S.
Two approaches to the implementationof a distributed simulation system.
Proceedings of the 1985 Winter Simulation Conference. pp: 435-443. 1985
[Lazowska et al. 1984] Lazowska, E. D., Zahorjan, J., Graham, G. S., Sevcik, K. C.
Quantitative System Performance. Computer System Analysis Using
Queueing Networks Models. Prentice-Hall. 1984.
Bibliografía
227
[Law 1977] Law, A. M. Confidence Intervals in Discrete Event Simulation: a Comparison of Replication and Batch means. Naval Research Logistics Quaterly. vol. 24, pp: 667-678, 1977
[Law 1983] Law, A. M. Statistical analysis of simulation output data. Operations
Research. vol. 31, num. 6, pp: 983-1029, 1983
[Law y Carson 1979] Law, A. M., Carson, J. S. A sequential procedure for determining the length of steady-state simulation. Operations Research. vol. 27.
pp: 1011-1025. 1979
[Law y Kelton 1984] Law, A. M., Kelton, W. D. Confidence intervals for steadystate simulations: I. A survey of fixed sample size procedures. Operations
Research. vol. 32 n. 6 pp:1221-1239. December 1984
[Law y Kelton 2000] Law A. M., Kelton W. D. Simulation Modeling and Analysis.
Ed. McGraw-Hill. 2000
[Lawrence y Lewis 1981] Lawrence, A. J., Lewis, P. A. W. A new autorregressive
timeseries model in exponential random variables (NEAR(1)). Adv. Appl.
Probab. 13, 826-845. 1981
[L'Ecuyer 1990] L'Ecuyer, P. Random numbers for simulation. Communications of
the ACM. vol. 33 n. 10. pp: 85-97 October 1990
[L'Ecuyer y Hellekalek 1998] L'Ecuyer, P. and Hellekalek, P. Random number generators: Selection criteria and testing. Random and Quasi-Random Point
Sets. Lecture Notes in Statistics. vol. 138, pp; 223-265. New York, Springer.
1998
[L'Ecuyer 1999] L'Ecuyer, P. Some recomendable uniform random number generators. Proceedings of the 13th European Simulation Multiconference. vol. 2
pp: 185-190. May 1999.
[Lee et al. 1998] Lee, J., McNickle, D., Pawlikowski, K. A survey of confidence interval formulae for coverage analysis. Technical report TR-COSC 04/98.
Department of Computer Science. University of Canterbury. Christchurch.
New Zealand. 1998
[Lee 1999] Sequential regenerative simulation. Technical report TR-COSC 02/99.
Department of Computer Science. University of Canterbury. Christchurch.
New Zealand. May 1999
[Lencse 1998] Lencse, G. Efficient parallel simulation with the statistical synchronization method. Western Multiconference. Communications and Distributed
Systems (CNDS’98). 1998
[Lin 1994] Lin, Y-B. Parallel independent replicated simulation on a network of
workstations. Proceedings of the 8th Workshop on Parallel and Distributed
Simulation (PADS'94). vol. 24 n. 1. pp: 73-80. July 1994
[Lin y Fishwick 1996] Lin, Y-B., Fishwick, P. A. Asynchronous parallel discrete
event simulation. IEEE Transactions on Systems, Man and Cybernetics. vol.
26 n. 4. pp: 397-412. 1996
[Liu y Tropper 1990] Liu, L. Z., Tropper, C. Local deadlock detection in distributed
simulation. Proceedings of the SCS Multiconference on Distributed Simulation. 22,1 pp:64-69. January 1990
228
Bibliografía
[Lomow et al. 1988] Lomow, G., Cleary, J., Unger, B., West, D. A performance
study of time warp. Proceedings of the SCS Muticonference on Distributed
Simulation. 19,3 pp: 50-55. July 1988
[Loucks y Preiss 1990] Loucks, W.M., Preiss, B. R. The role of knowledge in distributed simulation. Proceedings of the SCS Multiconference on Distributed
Simulation. 22,1 pp: 9-16. January 1990
[Low et al. 1999] Low, Y-H., Lim, Ch., Cai, W., Huang, S-Y., Hsu, W-J., Jain, S.,
Turner, S. Survey of languages and runtime libraries for parallel discreteevent simulation. Simulation. 72, 3 pp: 170-189. 1999
[Lubachevsky 1989] Lubachevsky, B. D. Efficient distributed event-driven simulations of multiple-loop networks. Communications of the ACM. vol 32. n.1
pp: 111-123. 1989
[Lubachevsky 1989b] Lubachevsky, B. D. Scalability of the bounded lag distributed
discrete-event simulation. Proceedings of the SCS Multiconference on Distributed Simulation. 21, 2 pp: 100-107. March 1989
[Lubachevsky et al. 1989] Lubachevsky, B. D., Shwartz, A., Weiss, A. Roll-back
sometimes work ... if filtered. Proceedings of 1989 Winter Simulation Conference. pp: 630-639. Decembre 1989
[MacDougall 1987] MacDougall, M. H. Simulating Computer Systems. The MIT
Press, Cambridge, Massachusetts. 1987
[Madisetti et al. 1988] Madisetti, V., Walrand, J., Messerschmitt, D. Wolf: a rollback algorithm for optimistic distributed simulation systems. Proceedings of
1988 Winter Simulation Conference. pp: 296-305. December 1988
[Mascarenhas et al. 1995] Mascarenhas, E., Knop, F., Rego, V. ParaSol: A multithreaded system for parallel simulation based on mobile threads. Proceedings of the 1995 Winter Simulation Conference. pp: 690-697. 1995
[Mattson et al. 1992] Mattson, T., Bjornson, B., Kaminsky, D. The C-Linda Language for Networks of Workstations. Proceedings of the Workshop on
Cluster Computing. 1992
[McGeoch 1992] McGeoch, C. Analyzing algorithms by simulation: Variance reduction techniques and simulation speedups. ACM Computing Surveys. vol.
24 n. 2 June 1992
[McNickle et al. 1996] McNickle, D. C., Pawlikowski, K., Ewing, G. Experimental
evaluation of confidence interval procedures in sequential steady-state
simulation. Proceedings of the 1996 Winter Simulation Conference. pp:
382-389. 1996
[Meketon y Schmeiser 1984] Meketon, M., Schmeiser, B. Overlapping batch means:
something for nothing. Proceedings of the Winter Simulation Conference.
pp: 227-230. 1984
[Merrifield et al. 1990] Merrifield, B. C., Richardson, S. B., Roberts, J. B. G. Quantitative studies of discrete event simulation modelling of road traffic. Proceedings of the SCS Multiconference on Distributed Simulation. 22,1 pp:
188-193. January 1990
Bibliografía
229
[Miller 1999] Miller, N. Improved batching for confidence construction in steadystate simulation. Ph.D. Thesis. North Carolina State University. 1999
[Misra 1986] Misra, J. Distributed discrete-event simulation. ACM Computer Surveys. 18,1 pp: 39-65. March 1986
[Molero et al. 2000] Molero, X., Silla, F., Santonja, V., Duato, J. Modeling and
simulation of storage area networks. Proceedings of the 8th International
Symposium on Modelling Analysis and Simulation of Computer and Telecommunications Systems. IEEE Society Press. August 2000.
[Mota et al. 1998] Mota, E., Wolisz, A., Pawlikowski, K. Experinece with
AKAROA: Speeding up stochastic simulation using parallel replications.
Proceedings of the High-Performance Computing. pp: 296-301. 1998
[Mota et al 2000] Mota, E., Fitzek, F., Wolisz, A. Towards credible and efficient
network simulation experiments. Proceedings of High-Performance Computing. pp: 116-121. 2000
[Mota et al 2000b] Mota, E., Wolisz, A., Pawlikowski, K. Comparing overlaping
batch means and standardized time series under multiple replications in parallel. Proceedings of the 12th European Simulation Multiconference. pp: 4348 2000
[Mota et al 2000c] Mota, E., Wolisz, A., Pawlikowski, K. A perspective of batching
methods in a simulation environment of multiple replications in parallel.
Proceedings of the 2000 Winter Simulation Conference. pp: 761-766. 2000
[MPI 1994] MPI: A Message-Passing Interface Standard. University of Tennessee,
Knoxville, May 1994
[Murray y Kelton 1988] Murray, J., Kelton, W. D. Initializing for bias reduction:
some analytical considerations. Proceedings of the 1988 Winter Simulation
Conference. pp: 546-548. 1988
[Nakayama 1994] Nakayama, M. K. Two-stage stopping procedures based on standardized time series. Management Science 40, pp: 1189-1206. 1994
[Nakayama 1996] Nakayama, M. K. Multiple comparisons with the best using common random numbers for stead-state simulations. Proceedings Second St.
Petersburg Workshop on Mathematical Methods in Stochastic Simulation
and Experimental Design. pp: 230-235. 1996
[Nicol y Reynolds 1984] Nicol, D. M., Reynolds, P. F. Jr., Problem oriented protocol
design. Proceedings of 1984 Winter Simulation Conference. pp: 471-474.
December 1984
[Nicol 1989] Nicol, D. M. The cost of conservative synchronization in parallel discrete-event simulations. Tech. rep.90-20 ICASE. June 1989
[Nicol 1991] Nicol, D. M. Performance bounds on parallel self-initiating discreteevent simulations. ACM Transactions on Modelling and Computer Simulation. vol. 1 n. 1 pp: 24-50. 1991
[Nicol y Fujimoto 1994] Nicol, D., Fujimoto, R. Parallel simulation today. Annals of
Operations Research. 53 pp: 249-286 1994
[Nicol 1995] Nicol, D. M. Noncommital barrier syncronization. Parallel computing.
21 pp: 529-549. 1995
230
Bibliografía
[Nicol y Heidelberger 1996] Nicol, D., Heidelberger, P. Parallel execution for serial
simulators. ACM Transactions on Modelling and Computer Simulation. vol.
6 n. 3 pp: 210-242. 1996
[Ockerman y Goldsman 1997] Ockerman, D. H., Goldsman, D. The impact of transients on simulation variance estimators. Proceedings of the 1997 Winter
Simulation Conference. pp: 234-239. 1997
[Otero y Ferri 2002] Otero, G., Ferri, R. The Beowulf evolution. Linux Journal. pp:
108-113. August 2002
[Owicki y Karlin 1992] Owicki, S. S., Karlin, A. R. Factors in the performance of the
AN1 computer network. Digital SRC research report 88. June 1992
[Pawlikowski 1990] Pawlikowski, K. Steady-state simulation of queueing processes:
A survey of problems and solutions. ACM computing surveys. vol. 22 n. 2
pp: 123-170. 1990
[Pawlikowski et al. 1994] Pawlikowski, K., Yau, V., McNickle, D. Distributed stochastic discrete-event simulation in parallel time streams. Proceedings of
the 1994 Winter Simulation Conference. pp: 723-730. 1994
[Perles 1994] Perles, A., Serrano, J. Evaluación y análisis de PVM 3. Aprovechamiento para la simulación discreta por el método de réplicas. Proyecto
fin de carrera. Diciembre 1994
[Perles 1997] Perles, A. Simulación paralela y distribuida. Métodos de análisis
estadístico de la salida. Trabajo de doctorado de dos créditos. Departamento
DISCA. Universidad Politécnica de Valencia. 1997
[Perles 1998] Perles, A. Simulación paralela y distribuida. El entorno CSX: aprovechamiento de clusters de máquinas heterogéneas para acelerar simulaciones discretas. Trabajo de doctorado de seis créditos. Departamento DISCA.
Universidad Politécnica de Valencia. 1998
[Perles et. al. 1999] Perles, A., Martí, A., Serrano, J.J. Clustered simulation experimenter: A tool for concurrent simulation execution on loosely coupled
workstations. Proceedings 13th European Simulation Multiconference. Society for Computer Simulation International. pp: 207-214. 1999
[Perles et. al. 1999] Perles, A., Martí, A., Serrano, J.J. Reparto de experimentos de
simulacion en redes hetereógeneas de estaciones de trabajo. Actas del Simposio Español de Informática Distribuida. pp: 213-219. 1999
[Perles et. al. 2000] Perles, A., Molero, X., Martí, A., Santonja, V., Serrano, J.J., Improving the simulation of Storage Area Networks (SAN) using concurrent
execution. Proceedings 12th European Simulation Symposium. Society for
Computer Simulation International. pp: 149-153. 2000
[Perles et. al. 2000b] Perles, A., Molero, X., Martí, A., Santonja, V., Serrano, J.J.
Simulación concurrente de redes de almacenamiento de altas prestaciones
(SAN, Storage Area Networks). Actas del Simposio Español de Informática
Distribuida (SEID’2000). pp: 483-493. 2000
[Perles et. al. 2002] Perles, A., Molero, X., Martí, A., Santonja, V., Serrano, J.J., Improving the execution of groups of simulations on a cluster o workstations
Bibliografía
231
and its application to storage area networks. Proceedings of the 34th Annual
Simulation Symposium. IEEE Computer Society. pp: 227-234. 2002
[Perles et al. 2002b] Perles, A., Molero, X., Martí, A., Serrano, J.J. Analysis of coverage and performance of the variable sized replications simulation method
in parallel. Proceedings of the16th European Simulation Multiconference.
pp: 219-223. 2002
[Perles et. al. 2003] Perles, A., Molero, X., Martí, A., Serrano, J.J. Analysis of new
proposals for parallel replication based discrete-event simulation. Proceedings 2003 Industrial Simulation Conference. EUROSIS. pp: 103-110. 2003
[Pollatscheck 1995] Pollatscheck, M.A. Programming Discrete Simulations. R&D
Books, 1995
[Preiss 1989] Preiss, B. R. The Yaddes distributed discrete event simulation specification language and execution environments. SCS Distributed simulation.
vol. 21 1989
[Pruyne et al. 1998] Pruyne, J., Livny, M. Managing Checkpoints for Parallel Programs, Dpt. of Computer Sciences. University of Wisconsin-Madison. 1998
[QNAP 1994] QNAP2 User’s Guide. Simulog, Jan 1994
[Raatikainen 1992] Raatikainen, K. Run length control using parallel spectral methods. Proceedings of the 1992 Winter Simulation Conference. pp: 594-602
December 1992.
[Raatikainen 1994] Raatikainen, K. E. Experimental evaluation of a parallel spectral
method for run length control in steady-state simulation. Report C-1994-4.
University of Helsinki. November 1994
[Reese 1985] Reese, R.M. A software development environment for distributed
simulation. Proceedings SCS Distributed Simulation Conference. pp: 37-40.
1985
[Rego y Sunderam 1992] Rego, V. J., Sunderam, V. S. Experiments in concurrent
stochastic simulation: The EcliPSe paradigm. Journal of Parallel and Distributed Computing. 14-1. pp: 66-84. 1992
[Reynolds 1988] Reynolds, P. A spectrum of options for parallel simulation. Proceedings of the 1988 Winter Simulation Conference. pp: 325-332. December
1988
[Rich y Michelsen 1991] An assessment of ModSim/TWOS parallel simulation environment. Proceedings of the 1991 Winter Simulation Conference. pp: 509518. 1991
[Righter y Walrand 1989] Righter, R., Walrand, J. C. Distributed simulation of discrete event systems. Proceedings of the IEEE 77,1 pp: 99-113. January 1989
[Rios et al. 1997] Ríos D., Ríos S., Martín J. Simulación. Métodos y aplicaciones.
Ed. Ra-Ma. 1997
[Sauer 1979] Sauer, S. H. Confidence intervals for queueing simulations of computer
systems. ACM Performance Evaluation Review. vol. 8 pp: 46-55. 1979
[Schmeiser 1982] Schmeiser, B. Batch size effects in the analysis of simulation output. Operations Research. vol. 30, pp: 569-590. 1982
232
Bibliografía
[Schruben 1982] Schruben, L. W. Detecting initialization bias in simulation output.
Operations Research. vol. 30 pp: 569-590. 1982
[Schruben 1983] Schruben, L. Confidence interval estimation using standardized
time series. Operations Research. vol. 31 pp: 1090-1108. 1983
[Schruben et al. 1983] Scruben, L. W., Singh, H., Tierney, L. Optimal tests for initialization bias in simulation output. Operations Research. vol. 31 pp: 11671178. 1983
[Shanker et al. 2000] Shanker, M. S., Padman, R., M. S., Kelton, W. D. Efficient
distributed simulation through dynamic load balancing. IEEE Transactions.
33 (Operations Engineering), special simulation issue. 2000.
[Sheppard et al 1988] Sheppard, S. V., Davis, C. K., Chandra, U. Parallel simulation
environments for multiprocessor architectures. Proceedings of the SCS
Multiconference on Distributed Simulation. pp: 109-114. July 1988
[Sherman 1990] Sherman, A.H. C-Linda Reference Manual. Scientific Computing
Associates,Inc. 1990
[Snell y Schruben 1985] Snell, M., Schruben, L. Weighting simulation data to reduce
initialization effects. IEEE Transactions. vol. 17, pp:254-363. 1985
[Sokol et al. 1988] Sokol, L. M., Briscoe, D. P., Wieland, A. P. MTW: a strategie for
scheduling discrete simulation events for concurrent execution. Proceedings
of the SCS Multiconference on Distributed Simulation. 19, 3 pp: 34-42. July
1988
[Sokol y Stucky 1990] Sokol, L. M., Stucky, B. K. MTW: experimental results for a
constrained optimistic scheduling paradigm. Proceedings of the SCS Multiconference on Distributed Simulation. 22, 1 pp: 169-173. 1990
[Song 1997] Song, J., Choo, H. K. Aplication-level load migration and its implementation on top of PVM. Concurrency - Practice and Experience. 9(1): pp:
1-19. 1997
[Sostaric et al. 1998] Sostaric, A., Gabor, M., Gygi, A. MTool: Performance Monitoring for Multiplatform Systems. Linux Journal. June 1998
[Steinman 1992] Steinman, J. S. SPEEDES: A unified approach to parallel simulation. Proceedings of the 1992 Workshop on Parallel and Distributed Simulation. pp: 75-83. 1992
[Su y Seitz 1989] Su, W. K., Seitz, C. L., Variants of the Chandy-Misra-Brayant distributed discrete-event simulation algorithm.
http://resolver.caltech.edu/CaltechCSTR:1988.cs-tr-88-22 1989
[Teo et al. 1996] Teo, Y. M., Tay, S. C., Kong, S. T. SPaDES: An environment for
structured parallel simulation. Technical report TR20/96. Department of Information Systems and Control and Computer Science. National University
of Singapore. 1996
[Tokol et al. 1997] Tokol, G., Goldsman, D., Ockerman, D. H., Swain, J. J. Standardized time series Lp-norm variance estimators for simulations. Management Science. 44, pp: 234-245. 1997
[Trotter y Tukey 1956] Trotter, H. Y., Tukey, J. Conditional Monte Carlo for normal
samples. Symposium on Monte Carlo Methods. Wiley. pp: 64-79. 1956
Bibliografía
233
[Tuffin 1997] Tuffin, B. Variance reduction applied to product-form multiclass
queuing networks. ACM Transactions on Modelling and Computer Simulation. vol. 7 n. 4 pp: 478-500. October 1997
[Turcotte 1993] Turcotte, L. A Survey of Software Environments for Exploiting Networked Computing Resources, Draft Report, Engineering Research Center
for Computational Field Simulations. Mississippi State, January 1993
[Vassilacopoulos 1989] Vassilacopoulos, G. Testing for initialization bias in simulation output. Simulation. vol. 52 pp: 151-153. 1989
[Wagner y Lazowska 1989] Wagner, D. B., Lazowska, E. D. Parallel simulation of
queueing networks: Limitations and potentials. Proceedings of the 1989
ACM SIGMETRICS and PERFORMANCE’89. 17,1 pp: 146-155. May 1989
[Welch 1983] Welch, P. D. The Statistical Analysis of Simulation Results. Computer
Performance Handbook. Academic Press. New York. pp: 268-328. 1983
[West 1988] West, D. Optimizing time warp: lazy roll-back and lazy reevaluation.
MS thesis University of Calgary. January 1988
[Wilson et al 1996] Wilson, L., Nicol, D. Experiments in Automated Load Balancing, Proceedings 10 Workshop on Parallel and Distributed Simulation
(PADS’96). May 1996
[Wonnacott y Bruce 1995] Wonnacott, P., Bruce, D. A prototype implementation of
APOSTLE, and its performance. Proceedings of the 1995 Summer Simulation Conference. 1995
[Yau 1999] Yau, V. Automating parallel simulation using parallel time streams.
ACM Transactions on Modeling and Computer Simulation. vol. 9. n. 2. pp:
171-201. April 1999
[Yau y Pawlikowski 2000] Yau, V., Pawlikowski, K. A parallel simulation methodology for speed-up and obtaining performance estimates with specific accuracy: Experiences of its application in studies of metropolitan area networks.
Simulation 75:4 pp: 221-224. October 2000
[Yuan y Nelson 1994] Yuan, M., Nelson, B. L. Autorregresive-output-analysis
method revisited. Annals of Operations Research. vol. 53. pp: 391-418.
1994
[Zarei 2000] Zarei, B. A taxonomic review of parallel discrete event simulation. Proceedings of the 12th European Simulation Symposium. pp: 61-76. September 2000
Descargar