Cita:
M.Bertoli, G.Casale, G.Serazzi. "JMT: performance engineering tools for system modeling" ACM SIGMETRICS Performance Evaluation Review, Volume 36 Issue 4, New York, US, March 2009, 10-15, ACM press.
Link: JMT: performance engineering tools for system modeling.

Other Related work: También hay otros papers e incluso un libro basado en cursos que da Serazzi en las Universidades de Lugano y Milano.

Resumen: JSimEngine es el simulador discreto con sus interfaces graficas JSimGraph y JSimWiz. Lo malo es que no es tan flexible para definir cosas nuevas (un generador custom, por ej con la lógica del DCM, o una nueva politica, ej InsensitiveLoadBalancing), tampoco encontré como exportar los resultados por ejemplo para analizarlos en R o Scilab. Los bueno que tiene es que ya esta todo out-of-the-box con muchas opciones y es fácil de usar. Tiene cosas interesantes como el análisis de confianza de las métricas.
JMVA asdfd

Intro

JMT tiene varias subherramientas: 1) JSimwiz, JsimGraph y JSimEngine, 2) JMVA 3) JABA 4) JWAT. Todas trabajan con modelos de colas abiertos, cerrados o mixtos. 1) y 2) resuelven modelos: 1) con simulación discreta, 2) resuelve con algoritmos de MVA. 3) corre algoritmos para encontrar cuellos de botella en modelos multiclass 4) hace análisis exploratorio para generar la carga que se puede usar como parámetros en las otras herramientas.

Arquitectura

Son todas herramientas independientes (diferentes ejecutables), pero la descripcion de los modelos y la interacción entra las diferentes herramientas es a través de XML. JSimWiz y JSimGraph son las GUI, JSimEngine es el core. Uno puedo describir un modelo en JSimGraph (simulación discreta) y después importarlo en JMVA o viceversa.
¿Se puede hacer un traductor PowerDEVS -> XML -> JTM? Por ejemplo para que corra los algoritmos de MVA


JSimwiz, JSimGraph y JSimEngine

Con drag&drop (JSimGraph) o con un wizard (JSimwiz) te permite definir un modelo de colas: generadores, stations (colas+servidor), forks/joins. En cada uno se pueden definir politicas de ruteo (JSQ, Random, RoundRobin, LeastUtilized etc), Scheduling (FCFS, LCFS, ProcessorSharing), DropPolict (Drop, Block), Tiempo de Servicio (load independent distribution o load dependent con rangos). Para las distribuciones tiene todas las conocidas, 2 que modelan burstiness y una que lee de un archivo externo. Permite definir regiones con capacidades maximas de trabajos, y prioridades.
Hasta aca es un simulador discreto especifico para colas. Todo se podría hacer en PD, pero ¿para que? Por ejemplo para tener mas flexibilidad y poder programar tus generadores con lógica mas compleja.

Para analizar los resultados es un poco diferente. Por un lado, hay que decirle explicitamente que métricas quiere uno mirar. Puede ser a nivel de station o a nivel del sistema completo: queueLenght, responseTime, utilization, throughout, dropRate, etc, etc. Por otro lado, no usa un tiempo final de simulación, sino que las métricas definidas se las va pasando online a algoritmos de estimación de intervalos de confianza (spectral methods Heidelberger&Welch, con detección de la fase transitoria R5 y MSER-5). La simulación se detiene cuando se considera que todas las métricas se pueden estimar con una cierta confianza.
Suena interesante para en algun futuro agregar los intervalos de confianza a las métricas de PD. Pero no creo que sea una boludez.

Se pueden también definir escenarios "What-if" para barrer valores de un parámetros. Aunque en las pruebas que hice unicamente permite barrer los tiempos de servicio y de arribo (no cantidad de servidores, politicas, capacidad de las colas, etc). Habilitando "what-if", no encontré como ver los resultados de cada corrida en particular.

Pruebas

Armé 2 modelitos básicos que yo ya conozco: 1) El de PhaseII, 2) El que hicimos para Matt de InsensitiveLoadBalancing.

Phase II

1- Se define una clase con arrivalRate = Exp(400K)

2- La queue hace de queue+server (StorageHandler + EventFilter). Queue: inifite capacity. Service: exp(320K).

3- Al ejecutar esta simulación no termina nunca porque la cola crece indefinidamente (la metrica no se puede estimar).

Demora ~400s para simular 1s, bastante mas lento que PD (PowerDEVS demora 30s en simular 10s). Lo que me llama la atención es la regularidad con la que toma muestras: no es siempre la misma, por ejemplo en los primeros 72s tomó pocas muestras y avanza rápido, después estro los 95 y 120s tomo muchas muestras.

Simulando con menos carga exp(400) (en vez de exp(400K), simula obviamente mas rapido. Tambien se ve eso de que toma metricas con diferente regularidad (¿tal vez regular en tiempo de ejecucion en vez de tiempo de simulacion?).

InsensitiveLoadBalancing

1- Se define una clase con arrivalRate = Exp(1)

2- El router hace de Scheduler/LoadBalancing. A ese se le pueden configurar varias politicas. Las opciones son varias mas de las que habiamos pensado. Obviamente la insensitive no esta y no encontre en ninugn lado que explique como agregar una nueva

3- La Queue, es en realidad queue+server. Se le configura la capacidad de la cola (infinita o finita) y cantidad de servidores. Para el procesamiento su politica (Processor Sharing) y la distribucion del servicio (exp(1))

4- Configuro "what-if" para que cambie el service time de la queue. No se puede barrer por ejemplo la cantidad de servidores, ni capacidad maxima de la cola, ni politica de loadBalancing.

5- Esta simulación va tardar dependiendo de la configuración, especialmente cuanto le cueste estimar el drop rate. (raro, pero no encontre que pare la simualacion depues de X segun

-- MatiasAlejandroBonaventura - 2016-05-09

Edit | Attach | Watch | Print version | History: r2 < r1 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r2 - 2016-05-09 - MatiasAlejandroBonaventura
 
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    Main All webs login

This site is powered by the TWiki collaboration platform Powered by PerlCopyright &© 2008-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback