43
TESIS DOCTORAL Técnicas y extensiones para Java de tiempo real distribuido Autor: Pablo Basanta Val Directora: Marisol García Valls Universidad Carlos III de Madrid Dpto. De Ingeniería de Telemática

Tecnicas y extensiones para Java de tiempo real

Embed Size (px)

Citation preview

Page 1: Tecnicas y extensiones para Java de tiempo real

TESIS DOCTORAL Técnicas y extensiones para Java

de tiempo real distribuido

Autor: Pablo Basanta ValDirectora: Marisol García Valls

Universidad Carlos III de Madrid

Dpto. De Ingeniería de Telemática

Page 2: Tecnicas y extensiones para Java de tiempo real

2

ÍndiceGeneral

Introducción

Objetivos de la tesis

Estado del arte

Técnicas y extensiones para Java de tiempo real distribuido

Modelo middleware con soporte de tiempo real Extensiones para Java de tiempo real distribuido Extensiones para Java de tiempo real centralizado

Evaluación empírica

Conclusiones y trabajo futuro

Page 3: Tecnicas y extensiones para Java de tiempo real

3

Introducción Aparición de Java como tecnología de tiempo real

Las tecnologías de distribución y de tiempo real están en una continua evolución

Se ha comenzado a considerar a Java como lenguaje de tiempo real

Y se buscan formas de integrarlo con las tecnologías de distribución existentes

Tiempo real

Middlewarede distribución

DCE DCOM CORBA RMIServicios

Web

SistemasOperativos

Lenguajes(ADA, C, Java)

Middleware(RTCORBA)

Componentes

¿DRTJava?

ADA C/C++

POSIX

RTJava(RTSJ)

Page 4: Tecnicas y extensiones para Java de tiempo real

4

Introducción Algunas claves

Java puede reducir notablemente los tiempos de desarrollo y mantenimiento de las aplicaciones

Entre un 20% y un 200% más productivo que C/C++ En el sector aeronáutico: 150% más productivo que C/C++ y un

140% más que ADA95

Fuerte crecimiento del mercado de los sistemas embebidos

En el pasado del +25% anual y previsiones del +16%

[fuente: Future of Embedded Systems. 2005]

Aparición de una nueva generación de aplicaciones distribuidas embebidas y de tiempo real

Sistemas pequeña escala gran escala[fly-by-wire aircraft, total ship computing, tele-inmersión]

Page 5: Tecnicas y extensiones para Java de tiempo real

5

Introducción Su estado actual

Desde los años 90, se ha estado trabajando (a nivel de investigación) en Java de tiempo real

Sistemas centralizados Especificaciones refinándose

[RTSJ, RTCORE] Productos comerciales disponibles

[Jtime, Jamaica, Sun-Mackinack, IBM WebSphere Real-time]

Sistemas distribuidos Especificaciones en desarrollo

[ DRTSJ, RTCORBA-RTJava] Proyectos financiando dicha investigación

[HIJA (Unión Europea), RTZen (EE.UU.)]

Page 6: Tecnicas y extensiones para Java de tiempo real

6

Objetivos de la tesis

Desarrollar un modelo arquitectónico para Java de tiempo real distribuido

Que soporte características básicas de distribución Así como otras avanzadas

Definir extensiones para RMI Que utilicen el modelo desarrollado Que aprovechen el modelo de distribución RMI

Definir extensiones para RTSJ Que faciliten la implementación del modelo Que mejoren el soporte actual de RTSJ

Realizar un prototipo Que valide el modelo Que permita analizar su comportamiento

Java de tiemporeal distribuido

Tiempo real

Middl.

“Estudio, análisis y definición de formulas integradoras entre los lenguajes Java de tiempo real y los paradigmas de distribución”

Page 7: Tecnicas y extensiones para Java de tiempo real

7

Índice Estado del arte de las tecnologías Java de tiempo real

Middleware de Infraestructura Limitaciones de Java Soluciones existentes Comparativa

Middleware de Distribución Retos a abordar Soluciones y análisis conjunto Análisis de limitaciones

Page 8: Tecnicas y extensiones para Java de tiempo real

