SlideShare una empresa de Scribd logo
1 de 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
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
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
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
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
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
Í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
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
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
10
Estado del arte
Middleware de Infraestructura Java: Comparación
Planificación
Sincronización
Recoleccióndebasura
Cargadinámicadeclases
Inicializacióndeclases
Manejodeeventos
Acceso
Hardware
RTSJ       
RTCore       
PERC  -  - -  
RTJThreads    - - - -
CJThreads  - - - - - 
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
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
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
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
Í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
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
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
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
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
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
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
Í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
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
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
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
Í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
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
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 (topscape_ptr  topmethod_ptr)
free_mem_ptr=topmethod_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
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
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
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
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
Í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
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
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
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
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
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
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
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
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
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
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

Más contenido relacionado

Similar a Tecnicas y extensiones para Java de tiempo real (20)

algorimo distribuidos
algorimo distribuidosalgorimo distribuidos
algorimo distribuidos
 
Seminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring InsightSeminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring Insight
 
Manual practicassd
Manual practicassdManual practicassd
Manual practicassd
 
Java
JavaJava
Java
 
G te c sesion3b- mapreduce
G te c sesion3b- mapreduceG te c sesion3b- mapreduce
G te c sesion3b- mapreduce
 
Arquitectura fisica y logica
Arquitectura fisica y logicaArquitectura fisica y logica
Arquitectura fisica y logica
 
Manual 2014 i 04 lenguaje de programación ii (0870)
Manual 2014 i 04 lenguaje de programación ii (0870)Manual 2014 i 04 lenguaje de programación ii (0870)
Manual 2014 i 04 lenguaje de programación ii (0870)
 
5 lenguaje
5 lenguaje5 lenguaje
5 lenguaje
 
J2 Ee Para Seres Humanos Slides
J2 Ee Para Seres Humanos SlidesJ2 Ee Para Seres Humanos Slides
J2 Ee Para Seres Humanos Slides
 
Remote System Controller with Android technologies
Remote System Controller with Android technologiesRemote System Controller with Android technologies
Remote System Controller with Android technologies
 
Mvc
MvcMvc
Mvc
 
Sacale El Jugo A La Virtualizacion
Sacale El Jugo A La VirtualizacionSacale El Jugo A La Virtualizacion
Sacale El Jugo A La Virtualizacion
 
Framework
FrameworkFramework
Framework
 
Presentación Final Master JAVA UNED 2012
Presentación Final Master JAVA UNED 2012Presentación Final Master JAVA UNED 2012
Presentación Final Master JAVA UNED 2012
 
Lenguaje Java
Lenguaje JavaLenguaje Java
Lenguaje Java
 
Framework
FrameworkFramework
Framework
 
Introdución a aplicaciones web en java
Introdución a aplicaciones web en java Introdución a aplicaciones web en java
Introdución a aplicaciones web en java
 
Ensayo aplicaciones apis
Ensayo aplicaciones apisEnsayo aplicaciones apis
Ensayo aplicaciones apis
 
Portadas
PortadasPortadas
Portadas
 
Patron mvc struts
Patron mvc strutsPatron mvc struts
Patron mvc struts
 

Más de Universidad Carlos III de Madrid (12)

Towards a garbage collector for distributed real-time Java
Towards a garbage collector for distributed real-time JavaTowards a garbage collector for distributed real-time Java
Towards a garbage collector for distributed real-time Java
 
A simple data muling protocol
A simple data muling protocolA simple data muling protocol
A simple data muling protocol
 
Remote Memory Areas for distributed real-time Java
Remote Memory Areas for distributed real-time JavaRemote Memory Areas for distributed real-time Java
Remote Memory Areas for distributed real-time Java
 
Towards a real-time reconfiguration service for distributed Java
Towards a real-time reconfiguration service for distributed JavaTowards a real-time reconfiguration service for distributed Java
Towards a real-time reconfiguration service for distributed Java
 
Fine
FineFine
Fine
 
Basanta jtr2009
Basanta jtr2009Basanta jtr2009
Basanta jtr2009
 
No Heap Remote Objects for Distributed real-time Java
No Heap Remote Objects for Distributed real-time JavaNo Heap Remote Objects for Distributed real-time Java
No Heap Remote Objects for Distributed real-time Java
 
A synchronous scheduling service for distributed real-time Java
A synchronous scheduling service for distributed real-time JavaA synchronous scheduling service for distributed real-time Java
A synchronous scheduling service for distributed real-time Java
 
Simple asynchronous remote invocations for distributed real-time Java
Simple asynchronous remote invocations for distributed real-time JavaSimple asynchronous remote invocations for distributed real-time Java
Simple asynchronous remote invocations for distributed real-time Java
 
Pbasanta@jtres06 extendedportal
Pbasanta@jtres06 extendedportalPbasanta@jtres06 extendedportal
Pbasanta@jtres06 extendedportal
 
Enhancing the region model of RTSJ
Enhancing the region model of RTSJEnhancing the region model of RTSJ
Enhancing the region model of RTSJ
 
2011.jtr.pbasanta.
2011.jtr.pbasanta.2011.jtr.pbasanta.
2011.jtr.pbasanta.
 

Tecnicas y extensiones para Java de tiempo real

  • 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
  • 10. 10 Estado del arte Middleware de Infraestructura Java: Comparación Planificación Sincronización Recoleccióndebasura Cargadinámicadeclases Inicializacióndeclases Manejodeeventos Acceso Hardware RTSJ        RTCore        PERC  -  - -   RTJThreads    - - - - CJThreads  - - - - - 
  • 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 (topscape_ptr  topmethod_ptr) free_mem_ptr=topmethod_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