herramienta para el modelado y análisis de planificabilidad de aplicaciones rt-java sobre rt-linux

46
1 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

Upload: love

Post on 15-Jan-2016

40 views

Category:

Documents


0 download

DESCRIPTION

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 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

1

Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

Máster en ComputaciónDirector de TFM: José María Drake Moyano

José María Martínez Lanza

Page 2: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

2

Tabla de contenidos

Introducción Herramienta RTLinuxNodeModelEstimator Módulo TimeMntr Herramienta RTCode4TimeMntr Aplicación BURTA Conclusiones y trabajo futuro

Page 3: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

3

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

Page 4: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

4

Aplicaciones RT-Java

Industria y JAVAEspecificación RTSJAplicaciones en RT-Java

Page 5: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

5

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.Test Java project

Annotated Java code class

InstrumentedJava class

Java project

Applicationreal-time model

Applicationconfiguration data

Instrumentationcode generator

MASTTool box

Emulated environment

Embedded processor

Executes

Executes

Schedulabilityanalysis

Instrumentation

Page 6: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

6

Patrones de diseño de TR

Patrón Protected

obj:ProtectedClass client1 client2 client3

«synchronized» oper1()

«protected» «active» «active» «active»obj.lockPClass.lock

used

free «synchronized» oper1()

«synchronized» oper2()

«staticSynchronized» staticOper()

blocked

Page 7: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

7

Patrones de diseño de TR

Respuesta periódica con requisito temporal final

act_1 act_3act_2

rt-thread

timer

Other rt-responses

mutexPeriodic activation

deadline

Page 8: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

8

Patrones de diseño de TR

Respuesta periódica con requisito temporal final

Page 9: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

9

Patrones de diseño de TR

Respuesta a un evento del entorno con requisito temporal final

act_1 act_3act_2

rt-thread

Other rt-responses

mutex

deadline

enviroment

Event occurrency

Page 10: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

10

Patrones de diseño de TR

Respuesta a un evento del entorno con requisito temporal final

Environment Handler Task

«entry»awaitEvent()

«postWaiting»initHandling()«executorTask»task()

«entry»awaitEvent()

return

event

awaiting

«eventHandler» «rtTaskJob»

Page 11: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

11

Patrones de diseño de TR

Respuestas con requisitos temporales intermedios

act_1 act_3act_2

rt-thread1

timer

Other rt-responses

mutex1Periodic activation

deadline2deadline1 rt-thread2

mutex2

act_1 act_3act_2

rt-thread1

Other rt-responses

mutex1

deadline2deadline1 rt-thread2

mutex2

enviroment

Event occurrency

Page 12: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

12

Patrones de diseño de TR

Respuestas con requisitos temporales intermedios

obj:Synchr server Client1 Client2

«entry» await()

«protected» «active» «active» «active»obj.lock

used

free

«postWaiting»process()

«synchronized» oper2()

«trigger»active()

blocked

«trigger»change()

Page 13: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

13

Patrones de diseño de TR

Respuesta con jitter acotado de entrada y salida

act_1 act_3act_2

rt-thread

timer

Other rt-responses

mutex

Periodic activation

fBoundedJitter

sBoundedJitter

 

sPriority bPriority fPriority

offset

Page 14: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

14

Patrones de diseño de TR

Respuesta con jitter acotado de entrada y salida

Page 15: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

15

Patrones de diseño de TR

Respuesta que se comunica con un sistema de no tiempo real

act_1 act_3act_2

rt-thread

timer

No real-time subsystem

waitFreeMutex

Periodic activation

deadline

Page 16: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

16

Patrones de diseño de TR

Respuesta que se comunica con un sistema de no tiempo real

obj:Bridge RTClient NRTClient

«waitFreeSynchronized» freeWaitPut()

«waitFreeProtected» «active» «active»obj.lock

used

free

«synchronized»blockingGet()

return

blocked

return

returnreturn

«synchronized»blockingPut()

«waitFreeSynchronized» freeWaitGet()

«waitFreeSynchronized» freeWaitPut()

no blocking

Page 17: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

17

Modelos de planificabilidad

Modelo de plataforma:RTSJ en Linux: Planificador y relojes.

Modelo lógico:Elementos de modelado.

Modelo reactivo:Respuestas

Modelo plataforma

Modelo reactivo

Modelo lógico

Page 18: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

18

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

Page 19: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

19

Parámetros y estrategia