8

Estado del arteMiddleware de Infraestructura Java: Algunos problemas

Modelo de concurrencia infraespecificado Planificación Protocolos de sincronización

Alta inversión de prioridad de ciertos mecanismos Gestión automática de memoria Carga dinámica de clases Inicialización de clases

Limitaciones propias de los sistemas embebidos Manejo de eventos Acceso hardware

Page 9: Tecnicas y extensiones para Java de tiempo real

9

Estado del arteMiddleware de Infraestructura Java: Principales aproximaciones

RTCORE: The Real-Time Core Extensions Dos entornos diferenciados (Core y Baseline) de

ejecución Nuevas clases para el Core e interfaces de comunicación Carece de implementaciones

RTSJ: The Real-Time Specification for Java Basada en la modificación de la máquina virtual Nuevas clases especiales para el tiempo real Buen número de implementaciones

Otras: PERC, RTJThreads, CJThreads

RTOS

JVM CORE

RTOS

RTJVM

Page 10: Tecnicas y extensiones para Java de tiempo real

10

Estado del arteMiddleware de Infraestructura Java: Comparación

Pla

nifi

caci

ón

Sin

cron

izac

ión

Rec

olec

ción

de

basu

ra

Car

ga d

inám

ica

de c

lase

s

Inic

iali

zaci

ón d

e cl

ases

Man

ejo

de e

vent

os

Acc

eso

Har

dwar

e

RTSJ RTCore PERC - - -

RTJThreads - - - - CJThreads - - - - -

Page 11: Tecnicas y extensiones para Java de tiempo real

11

Estado del arteMiddleware de Distribución Java: retos a abordar

Retos específicos Gestión del procesador en el servidor Gestión de memoria predecible extremo a extremo Gestión de las conexiones Gestión de la concurrencia en el servidor Recolección de basura distribuida Descarga dinámica de código Modelo de eventos distribuido

Un gran reto global Integrar los lenguajes para Java de tiempo real dentro las

tecnologías de distribución actuales

Page 12: Tecnicas y extensiones para Java de tiempo real

12

Estado del artePrincipales aproximaciones existentes para Java de tiempo real distribuido

Aproximación Tecnologías Ges

tión

del

pro

cesa

dor

Ges

tión

de

mem

oria

Ges

tión

de

cone

xion

es

Ges

tión

de

conc

urre

ncia

Rec

olec

ción

de

basu

ra d

istr

ibui

da

Des

carg

a di

nám

ica

de c

ódig

o

Mod

elo

de e

vent

os d

istr

ibui

dos

RTZen RTCORBA RTSJ - - - -

DRTSJ RMI RTSJ I - - - - RTRMI-York RMI RTSJ I - I

RTRMI-UPM RMI RTSJ I - -

RTRMI-Texas RMI RTSJ - - I - - -

Abordado

I Identificado

- No abordado

Page 13: Tecnicas y extensiones para Java de tiempo real

13

Estado del arteMiddleware de Distribución Java: Puntos fuertes y puntos débiles de cada una de las aproximaciones

Descripción DescripciónDRTSJ

Alta fidelidad con el modelo Java

X Delega gran parte de la responsabilidad en el programador

RTRMI-York Identificación de problemas de integración

X Propuestas de implementación complejas

RTRMI-UPM Identificación de escenarios de aplicación

X Alta dependencia con el escenario de aplicación

RTZen Fruto de la implementación y con interfaces bien definidas

X Condicionado por el modelo RTCORBA

RTRMI-Texas Identificación de características complementarias

X RTRMI es más bien un punto de partida

Page 14: Tecnicas y extensiones para Java de tiempo real

14

Estado del arteMiddleware de Distribución Java: Conclusiones

Gran necesidad de soluciones DRTSJ se encuentra aún en proceso de definición RTCORBA es difícil de integrar con RTSJ Gran carencia de implementaciones

Algunos retos particulares Integración del modelo de regiones de RTSJ con los

diferentes paradigmas de distribución Recolección distribuida de basura de tiempo real Descarga dinámica de código de tiempo real

El gran reto Cómo integrar dentro de los modelos distribuidos el

