1. 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
2. 2
Índice
General
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
3. 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
Middleware
de distribución
DCE DCOM CORBA RMI
Servicios
Web
Sistemas
Operativos
Lenguajes
(ADA, C, Java)
Middleware
(RTCORBA)
Componentes
¿DRTJava?
ADA
C/C++
POSIX
RTJava
(RTSJ)
4. 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]
5. 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.)]
6. 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 tiempo
real 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”
7. 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
8. 8
Estado del arte
Middleware 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
9. 9
Estado del arte
Middleware 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
11. 11
Estado del arte
Middleware 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
12. 12
Estado del arte
Principales aproximaciones existentes para Java de tiempo real
distribuido
Aproximación Tecnologías
Gestióndelprocesador
Gestióndememoria
Gestióndeconexiones
Gestióndeconcurrencia
Recoleccióndebasuradistribuida
Descargadinámicadecódigo
Modelodeeventosdistribuidos
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
13. 13
Estado del arte
Middleware de Distribución Java: Puntos fuertes y puntos débiles
de cada una de las aproximaciones
Descripción Descripción
DRTSJ
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
14. 14
Estado del arte
Middleware 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
15. 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 distribuidos
Extensiones para sistemas centralizados
16. 16
Modelo middleware con soporte de tiempo real
Modelo de capas
Middleware
de Distribución
(RTRMI)
Middleware
de
infraestructura
(JVM)
Recursos
mid_dis_manager_set
mid_inf_memory_allocate
mid_inf_concurrententity_create
mid_inf_concurrententity_destroy
mid_inf_concurrencylimitator_create
mid_inf_concurrencylimitator_destroy
mid_inf_concurrencylimitator_lock
mid_inf_concurrencylimitator_release
mid_inf_connection_create
mid_inf_connection_close
mid_inf_connection_accept
mid_inf_connection_send
mid_inf_connection_receive
mid_inf_memory_deallocate
mid_inf_manager_set
Memoria Procesador Red
Gestión
distribuida de
memoria
Gestión
distribuida de
procesador
Gestión de
conexiones
DGC Naming
Gestión de
memoria
Gestión de
procesador
Gestión de
red
mid_dis_stub_unregister
mid_dis_stub_invoke
mid_dis_stub_register
mid_cs_naming_lookup
mid_cs_naming_bind
mid_cs_naming_unbind
mid_cs_dgc_unreference
mid_cs_dgc_reference
mid_dis_remote_unregister
mid_dis_remote_invoke
mid_dis_remote_register
Aplicaciónsustituto
objeto
remoto
Nombre de capa
primitiva
17. 17
Modelo middleware con soporte de tiempo real
Reparto de la responsabilidad de predictibilidad entre capas
Middleware
de Distribución
(RTRMI)
Middleware
de
infraestructura
(JVM)
Recursos
mid_dis_manager_set
mid_inf_memory_allocate
mid_inf_concurrententity_create
mid_inf_concurrententity_destroy
mid_inf_concurrencylimitator_create
mid_inf_concurrencylimitator_destroy
mid_inf_concurrencylimitator_lock
mid_inf_concurrencylimitator_release
mid_inf_connection_create
mid_inf_connection_close
mid_inf_connection_accept
mid_inf_connection_send
mid_inf_connection_receive
mid_inf_memory_deallocate
mid_inf_manager_set
Memoria Procesador Red
Gestión
distribuida de
memoria
Gestión
distribuida de
procesador
Gestión de
conexiones
DGC Naming
Gestión de
memoria
Gestión de
procesador
Gestión de
red
mid_dis_stub_unregister
mid_dis_stub_invoke
mid_dis_stub_register
mid_cs_naming_lookup
mid_cs_naming_bind
mid_cs_naming_unbind
mid_cs_dgc_unreference
mid_cs_dgc_reference
mid_dis_remote_unregister
mid_dis_remote_invoke
mid_dis_remote_register
Aplicaciónsustituto
objeto
remoto
... ......
ConnectionPool ThreadPool MemoryPool
mid_inf_memory_setpriority
Modificado por el perfil de predictibilidad
18. 18
Modelo middleware con soporte
de tiempo real
MemoryPool
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
Invocationsize
19. 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
client
mem
remote...
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
20. 20
Modelo middleware con soporte de tiempo real
Invocació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
3
5.2
3.1
a
remoteobjectstub
client
remote
2
56
4
7
1
cliente servidor
... ......
2.1 6.1 3.2 3.3 5.1
3
5.2
3.1
b
21. 21
Modelo middleware con soporte de tiempo
real
Integració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
22. 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
23. 23
Extensiones para Java de tiempo real
distribuido
Interfaces para el programador
RealtimeUnicastRemoteObject
UnicastRemoteObject
NoHeapRealtimeUnicastRemoteObject AsyncRealtimeUnicastRemoteObject
RealtimeUnicastRemoteStub
DistributedScheduler
DefaultPriorityDistributedScheduler
HIPriorityDistributedScheduler
RecursosGestiónderecursosCliente-Servidor
DREQUIEMIRMI
PriorityImmortalConnectionPool
ThreadPool
ImmortalThreadPool
MemoryAreaPool
ImmortalMemoryAreaPool
LTMemoryAreaPool
HeapMemoryAreaPool
ConnectionPool
DefaultConnectionPool DefaultThreadPool
24. 24
Extensiones para Java de tiempo real
distribuido
Interfaces 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 jrmp
cabecera rtjrmp
<cabecera jrmp> <cabecera rtjrmp>
25. 25
Extensiones para Java de tiempo real
distribuido
Detalles de la gramática RTJRMP
Message:
RtCall
Call
Ping
DgcAck
RtCall:
0x55 priority noheap mid async oid Call
0x55 priority noheap mid async oid Ping
0x55 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:
SingleOpProtocol
StreamProtocol
MultiplexProtocol
RTProtocol
. . .
MultiplexProtocol:
0x4d
RTProtocol:
0x54 priority noheap SingleOpProtocol
0x54 priority noheap StreamProtocol
0x54 priority noheap MultiplexProtocol
priority:
long
noheap:
boolean
. . .
In:
ProtocolRTAck ProtocolAck
ProtocolAck
. . .
ProtocolRTAck:
0x55 priority noheap
. . .
26. 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++
27. 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 centralizado
AGCMemory: 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
28. 28
Extensiones para Java de tiempo real centralizado
AGCMemory: detalles
agc_stack
top
top-1
0
top-2
method_ptr scape_ptr
0xAC00
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_ptr
else
scape_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;
29. 29
Extensiones para Java de tiempo real centralizado
ExtendedPortal: 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ón
ExtendedPortal)
30. 30
Extensiones para Java de tiempo real
centralizado
ExtendedPortal: Estructuras de datos y patrones
Basada en estructura de datos y barreras
La barrera de acceso a la referencia
ep
I
sb
sc
I
scope
stack
rt-thread
ep
I
sb
sc
scope
stack
rt-thread
I
sb
sc
ep
I
sb
sc
+ Mecanismos
Acceso y modificación de contenidos
Barreras controladoras
X
31. 31
Extensiones para Java de tiempo real centralizado
RealtimeThread++: 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
?
32. 32
Extensiones para Java de tiempo real centralizado
RealtimeThread++: Detalles internos
(2) Barrera de cambio a noheap(1) Barrera de cambio a heap
mover a cola HEAP
Desactiva la barrera de lectura;
mover a cola NOHEAP
Activar la barrera de lectura
Cola Heap
Cola NoHeap
RTHREAD++
RTHREAD++
Running in heap
Running in noheap
33. 33
Índice
Evaluació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
34. 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 servidor
Gestión de memoria en el servidor
Recolección de basura distribuida
Escenarios de prueba utilizados
Centralizado
Distribuido
Timesys OS
JTime
RMIOP
DREQUIEMI
Sustituto
Objeto
Remoto
RTOS
RTJVM
RMI
RTRMI
RTOS
RTRMI RTRMI
Jtime Jtime
cliente
objeto
remoto
735 Mhz
o 796 Mhz
191.168.8.140
735 Mhz
191.168.8.139
735 Mhz
191.168.8.142
735 Mhz
191.168.8.143
735 Mhz
191.168.8.141
735 Mhz
191.168.8.144
796 Mhz
Swiched Ethernet
TimesysOS
RTRMI
RTJVM
TimesysOS
RTRMI
RTJVM
TimesysOS
RTRMI
RTJVM
TimesysOS
RTRMI
RTJVM
TimesysOS
RTRMI
RTJVM
TimesysOS
RTRMI
RTJVM
35. 35
Interferencia temporal en sistema centralizado
0
10
20
30
40
50
60
70
80
1 30000
us
796Mhz-Knoppix 796Mhz-Timesys 735Mhz-RTAI 735Mhz-Timesys
Evaluación empírica
Herramientas 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
Coste
máximo
AMD
796Mhz
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
AMD
796Mhz
Local 996 µs 80 µs
Pentium
735Mhz
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
36. 36
Evaluación empírica
Utilización de prioridades en el servidor. Resultados.
191.168.8.140
735 Mhz
191.168.8.139
735 Mhz
191.168.8.142
735 Mhz
191.168.8.143
735 Mhz
191.168.8.141
735 Mhz
191.168.8.144
796 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
us sin interferencia 1 interferente
saturació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 interferente
saturació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
37. 37
Evaluación empírica
Comportamiento temporal de las técnicas de gestión
de memoria. Resultados.
RTOS
RTRMI RTRMI
Jtime Jtime
cliente
objeto
remoto
735 Mhz
o 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
38. 38
Evaluación empírica
Análisis del consumo de memoria durante
la invocación remota
Memoria consumida en el cliente
0
5000
10000
15000
20000
25000
void
boolean
byte
char
short
int
long
float
double
null
Byte
Short
Integer
Long
Float
Double
Character
Boolean
RtUnRemOb
String()
String(10)
String(25)
String(50)
String(100)
Object[0]
Object[10D]
Object[25D]
Object[50D]
Object[100D]
Vector(0)
Vector(10D)
Vector(25D)
Vector(50D)
Vector(100D
X
bytes
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
cliente
objeto
remoto
735 Mhz
o 796 Mhz
39. 39
Evaluación empírica
Análisis del coste temporal de la invocación remota: latencias.
Resultados
RTOS
RTRMI RTRMI
Jtime Jtime
cliente
objeto
remoto
735 Mhz
o 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 remota
asíncrona
906 μsInvocación remota
síncrona
Coste de la invocación remota síncrona
100
1000
10000
100000
void
boolean
byte
char
short
int
long
float
double
null
Byte
Short
Integer
Long
Float
Double
Character
Boolean
RtUnRemOb
String()
String(10)
String(25)
String(50)
String(100)
Object[0]
Object[10D]
Object[25D]
Object[50D]
Object[100D]
Vector(0)
Vector(10D)
Vector(25D)
Vector(50D)
Vector(100D
X
us
40. 40
Conclusiones
Conclusiones 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 nombres
Interfaces 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
41. 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
42. 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
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