Title: Herramienta para el modelado y an
1Herramienta 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
2Tabla de contenidos
- Introducción
- Herramienta RTLinuxNodeModelEstimator
- Módulo TimeMntr
- Herramienta RTCode4TimeMntr
- Aplicación BURTA
- Conclusiones y trabajo futuro
3Tabla 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
4Aplicaciones RT-Java
- Industria y JAVA
- Especificación RTSJ
- Aplicaciones en RT-Java
5Objetivos
- 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.
6Patrones de diseño de TR
7Patrones de diseño de TR
- Respuesta periódica con requisito temporal final
8Patrones de diseño de TR
- Respuesta periódica con requisito temporal final
9Patrones de diseño de TR
- Respuesta a un evento del entorno con requisito
temporal final
10Patrones de diseño de TR
- Respuesta a un evento del entorno con requisito
temporal final
11Patrones de diseño de TR
- Respuestas con requisitos temporales intermedios
12Patrones de diseño de TR
- Respuestas con requisitos temporales intermedios
13Patrones de diseño de TR
- Respuesta con jitter acotado de entrada y salida
14Patrones de diseño de TR
- Respuesta con jitter acotado de entrada y salida
15Patrones de diseño de TR
- Respuesta que se comunica con un sistema de no
tiempo real
16Patrones de diseño de TR
- Respuesta que se comunica con un sistema de no
tiempo real
17Modelos de planificabilidad
- Modelo de plataforma
- RTSJ en Linux Planificador y relojes.
- Modelo lógico
- Elementos de modelado.
- Modelo reactivo
- Respuestas
18Tabla 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
19Parámetros y estrategia
- Rango de prioridades
- Cambios de contexto entre threads
- Uso de CPU del no-rt timer
- Resolución del rt timer
20Parámetros y estrategia
- Rango de prioridades
- Cambios de contexto entre threads
- Uso de CPU del no-rt timer
- Resolución del rt timer
21Pará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
22Pará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
23Pará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
24Pará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
25Parámetros y estrategia
- Rango de prioridades
- Cambios de contexto entre threads
- Uso de CPU del no-rt timer
- Resolución del rt timer
26Parámetros y estrategia
- Rango de prioridades
- Cambios de contexto entre threads
- Uso de CPU del no-rt timer
- Resolución del rt timer
27Programa de medida
- Estructura del programa
- Modelo MAST2
- Informe de texto
28Programa de medida
- Estructura del programa
- Modelo MAST2
- Informe de texto
ltmast_mdlMAST_MODEL Model_Name"RTLinuxNode" Model_Date"2013-04-03T230518" ..."gt ... ltmast_mdlFixed_Priority_Policy Min_Priority"11" Max_Priority"58" Worst_Context_Switch"28.96E-6" Avg_Context_Switch"9.036E-6" Best_Context_Switch"8.171E-6"/gt lt/mast_mdlPrimary_Schedulergt lt/mast_mdlMAST_MODELgt
29Programa de medida
- Estructura del programa
- Modelo MAST2
- Informe de texto
RTLinuxModelEstimator application results report Priority Range Probe Highest Real-time priority 58 Lowest Real-time priority 11 Timed Suspension Context Switch Probe Number of context switches 5772 Maximum context switch time 28.96E-6 Minimum context switch time 10.82E-6 Average context switch time 12.76E-6
30Tabla 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
31Estrategia y anotaciones
- Invocaciones durante los ciclos de ejecución
- Anotaciones estilo JAVADOC y a partir de los
estereotipos de los patrones - (/ _at_OORT_.... /)
/ _at_OORT_protected / Clase Protected Constructor() / _at_OORT_synchronized / synchronized()
32Programa de medida
- Clase principal y listas de elementos
33Tabla 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
34Instrumentación de código
import TimeMntr. / _at_OORT_eventHandler // _at_OORT_periodicExecutor / Clase Executor private int monitores Constructor() public void run() createThreadMnrt() recordThrProcessInstant() while(!interrupted()) recordThrProcessInstant()
35Instrumentación de código
import TimeMntr. / _at_OORT_protected // _at_OORT_eventSource // _at_OORT_synchronizer / Clase Protected private int monitores Constructor() createProtectedResource() createProtectedOperMntr() / _at_OORT_eventTrigger / eventTrigger() recordOperProcessInstant() notify() recordOperProcessInstant()
36Instrumentación de código
Import TimeMntr. / _at_OORT_main / Clase Main private static TimeMntr mntr Main() new NoHeapRealTimeThread().run() mntr new TimeMntr() .start() / .close() mntr.stopRecordingData() mntr.createMastModel()
37Estrategias de herramienta
38Tabla 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
39Especificación y diseño lógico
40Diseño de MetrologyUpdating
41Generación del modelo
- Clase instrumentada por RTCode4TimeMntr
/ _at_OORT_eventHandler / private class PerturbographExecutor extends NoHeapRealtimeThread private Perturbogram target private Perturbograph task private int peSrc public PerturbographExecutor() super() public void run() peSrc tTimeMntr.createThreadMntr(TimeMntr.toString(this)) PerturbogramData pData new PerturbogramData() TimeMntr.recordTheadTime(peSrc) while(!interrupted()) target.awaitPerturbogram(pData) task.submit(pData) TimeMntr.recordTheadTime(peSrc)
42Generación del modelo
- Modelo obtenido con TimeMntr
lt!-- "Perturbograph.PerturbographExecutor_1e51060" Executor model--gt ltmast_mdlThread Name"Perturbograph.PerturbographExecutor_1e51060.thread" Scheduler"platformNode.sheduler"gt ltmast_mdlFixed_Priority_Params Priority"41"/gt lt/mast_mdlThreadgt ltmast_mdlEnclosing_Operation Name"Perturbograph.PerturbographExecutor_1e51060.response" Worst_Case_Execution_Time"977.920241E-3" Avg_Case_Execution_Time"975.023895E-3" Best_Case_Execution_Time"861.168964E-3"gt ltmast_mdlOperation Name"Perturbogram_9ed927.awaitPerturborgram"/gt ltmast_mdlOperation Name"Perturbogram_9ed927.marshall"/gt lt/mast_mdlEnclosing_Operationgt
43Generación del modelo
- Modelo obtenido con TimeMntr
lt!-- "Metrology.MetrologyExecutor_1a679b7" Executor model--gt ltmast_mdlThread Name"Metrology.MetrologyExecutor_1a679b7.thread" Scheduler"platformNode.sheduler"gt ltmast_mdlFixed_Priority_Params Priority"47"/gt lt/mast_mdlThreadgt ltmast_mdlRegular_End_To_End_Flow Name"Metrology.MetrologyExecutor_1a679b7.e2ef"gt ltmast_mdlPeriodic_Event Name"trigger" Period"0E0"/gt ltmast_mdlInternal_Event Name"end"gt ltmast_mdlHard_Global_Deadline Referenced_Event"trigger" Deadline"0E0"/gt lt/mast_mdlInternal_Eventgt ltmast_mdlInternal_Event Name"internalEvent0"/gt ltmast_mdlStep Input_Event"trigger" Output_Event"internalEvent0" Step_Schedulable_Resource"Metrology.MetrologyExecutor_1a679b7.thread" Step_Operation"Metrology.MetrologyExecutor_1a679b7.response" Hold_Schedulable_Resource"NO"/gt ltmast_mdlStep Input_Event"internalEvent0" Output_Event"end" Step_Schedulable_Resource"Perturbograph.PerturbographExecutor_1e51060.thread" Step_Operation"Perturbograph.PerturbographExecutor_1e51060.response" Hold_Schedulable_Resource"NO"/gt lt/mast_mdlRegular_End_To_End_Flowgt
44Tabla de contenidos
- Introducción
- Herramienta RTLinuxNodeModelEstimator
- Módulo TimeMntr
- Herramienta RTCode4TimeMntr
- Aplicación BURTA
- Conclusiones y trabajo futuro
45Conclusiones 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
46- Gracias por su atención, preguntas?