modelo de Java centralizado

Page 15: Tecnicas y extensiones para Java de tiempo real

15

Índice Técnicas y extensiones para Java de tiempo real distribuido

Modelo middleware con soporte de tiempo real Modelo de capas y de predictibilidad Invocación remota Recolección de basura de tiempo real Servicio de nombres

Extensiones para sistemas distribuidosExtensiones para sistemas centralizados

Page 16: Tecnicas y extensiones para Java de tiempo real

16

Modelo middleware con soporte de tiempo real Modelo de capas

Middlewarede Distribución

(RTRMI)

Middlewarede

infraestructura(JVM)

Recursos

mid_dis_manager_set

mid_inf_memory_allocate

mid_inf_concurrententity_createmid_inf_concurrententity_destroymid_inf_concurrencylimitator_createmid_inf_concurrencylimitator_destroymid_inf_concurrencylimitator_lockmid_inf_concurrencylimitator_release

mid_inf_connection_createmid_inf_connection_close

mid_inf_connection_accept

mid_inf_connection_sendmid_inf_connection_receive

mid_inf_memory_deallocate

mid_inf_manager_set

Memoria Procesador Red

Gestióndistribuida de

memoria

Gestióndistribuida de

procesador

Gestión deconexiones

DGC Naming

Gestión dememoria

Gestión deprocesador

Gestión dered

mid_dis_stub_unregister mid_dis_stub_invoke mid_dis_stub_register

mid_cs_naming_lookupmid_cs_naming_bind

mid_cs_naming_unbind

mid_cs_dgc_unreferencemid_cs_dgc_reference

mid_dis_remote_unregister mid_dis_remote_invoke

mid_dis_remote_register

Aplicaciónsustitutoobjetoremoto

Nombre de capa

primitiva

Page 17: Tecnicas y extensiones para Java de tiempo real

17

Modelo middleware con soporte de tiempo realReparto de la responsabilidad de predictibilidad entre capas

Middlewarede Distribución

(RTRMI)

Middlewarede

infraestructura(JVM)

Recursos

mid_dis_manager_set

mid_inf_memory_allocate

mid_inf_concurrententity_createmid_inf_concurrententity_destroymid_inf_concurrencylimitator_createmid_inf_concurrencylimitator_destroymid_inf_concurrencylimitator_lockmid_inf_concurrencylimitator_release

mid_inf_connection_createmid_inf_connection_close

mid_inf_connection_accept

mid_inf_connection_sendmid_inf_connection_receive

mid_inf_memory_deallocate

mid_inf_manager_set

Memoria Procesador Red

Gestióndistribuida de

memoria

Gestióndistribuida de

procesador

Gestión deconexiones

DGC Naming

Gestión dememoria

Gestión deprocesador

Gestión dered

mid_dis_stub_unregister mid_dis_stub_invoke mid_dis_stub_register

mid_cs_naming_lookupmid_cs_naming_bind

mid_cs_naming_unbind

mid_cs_dgc_unreferencemid_cs_dgc_reference

mid_dis_remote_unregister mid_dis_remote_invoke

mid_dis_remote_register

Aplicaciónsustitutoobjetoremoto

... ......

ConnectionPool ThreadPool MemoryPool

mid_inf_memory_setpriority

Modificado por el perfil de predictibilidad

Page 18: Tecnicas y extensiones para Java de tiempo real

18

Modelo middleware con soporte de tiempo realMemoryPool

Provee la memoria necesaria para invocar al objeto remoto en el servidor

Admite múltiples tipos de memoria Diferentes políticas de gestión de memoria Ha de ser dimensionada por el programador

Divide la memoria observable por el programador en dos contextos: creación e invocación

En el caso de utilizar regiones se puede evitar el recolector de basura en el servidor[Técnica del NoheapRemoteObject]

Calculator()lastInteger

add()lastResult()doNothing()

Calculator()lastInteger

add()lastResult()doNothing()

MemoryPool

0 0 0

Invocationnumber

Invo

cati

onsi

ze

Page 19: Tecnicas y extensiones para Java de tiempo real

19