Rango de prioridadesCambios de contexto entre threadsUso de CPU del no-rt timerResolución del rt timer

Page 20: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

20

Parámetros y estrategia

Rango de prioridadesCambios de contexto entre threadsUso de CPU del no-rt timerResolución del rt timer

Page 21: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

21

Parámetros y estrategia

Rango de prioridadesCambios de contexto entre threads

Suspensión temporal

Uso de CPU del no-rt timerResolución del rt timer

hThread

lThread

Context switch

suspension clock activation

Texec Tsusp

Tsusp

Timed context switch

Page 22: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

22

Parámetros y estrategia

Rango de prioridadesCambios de contexto entre threads

Suspensión en un objeto protegido

Uso de CPU del no-rt timerResolución del rt timer

hThread

lThread

Context switch

wait()Texec

Tsusp

Context switch time

notify()

Page 23: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

23

Parámetros y estrategia

Rango de prioridadesCambios de contexto entre threads

Cambio cruzado de prioridad

Uso de CPU del no-rt timerResolución del rt timer

hThread

lThread

Context switch

Context switch time

hThread.priority

lThread.priority

Page 24: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

24

Parámetros y estrategia

Rango de prioridadesCambios de contexto entre threads

Suspensión en un mutex

Uso de CPU del no-rt timerResolución del rt timer

hThread

lThread

Context switch

Context switch time

unlockunlock unlock locklocklock lockunlock

hThread locked lThread locked

highPrty

lowPrty

Page 25: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

25

Parámetros y estrategia

Rango de prioridadesCambios de contexto entre threadsUso de CPU del no-rt timer

Resolución del rt timer

1 ms

t1 t2 t3 t4t5

1)

2)

3)

primer ms

Page 26: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

26

Parámetros y estrategia

Rango de prioridadesCambios de contexto entre threadsUso de CPU del no-rt timerResolución del rt timer

Page 27: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

27

Programa de medida

Estructura del programa

Modelo MAST2Informe de texto

Page 28: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

28

Programa de medida

Estructura del programaModelo MAST2

Informe de texto

<mast_mdl:MAST_MODEL Model_Name="RTLinuxNode" Model_Date="2013-04-03T23:05:18" ...">

...<mast_mdl:Fixed_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"/>

</mast_mdl:Primary_Scheduler></mast_mdl:MAST_MODEL>

Page 29: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

29

Programa de medida

Estructura del programaModelo MAST2Informe 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

*********************************************************************************

Page 30: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

30

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

Page 31: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

31

Estrategia y anotaciones

Invocaciones durante los ciclos de ejecuciónAnotaciones estilo JAVADOC y a partir de los

estereotipos de los patrones: (/* *@OORT_.... */)

/** * @OORT_protected */

Clase Protected {

Constructor(){

}

/** * @OORT_synchronized */

synchronized(){

}

}

Page 32: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

32

Programa de medida

Clase principal y listas de elementosTimeMntr

 

ThreadMntr ProtectedOperMntr MutexMntr

name:String

mutex

name:Stringwcet:doubleacet:doublebcet:doubletype:ProtectedOperTypejidSet:set(long)

name:Stringjid:longwcet:doubleacet:doublebcet:doublepriority:intoperList:list(ProtectedOperMntr)isSegment:boolean

thread protectedOper mutex

 

«enum»

ProtectedOperType

SYNCHRONIZEDTRIGGERENTRYSYNCHRONIZER_ENTRYPOSTWAITINGSTATIC_SYNCHRONIZEDSTATIC_TRIGGERSTATIC_ENTRYSTATIC_SYNCHRONIZER_ENTRYSTATIC_POSTWAITING

entryentry

nextSegment 0..1

0..1

Atributo en cursiva es generado por el algoritmo de creación del modelo

0..1

1

* * *

trigger

callEntry

0..1

0..1

Page 33: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

33

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

Page 34: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

34

Instrumentación de código

Patrones ejecutoresimport TimeMntr.*;

/* * @OORT_eventHandler // @OORT_periodicExecutor */Clase Executor {

private int monitores;Constructor(){

…}

public void run(){createThreadMnrt();recordThrProcessInstant();while(!interrupted()){

…recordThrProcessInstant();

}

}

}

Page 35: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

35

Instrumentación de código

Patrones protegidosimport TimeMntr.*;

