Date post: | 23-Jul-2015 |
Category: |
Documents |
Upload: | universidad-carlos-iii-de-madrid |
View: | 60 times |
Download: | 3 times |
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
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
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)
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 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”
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 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
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
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 - - - - -
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
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
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
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
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
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
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
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
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
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
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
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 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
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>
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. . .
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 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
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;
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)
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
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
?
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
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
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
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
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
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
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
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
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
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 ValDirectora: Marisol García Valls
Universidad Carlos III de Madrid
Dpto. De Ingeniería de Telemática