Modelo middleware con soporte de tiempo real Invocación remota síncrona

mid_inf_connection_send

remoteobjectStub

client

mid_dis_stub_invoke

remote

2

3

5

6

4

7

1

cliente servidor

mid_dis_remoteobject_invoke

mem

clie

nt

mem

rem

ote

...conn

pool ...mem

pool

mid_inf_connection_send

mid_inf_connection_receive

mid_inf_connection_receive

<client>

<remote>

mid_inf_concurrententity_setpriority

mid_inf_concurrententity_setpriority

5.16.12.1

<remoteobject>

3.1

Page 20: Tecnicas y extensiones para Java de tiempo real

20

Modelo middleware con soporte de tiempo realInvocación remota asíncrona sin confirmar (a) y confirmada (b)

Ventajas Reducen las latencias de la

invocación remota De utilidad en aplicaciones

con señalización remota

Tipos Sin confirmar (a): elimina las

latencias de transmisión y procesado en el servidor

Confirmada (b): garantiza la recepción en el servidor y elimina el coste de la invocación al método remoto

remoteobjectstub

client

remote

2

56

4

7

1

cliente servidor

... ......

2.1 6.1 3.2 3.3 5.1

35.2

3.1

aremoteobjectstub

client

remote

2

56

4

7

1

cliente servidor

... ......

2.1 6.1 3.2 3.3 5.1

35.2

3.1

b

Page 21: Tecnicas y extensiones para Java de tiempo real

21

Modelo middleware con soporte de tiempo realIntegración de los servicios del recolección de basura y de nombres

Integración del servicio de recolección de basura Problema:

Cómo dotar al proceso de recolección de basura de predictibilidad Aproximación:

Sólo aquellas tareas que intercambian o destruyen referencias a objetos remotos asumen dicho coste

Integración del servicio de nombres Como un objeto remoto tradicional de tiempo real que utiliza el

recolector de basura distribuido internamente

A

Ref A

DGC

-1

Page 22: Tecnicas y extensiones para Java de tiempo real

22

Índice Técnicas y extensiones para Java de tiempo real distribuido

Modelo middleware con soporte de tiempo real

Extensiones para sistemas distribuidos Interfaces de programador Interfaces entre nodos

Extensiones para sistemas centralizados

Page 23: Tecnicas y extensiones para Java de tiempo real

23

Extensiones para Java de tiempo real distribuidoInterfaces para el programador

RealtimeUnicastRemoteObject

UnicastRemoteObject

NoHeapRealtimeUnicastRemoteObject AsyncRealtimeUnicastRemoteObject

RealtimeUnicastRemoteStub

DistributedScheduler

DefaultPriorityDistributedScheduler

HIPriorityDistributedScheduler

Re

curs

os

Ges

tió

n d

e re

curs

os

Clie

nte

-Ser

vid

or

DREQUIEMIRMI

PriorityImmortalConnectionPool

ThreadPool

ImmortalThreadPool

MemoryAreaPool

ImmortalMemoryAreaPool

LTMemoryAreaPool

HeapMemoryAreaPool

ConnectionPool

DefaultConnectionPool DefaultThreadPool

Page 24: Tecnicas y extensiones para Java de tiempo real

24

Extensiones para Java de tiempo real distribuidoInterfaces entre nodos

Transmiten información no funcional entre cliente y servidor

De utilidad para la planificación distribuida

Dos interfaces: Protocolo de comunicaciones de tiempo real RTJRMP

RTProtocol, ProtocolRTAck y RTcall Recolector de basura de tiempo real

RTJRMP

<RTCall, Call>

<ProtocolRtAck, ProtocolAck>

nodoA nodoB

<RtProtocol,stream>

<ProtocolRtAck>

JRMP

<Call>

<ProtocolAck>

nodoA nodoB

<stream>

<ProtocolAck>

mensajes jrmpcabecera rtjrmp

<cabecera jrmp> <cabecera rtjrmp>

Page 25: Tecnicas y extensiones para Java de tiempo real

25

Extensiones para Java de tiempo real distribuidoDetalles de la gramática RTJRMP

Message:RtCallCallPingDgcAck

