460 likes | 601 Views
Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux. Máster en Computación Director de TFM: José María Drake Moyano José María Martínez Lanza. Tabla de contenidos. Introducción Herramienta RTLinuxNodeModelEstimator Módulo TimeMntr
E N D
Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux Máster en Computación Director de TFM: José María Drake Moyano José María Martínez Lanza
Tabla de contenidos • Introducción • Herramienta RTLinuxNodeModelEstimator • Módulo TimeMntr • Herramienta RTCode4TimeMntr • Aplicación BURTA • Conclusiones y trabajo futuro
Tabla de contenidos • Introducción • Aplicaciones RT-Java • Objetivos • Patrones de diseño de aplicaciones de tiempo real • Estructura de modelos de planificabilidad • Herramienta RTLinuxNodeModelEstimator • Módulo TimeMntr • Herramienta RTCode4TimeMntr • Aplicación BURTA • Conclusiones y trabajo futuro
Aplicaciones RT-Java • Industria y JAVA • Especificación RTSJ • Aplicaciones en RT-Java
Java project Test Java project Instrumentation code generator Annotated Java code class Instrumented Java class Instrumentation Executes Executes Application configuration data Emulated environment MAST Tool box Application real-time model Schedulability analysis Embedded processor Objetivos • Herramienta para la evaluación del modelo de plataforma. • Herramienta para la evaluación del modelo lógico y reactivo de aplicación RT-Java.
obj.lock PClass.lock «active» «active» «active» «protected» obj:ProtectedClass client2 client1 client3 «synchronized» oper1() used «synchronized» oper2() «synchronized» oper1() free blocked «staticSynchronized» staticOper() Patrones de diseño de TR • Patrón Protected
deadline rt-thread timer Patrones de diseño de TR act_2 act_3 act_1 Periodic activation mutex Other rt-responses • Respuesta periódica con requisito temporal final
Patrones de diseño de TR • Respuesta periódica con requisito temporal final
deadline rt-thread enviroment Patrones de diseño de TR act_2 act_3 act_1 Event occurrency mutex Other rt-responses • Respuesta a un evento del entorno con requisito temporal final
«rtTaskJob» «eventHandler» Environment Handler Task «entry»awaitEvent() «postWaiting»initHandling() event «executorTask»task() return «entry»awaitEvent() awaiting Patrones de diseño de TR • Respuesta a un evento del entorno con requisito temporal final
rt-thread1 deadline2 deadline1 rt-thread2 enviroment act_2 act_3 act_1 Event occurrency mutex2 Other rt-responses rt-thread1 deadline1 rt-thread2 deadline2 timer act_2 act_3 act_1 Periodic activation Other rt-responses mutex2 Patrones de diseño de TR mutex1 mutex1 • Respuestas con requisitos temporales intermedios
obj.lock «active» «active» «active» «protected» obj:Synchr Client1 server Client2 «entry» await() «trigger»active() used blocked «postWaiting»process() free «synchronized» oper2() «trigger»change() Patrones de diseño de TR • Respuestas con requisitos temporales intermedios
rt-thread fBoundedJitter sBoundedJitter sPriority bPriority fPriority timer act_2 act_3 act_1 Periodic activation offset mutex Other rt-responses Patrones de diseño de TR • Respuesta con jitter acotado de entrada y salida
Patrones de diseño de TR • Respuesta con jitter acotado de entrada y salida
deadline rt-thread timer act_2 act_3 act_1 Periodic activation waitFreeMutex No real-time subsystem Patrones de diseño de TR • Respuesta que se comunica con un sistema de no tiempo real
Patrones de diseño de TR obj.lock «active» «active» «waitFreeProtected» obj:Bridge RTClient NRTClient «waitFreeSynchronized» freeWaitPut() • Respuesta que se comunica con un sistema de no tiempo real used return «synchronized»blockingGet() return «waitFreeSynchronized» freeWaitGet() «synchronized»blockingPut() free blocked «waitFreeSynchronized» freeWaitPut() no blocking return return
Modelo plataforma Modelo lógico Modelo reactivo Modelos de planificabilidad • Modelo de plataforma: • RTSJ en Linux: Planificador y relojes. • Modelo lógico: • Elementos de modelado. • Modelo reactivo: • Respuestas
Tabla de contenidos • Introducción • Herramienta RTLinuxNodeModelEstimator • Parámetros de plataforma y estrategia de medida • Programa de medida • Módulo TimeMntr • Herramienta RTCode4TimeMntr • Aplicación BURTA • Conclusiones y trabajo futuro
Parámetros y estrategia • Rango de prioridades • Cambios de contexto entre threads • Uso de CPU del no-rt timer • Resolución del rt timer
Parámetros y estrategia • Rango de prioridades • Cambios de contexto entre threads • Uso de CPU del no-rt timer • Resolución del rt timer
suspension clock activation Texec Tsusp hThread Tsusp lThread Context switch Timed context switch Parámetros y estrategia • Rango de prioridades • Cambios de contexto entre threads • Suspensión temporal • Uso de CPU del no-rt timer • Resolución del rt timer
wait() Texec hThread notify() lThread Tsusp Context switch Context switch time Parámetros y estrategia • Rango de prioridades • Cambios de contexto entre threads • Suspensión en un objeto protegido • Uso de CPU del no-rt timer • Resolución del rt timer
hThread hThread.priority lThread.priority lThread Context switch Context switch time Parámetros y estrategia • Rango de prioridades • Cambios de contexto entre threads • Cambio cruzado de prioridad • Uso de CPU del no-rt timer • Resolución del rt timer
hThread locked lThread locked lock unlock lock lock lock unlock unlock unlock highPrty lowPrty hThread lThread Context switch Context switch time Parámetros y estrategia • Rango de prioridades • Cambios de contexto entre threads • Suspensión en un mutex • Uso de CPU del no-rt timer • Resolución del rt timer
primer ms 1) 2) 1 ms 3) t1 t2 t3 t5 t4 Parámetros y estrategia • Rango de prioridades • Cambios de contexto entre threads • Uso de CPU del no-rt timer • Resolución del rt timer
Parámetros y estrategia • Rango de prioridades • Cambios de contexto entre threads • Uso de CPU del no-rt timer • Resolución del rt timer
Programa de medida • Estructura del programa • Modelo MAST2 • Informe de texto
Programa de medida • Estructura del programa • Modelo MAST2 • Informe de texto
Programa de medida • Estructura del programa • Modelo MAST2 • Informe de texto
Tabla de contenidos • Introducción • Herramienta RTLinuxNodeModelEstimator • Módulo TimeMntr • Estrategia de herramienta y definición de anotaciones • Programa de medida • Herramienta RTCode4TimeMntr • Aplicación BURTA • Conclusiones y trabajo futuro
Estrategia y anotaciones • Invocaciones durante los ciclos de ejecución • Anotaciones estilo JAVADOC y a partir de los estereotipos de los patrones: • (/* *@OORT_.... */)
TimeMntr protectedOper thread mutex * * * mutex ThreadMntr trigger ProtectedOperMntr MutexMntr 1 name:String 0..1 entry name:String wcet:double acet:double bcet:double type:ProtectedOperType jidSet:set(long) name:String jid:long wcet:double acet:double bcet:double priority:int operList:list(ProtectedOperMntr) isSegment:boolean entry 0..1 0..1 «enum» ProtectedOperType callEntry 0..1 SYNCHRONIZED TRIGGER ENTRY SYNCHRONIZER_ENTRY POSTWAITING STATIC_SYNCHRONIZED STATIC_TRIGGER STATIC_ENTRY STATIC_SYNCHRONIZER_ENTRY STATIC_POSTWAITING nextSegment 0..1 Atributo en cursiva es generado por el algoritmo de creación del modelo Programa de medida • Clase principal y listas de elementos
Tabla de contenidos • Introducción • Herramienta RTLinuxNodeModelEstimator • Módulo TimeMntr • Herramienta RTCode4TimeMntr • Instrumentación del código de la aplicación de tiempo real • Estrategias de herramienta • Aplicación BURTA • Conclusiones y trabajo futuro
Instrumentación de código • Patrones ejecutores
Instrumentación de código • Patrones protegidos
Instrumentación de código • Main
Tabla de contenidos • Introducción • Herramienta RTLinuxNodeModelEstimator • Módulo TimeMntr • Herramienta RTCode4TimeMntr • Aplicación BURTA • Especificación y diseño lógico de la aplicación • Diseño de la respuesta MetrologyUpdating • Generación del modelo de planificabilidad • Conclusiones y trabajo futuro
Real-time Susbsystem HalfMemorInterr. Waveform Metrology Processor Sampler Metrology Data Perturbation event DAQ RT-Driver Perturbograph Perturbogram Message stream Connection monitor Switch Configuration Publisher No real-time Subsystem Especificación y diseño lógico
:Perturbograph Executor :Metrology Executor [*]:Metrology Data Clock :Perturbograph [*]:Waveform :Perturbogram ms:MssgStreamer :Metrology awaitPerturbogram() For all Waveform instances :time out update() Or addPreData() or addPostdata() update() updateStatisticData() If ms.lock is free finalized() marshal() return awaitP… For all MetrologyData instances submit() submitPerturbogram() awaitPerturbogram() deadline= 0.2 s Periodic{ period 0.2 s} Diseño de MetrologyUpdating
Generación del modelo • Clase instrumentada por RTCode4TimeMntr
Generación del modelo • Modelo obtenido con TimeMntr
Generación del modelo • Modelo obtenido con TimeMntr
Tabla de contenidos • Introducción • Herramienta RTLinuxNodeModelEstimator • Módulo TimeMntr • Herramienta RTCode4TimeMntr • Aplicación BURTA • Conclusiones y trabajo futuro
Conclusiones y trabajo futuro • Resultados satisfactorios • Aplicaciones funcionales • RTNodeModelEstimator: • Tiempos de acceso a drivers de tiempo real • RTCode4TimeMntr: • Optimización del código y nuevos algoritmos • TimeMntr: • Implementación de “merge” y “fork” para threads