/** * @OORT_protected // @OORT_eventSource // @OORT_synchronizer */Clase Protected {

private int monitores;Constructor(){

…createProtectedResource();createProtectedOperMntr();

}

/** * @OORT_eventTrigger */eventTrigger(){

recordOperProcessInstant();…notify();…recordOperProcessInstant();

}}

Page 36: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

36

Instrumentación de código

MainImport TimeMntr.*;

/** * @OORT_main */Clase Main {

private static TimeMntr mntr;Main(){

new NoHeapRealTimeThread().run(){mntr = new TimeMntr();… .start() / .close() …mntr.stopRecordingData();mntr.createMastModel();

}}

}

Page 37: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

37

Estrategias de herramienta

Page 38: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

38

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

Page 39: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

39

Especificación y diseño lógico

 

 

 

DAQRT-Driver

HalfMemorInterr. Real-time Susbsystem

No real-time Subsystem

Sampler

Connection

monitor

Perturbograph

Metrology

Processor

Publisher

Perturbation event

Message

stream

Waveform

Metrology

Data

Perturbogram

Switch

Configuration

Page 40: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

40

Diseño de MetrologyUpdating

Clock:MetrologyExecutor :Metrology [*]:Waveform [*]:Metrology

Data:Perturbogram

:PerturbographExecutor :Perturbograph ms:MssgStreamer

:time out update()

update()

updateStatisticData()

finalized()

awaitPerturbogram()

awaitPerturbogram()

submit()submitPerturbogram()

return awaitP…

deadline= 0.2 s

Periodic{period 0.2 s}

For all Waveform instances

For all MetrologyData instances

If ms.lock is free

marshal()

Or addPreData() or addPostdata()

Page 41: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

41

Generación del modelo

Clase instrumentada por RTCode4TimeMntr/* *@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);

}

}

}

Page 42: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

42

Generación del modelo

Modelo obtenido con TimeMntr<!-- "Perturbograph.PerturbographExecutor_1e51060" Executor model-->

<mast_mdl:Thread Name="Perturbograph.PerturbographExecutor_1e51060.thread" Scheduler="platformNode.sheduler">

<mast_mdl:Fixed_Priority_Params Priority="41"/>

</mast_mdl:Thread>

<mast_mdl:Enclosing_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">

<mast_mdl:Operation Name="Perturbogram_9ed927.awaitPerturborgram"/>

<mast_mdl:Operation Name="Perturbogram_9ed927.marshall"/></mast_mdl:Enclosing_Operation>

Page 43: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

43

Generación del modelo

Modelo obtenido con TimeMntr<!-- "Metrology.MetrologyExecutor_1a679b7" Executor model-->

<mast_mdl:Thread Name="Metrology.MetrologyExecutor_1a679b7.thread" Scheduler="platformNode.sheduler">

<mast_mdl:Fixed_Priority_Params Priority="47"/>

</mast_mdl:Thread>

<mast_mdl:Regular_End_To_End_Flow Name="Metrology.MetrologyExecutor_1a679b7.e2ef">

<mast_mdl:Periodic_Event Name="trigger" Period="0E0"/>

<mast_mdl:Internal_Event Name="end">

<mast_mdl:Hard_Global_Deadline Referenced_Event="trigger" Deadline="0E0"/>

</mast_mdl:Internal_Event>

<mast_mdl:Internal_Event Name="internalEvent0"/>

<mast_mdl:Step Input_Event="trigger" Output_Event="internalEvent0"

Step_Schedulable_Resource="Metrology.MetrologyExecutor_1a679b7.thread"

Step_Operation="Metrology.MetrologyExecutor_1a679b7.response"

Hold_Schedulable_Resource="NO"/>

<mast_mdl:Step Input_Event="internalEvent0" Output_Event="end"

Step_Schedulable_Resource="Perturbograph.PerturbographExecutor_1e51060.thread"

Step_Operation="Perturbograph.PerturbographExecutor_1e51060.response"

Hold_Schedulable_Resource="NO"/>

</mast_mdl:Regular_End_To_End_Flow>

Page 44: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

44

Tabla de contenidos

Introducción Herramienta RTLinuxNodeModelEstimator Módulo TimeMntr Herramienta RTCode4TimeMntr Aplicación BURTA Conclusiones y trabajo futuro

Page 45: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

45

Conclusiones y trabajo futuro

Resultados satisfactoriosAplicaciones 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

Page 46: Herramienta para el modelado y análisis de planificabilidad de aplicaciones RT-Java sobre RT-Linux

46

Gracias por su atención, ¿preguntas?