RtCall:0x55 priority noheap mid async oid Call0x55 priority noheap mid async oid Ping0x55 priority noheap mid async oid DgcAck

mid:long

async:boolean

oid:objNum unique time count

objNum:long

unique:int

time:long

count:short

Out:. . .

Protocol:SingleOpProtocolStreamProtocolMultiplexProtocolRTProtocol. . .

MultiplexProtocol:0x4d

RTProtocol:0x54 priority noheap SingleOpProtocol0x54 priority noheap StreamProtocol0x54 priority noheap MultiplexProtocol

priority:long

noheap:boolean. . .

In:ProtocolRTAck ProtocolAck

ProtocolAck. . .

ProtocolRTAck:0x55 priority noheap. . .

Page 26: Tecnicas y extensiones para Java de tiempo real

26

Índice Técnicas y extensiones para Java de tiempo real distribuido

Modelo middleware con soporte de tiempo real

Extensiones para sistemas distribuidos

Extensiones para sistemas centralizados AGCMemory ExtendedPortal RealtimeThread++

Page 27: Tecnicas y extensiones para Java de tiempo real

27

0

50

100

150

200

250

300

350

400

0

50

100

150

200

250

300

350

400

out of memory

Extensiones para Java de tiempo real centralizadoAGCMemory: recolección de basura flotante dentro de regiones

Motivación Eliminar estructuras de basura

sencillas

Ventajas de la aproximación Reduce el número de adaptaciones

manuales

Implicaciones Nuevo tipo de región (AGCMemory)

y cambios dentro de la máquina virtual

HeapMemory

Memory Area

VTMemory LTMemory AGCMemory

Scoped Memory

ImmortalMemory

ImmortalPhysicalMemory

LTPhysicalMemory VTPhysicalMemory

System.out.println(1); //Generates floating garbage

Page 28: Tecnicas y extensiones para Java de tiempo real

28

Extensiones para Java de tiempo real centralizadoAGCMemory: detalles

agc_stack

toptop-1

0

top-2

method_ptr scape_ptr0xAC00

0x0C00

free_mem_ptr

physical memory

System.out.println(1);

(1)

(2)

(3)

(2) Barrera de asignación

if (ref>attrib)scape_ptr=min{scape_ptr,attrib}

(3) Barrera de liberación

if (topscape_ptr topmethod_ptr)free_mem_ptr=topmethod_ptrelsescape_ptr[-1] = min{scape_ptr, scape_ptr[-1]}pop()

(1) Barrera de preinvocación

push()scape_ptr=free_mem_ptr;Method_ptr=free_mem_ptr;

Page 29: Tecnicas y extensiones para Java de tiempo real

29

Extensiones para Java de tiempo real centralizadoExtendedPortal: violando la regla de asignación y forzando la del padre único

Motivación Facilitar la violación de la regla de

asignación de RTSJ

Ventajas Acceso a un objeto remoto en tan sólo dos

pasos

Implicaciones Nuevas clases (ExtendedPortal) y cambios

en la máquina virtual

package es.uc3m.it.drequiem.rtrmi;public class ExtendedPortal{public ExtendedPortal(long depth, Object initial);public Object getPortal(); public void setPortal(Object c); public void enter(Runnable r); public void setStrong(boolean b);public boolean isStrong();}

ScopedA

Immortal

ScopedB

Permitido en RTSJ

Prohibido en RTSJ(permitido por la extensiónExtendedPortal)

Page 30: Tecnicas y extensiones para Java de tiempo real

30

Extensiones para Java de tiempo real centralizadoExtendedPortal: Estructuras de datos y patrones

Basada en estructura de datos y barreras

La barrera de acceso a la referencia

ep

Isbsc

I

scopestack

rt-thread

ep

Isbsc

scopestack

rt-thread

Isbsc

ep

Isbsc

+ MecanismosAcceso y modificación de contenidosBarreras controladoras

X

Page 31: Tecnicas y extensiones para Java de tiempo real

31

Extensiones para Java de tiempo real centralizadoRealtimeThread++: eligiendo la relación mantenida con el recolector de basura

Motivación Romper el dualismo heap-noheap de RTSJ

Ventajas Permite realizar sincronización entre tareas heap o

noheap de forma segura

Implicaciones Cambios en la interfaz RealtimeThread y cambios

dentro de la máquina virtual de tiempo real

package javax.realtime;public class RealtimeThread extends Thread{ public static void enterHeap(Runnable r); public static void enterNoHeap(Runnable r); public static boolean isRunningInHeap();

. . .}

NRTHREAD

synch

?

RTTHREAD

GC

synch

GC

RTTHREAD

enterNoHeap

NRTHREAD

?

Page 32: Tecnicas y extensiones para Java de tiempo real

32

Extensiones para Java de tiempo real centralizadoRealtimeThread++: Detalles internos

(2) Barrera de cambio a noheap(1) Barrera de cambio a heap

mover a cola HEAPDesactiva la barrera de lectura;

mover a cola NOHEAPActivar la barrera de lectura

Cola Heap

Cola NoHeap

RTHREAD++

RTHREAD++

Running in heap

Running in noheap

Page 33: Tecnicas y extensiones para Java de tiempo real

33

ÍndiceEvaluación empírica

Entorno Arquitectura y escenarios de evaluación Aplicaciones auxiliares

Experimentos realizados Utilización de prioridades en el servidor Utilización de regiones Consumo de recursos y latencias Utilidad del asincronismo

Page 34: Tecnicas y extensiones para Java de tiempo real

34

Evaluación empírica Arquitectura y escenarios de prueba

Arquitectura de implementación Software utilizado:

RMIOP, Jtime, Linux Timesys-OS, RTAI

Soporte actual:Manejo de prioridades en el servidorGestión de memoria en el servidorRecolección de basura distribuida

Escenarios de prueba utilizados Centralizado

Distribuido

Timesys OS

JTime

RMIOP

DREQUIEMI

SustitutoObjeto

Remoto

RTOS

RTJVM

RMI

RTRMI

RTOS

RTRMI RTRMI

Jtime Jtime

clienteobjeto remoto

735 Mhzo 796 Mhz

191.168.8.140735 Mhz

191.168.8.139735 Mhz

191.168.8.142735 Mhz

191.168.8.143735 Mhz

191.168.8.141735 Mhz

191.168.8.144796 Mhz

Swiched Ethernet

TimesysOS

RTRMI

RTJVM

TimesysOS

RTRMI

RTJVM

TimesysOS

RTRMI

RTJVM

TimesysOS

RTRMI

RTJVM

TimesysOS

RTRMI

RTJVM

TimesysOS

RTRMI

RTJVM

Page 35: Tecnicas y extensiones para Java de tiempo real

35

Interferencia temporal en sistema centralizado

01020304050607080

1 30000

us

796Mhz-Knoppix 796Mhz-Timesys 735Mhz-RTAI 735Mhz-Timesys

Evaluación empíricaHerramientas desarrolladas

Depuración de aplicaciones y trazado[DRQTracer]

Consumo de recursos (memoria y latencias)[DRQTestResourceConsumption]

Contemplada tres familias:void doNothing(X), X doNothing() y X echo(X)y 35 casos por familia.

Generación de interferencias Aplicaciones de trazado

[DRQJitterTracer y DRQWorkTracer] Consumo de procesador

[SharedRemoteObject] Generador de interferencias

[DRQForeverTracer]

OS Coste medio

Costemáximo

AMD796Mhz

Knoppix

9,96 µs 37 µs

TimeSys

10,02 µs 31 µs

Pentium

735Mhz

RTAI 10,77 µs 76 µs

Timesys

10,79 µs 52 µs

Escen.

Coste(minimo)

Varianza

máxima

AMD796Mhz

Local 996 µs 80 µs

Pentium735Mhz

Local 2,133 ms

600 µs

Dist 1,769 ms

600 µs

Interferencia en sistema distribuido

0

2000

4000

6000

8000

10000

12000

14000

16000

0

30 60 90

120

trabajo

us

796Mhz-local 735Mhz-local 735Mhz-dis

Page 36: Tecnicas y extensiones para Java de tiempo real

36

Evaluación empíricaUtilización de prioridades en el servidor. Resultados.

191.168.8.140735 Mhz

191.168.8.139735 Mhz

191.168.8.142735 Mhz

191.168.8.143735 Mhz

191.168.8.141735 Mhz

191.168.8.144796 Mhz

Swiched Ethernet

Timesy sOS

RTRMI

RTJVM

Timesy sOS

RTRMI

RTJVM

Timesy sOS

RTRMI

RTJVM

Timesy sOS

RTRMI

RTJVM

Timesy sOS

RTRMI

RTJVM

Timesy sOS

RTRMI

RTJVM

1700

1900

2100

2300

2500

2700

2900

3100

3300

3500

0 2 4 6 8 10 12 14 16

trabajo

ussin interferencia 1 interferentesaturación por prioridades saturacion aleatoria

1700

2200

2700

3200

3700

4200

4700

5200

0 2 4 6 8 10 12 14 16

trabajo

us

sin interferencia 1 interferentesaturación por prioridades saturacion aleatoria

1700

21700

41700

61700

81700

101700

121700

141700

0 2 4 6 8 10 12 14 16

trabajo

us

sin interferencia 1 interferente 2 interferentes

1700

2200

2700

3200

3700

4200

4700

5200

5700

6200

6700

0 2 4 6 8 10 12 14 16

trabajo

us

sin interferencia 1 interferente 2 interferentes

RTRMI

RMI

1700

2200

2700

3200

3700

4200

4700

5200

5700

6200

6700

0 2 4 6 8 10 12 14 16

trabajo

us

sin interferencia 1 interferente 2 interferentes

Interferencia( RTRMI (priv. conn.))

1900 μsMáxima

+50 μsMedia

Interferencia(RMI)

Interferencia(RTRMI (sha. conn.))

1900 μsMáxima

+90 μsMedia

120 msMáxima

+2456 μsMedia

Page 37: Tecnicas y extensiones para Java de tiempo real

37

Evaluación empíricaComportamiento temporal de las técnicas de gestión de memoria. Resultados.

RTOS

RTRMI RTRMI

Jtime Jtime

clienteobjetoremoto

735 Mhzo 796 Mhz

Temporalmente

planoRegiones

picos de hasta +5 msRecolector

Aumento de la memoria ocupada

planoRegiones

lineal (de+ 3,1 ms/kb)Recolector

Tiempo de respuesta

0

1

2

3

4

5

6

7

8

1 21 41 61 81 101 121 141

muestra

ms

HeapMemoryAreaPool LTMemoryAreaPool

Tiempo de respuesta en el peor de los casos

0

2

4

6

8

10

12

14

16

752

1286

1910

2534

3158

Memoria viva (kB)

ms

HeapMemoryAreaPool LTMemoryAreaPool

Page 38: Tecnicas y extensiones para Java de tiempo real

38

Evaluación empíricaAnálisis del consumo de memoria durantela invocación remota

Memoria consumida en el cliente

0

5000

10000

15000

20000

25000

void

bool

ean

byte

char

shor

tin

tlo

ngflo

atdo

uble

null

Byt

eS

hort

Inte

ger

Long

Flo

atD

oubl

eC

hara

cter

Boo

lean

RtU

nRem

Ob

Str

ing(

)S

trin

g(10

)S

trin

g(25

)S

trin

g(50

)S

trin

g(10

0)O

bjec

t[0]

Obj

ect[

10D

]O

bjec

t[25

D]

Obj

ect[

50D

]O

bjec

t[10

0D]

Vec

tor(

0)V

ecto

r(10

D)

Vec

tor(

25D

)V

ecto

r(50

D)

Vec

tor(

100D

X

byte

s

Invocación asíncrona(consumo de memoria mínimo)

≈ 3.6 Kb.(-29%)

servidor

≈ 1.5 Kb. (-55%)

cliente

CantidadLugar

Invocación síncrona(consumo de memoria

mínimo)

≈ 5.0 Kb.servidor

≈ 3.4 Kb.cliente

CantidadLugar

Coste de la transmisión de una referencia a objeto remoto: 25 kbytes .Paso de dato primitivo a objeto equivalente: + 30% en cliente y +40% en servidor.

RTOS

RTRMI RTRMI

Jtime Jtime

clienteobjetoremoto

735 Mhzo 796 Mhz

Page 39: Tecnicas y extensiones para Java de tiempo real

39

Evaluación empíricaAnálisis del coste temporal de la invocación remota: latencias. Resultados

RTOS

RTRMI RTRMI

Jtime Jtime

clienteobjetoremoto

735 Mhzo 796 Mhz

Loopback devicered

795 Mhz.procesador

Latencia de la transmisión de referencias a objetos remotos > 10 ms

Coste de la creación de conexiones de forma dinámica: hasta +275 %

Sobrecarga de las regiones en el servidor: + 16% (datos primitivos) hasta +0,1% (gran volumen de datos)

Latencias mínimas

573 µsTiempo de respuesta del servidor

173 μs(-81,25%)

Invocación remotaasíncrona

906 μsInvocación remota síncrona

Coste de la invocación remota síncrona

100

1000

10000

100000

void

bool

ean

byte

char

shor

tin

tlo

ngflo

atdo

uble

null

Byt

eS

hort

Inte

ger

Long

Flo

atD

oubl

eC

hara

cter

Boo

lean

RtU

nRem

Ob

Str

ing(

)S

trin

g(10

)S

trin

g(25

)S

trin

g(50

)S

trin

g(10

0)O

bjec

t[0]

Obj

ect[

10D

]O

bjec

t[25

D]

Obj

ect[

50D

]O

bjec

t[10

0D]

Vec

tor(

0)V

ecto

r(10

D)

Vec

tor(

25D

)V

ecto

r(50

D)

Vec

tor(

100D

X

us

Page 40: Tecnicas y extensiones para Java de tiempo real

40

ConclusionesConclusiones y contribuciones

Aproximación arquitectónica para Java de tiempo real distribuido

Definición de modelo computacional Invocación remota síncrona Invocación remota asíncrona Integración de recolector de basura y del servicio de

nombresInterfaces para RMI

Nivel recursos, de gestión y cliente-servidor Interfaces entre nodos de tipo JRMP

Extensiones a RTSJ AGCMemory ExtendedPortal RealtimeThread++

Desarrollado un prototipo validador

Page 41: Tecnicas y extensiones para Java de tiempo real

41

Principales publicaciones

P. Basanta-Val, M. García-Valls and I. Estévez-Ayres. No heap remote objects: Leaving out garbage collection at the server side. (JTRES’04). October 2004.

P. Basanta-Val, Marisol García-Valls and Iria Estévez-Ayres. Towards the integration of scoped memory in distributed real-time Java. (IEEE ISORC’05). May 2005.

P. Basanta-Val, M. García-Valls and I. Estévez-Ayres. AGCMemory: a new real-time Java region for automatic floating garbage recycling. ACM SIGBED, 2(3). July 2005

P. Basanta-Val, M. García-Valls, I. Estévez-Ayres and C. Delgado-Kloos.ExtendedPortal: violating the assignment rule and enforcing the single parent one. (JTRES’06). October 2006

P. Basanta-Val, L. Almeida, M. García-Valls and I. Estévez-Ayres. Towards a synchronous scheduling service on top of a unicast distributed real-time Java. (IEEE RTAS’07). April 2007

Page 42: Tecnicas y extensiones para Java de tiempo real

42

Líneas futuras de trabajo

Implementación de modelos para la invocación remota asíncrona

Incorporación de algoritmos de planificación distribuida en el modelo DREQUIEMI

Desarrollo de herramientas de configuración y despliegue

Desarrollo de un servicio de sincronización global

Dar soporte a otras líneas de investigación paralelas: composición dinámica de aplicaciones distribuidas de tiempo real

Page 43: Tecnicas y extensiones para Java de tiempo real

TESIS DOCTORAL Técnicas y extensiones para Java

de tiempo real distribuido

Autor: Pablo Basanta ValDirectora: Marisol García Valls

Universidad Carlos III de Madrid

Dpto. De Ingeniería de Telemática