SlideShare a Scribd company logo
Enhancing OSGi
          with real-time Java support

      Pablo Basanta-Val, Marisol García-Valls,
              and Iria Estévez-Ayres
                mailto:pbasanta@it.uc3m.es


†Jornadas de Tiempo Real 2012- Santander (        )
  Acceptado en Software Practice and Experience (SPE)
Outline
• OSGi and RTSJ
  – Motivation and interesting issues
• TROSGi (real-Time foR OSGi)
  – Architecture: L0, L1, L2
  – API
  – Performance results
• Conclusion and ongoing work




                                        2
Context
• Java programmers may use OSGi for
   – Life-cycle management of Java applications
     called bundles
       • start/stop/update bundles
       • export/lookup/unexport bundles/services
         from the framework
       • Runlevels

• Some pieces work has addressed the provision of real-
  time with OSGi
   – [hybrid approaches]
       • Java for soft-real time + C modules for hard real-time
   – [pure Java approaches]
       • Using RTSJ (i.e., The Real-Time Specification for Java)
                                                    JRT-12         3
Some issues in OSGi and RTSJ integration
• Access to real-time Java facilities
   – I.e. RTSJ and/or DRTSJ
• Improving the predictability of the framework
   – Definition of a real-time bundle
       • Real-time characterization
       • Access/modification of the characterization
       • Backward compatibility
   – Predictability in bundle management
       • Execution environment, security, underlying OS
• New real-time services for OSGi
   – New APIs
• Other real-time improvements on exiting services
   – E.g. Real-time framework, real-time HTTP             4
In this work: TROSGi
• Primary goal:
   – Real-time and OSGi integration
• This presentation
   – Introducing the integration framework
     proposed with RTSJ
       • Integration levels, architecture, and AP

• Outcomes,
   – TROSGi=={real-time for OSGi}




                                                    5
TROSGi: Level 0


                  • Minimal access to real-time Java
                    and OSGi
                  • Changes required from the env.:
                     – javax.realtime.
                     – Real-time operating system (if any)
                     – OSGi should export javax.realtime
                     – Bundles should import
                       javax.realtime




                                                      6
TROSGi: Level 0 – Example (1/2)
 00: import javax.realtime.*;
 01: import org.osgi.framework.*;
 02: public class ExampleRT implements BundleActivator{
 03: BundleContext ctx;
 04: RealtimeThread rt;
 05: public void start(BundleContext context) throws Exception {
 06:       rt=new RealtimeThread(){
 07:        public void run(){
 08:         try{
 09:             do{ System.out.println(“RT hello”);
 10:            RealtimeThread.sleep(new AbsoluteTime(10,0)); //mit=10 ms
 11:           }while (true);
 12:          }catch(Exception e){
 13:             System.out.println(“STOP called: bye, bye”);}
 14:       };
 15:       rt.start(); //Launch the real-time thread
 16: }
 17: public void stop(BundleContext context) throws Exception {
 18:       rt.interrupt(); //Launch an exception
 19: }
 20:.}


                        Listing 1. Example of a bundle activator that
                                starts/stops a real-time thread             7
TROSGi: Level 0 – Example (2/2)


00:   Bundle-Name: Hello RT Threads
01:   Bundle-SymbolicName: es.uc3m.it.drequiem.trosgi.Rtthreads
02:   Bundle-Description: A Hello World bundle for RTSJ
03:   Bundle-ManifestVersion: 2
04:   Bundle-Version: 1.0.0
05:   Bundle-Activator: ExampleRT
06:   Import-Package: org.osgi.framework, javax.realtime

                          Listing 2. Bundle descriptor




                                                                  8
TROSGi: Level 1 –
Real-time characterization service
• Goal:
   – Real-time charaterization
• Solution:
   – Stored in the bundle in an xml file
   – Accessed from the bundle using a
     service




  00: <!--Bundle-Name: Hello RT Threads ->
  01: <schedulable name="RTHello">
  02:    <mit>10000</mit>
  03: </schedulable>
                                             9
TROSGi-Level 1: Example and API
  00:   import javax.realtime.*;
  01:   import org.osgi.framework.*;
  02:   import es.uc3m.it.trosgi.*;
  03:   import org.w3c.dom.*;
  04:   public class ExampleRT implements BundleActivator{
  05:   BundleContext ctx;
  06:   RealtimeThread rt;
  07:   int mit=0;
  08:   public void start(BundleContext context) throws Exception {
  09:      rt=new RealtimeThread(){
  10:        public void run(){
  11:      ServiceReference c_rf1= // Ref to the service
  12:        Context.getServiceReference(“CharacterizationService”);
  13:        RealtimeCharacterizationService client1=
  14:     (RealtimeCharacterizationService) context.getService(c_rf1);
  15:        Bundle bundle=context.getBundle();
  16:        Document doc=client1.getRealtimeCharacterization(bundle);
  17:        NodeListlist nlist=doc.getElementsByTagName("mit");



00: import org.osgi.framework.*;
01: public interface RealtimeCharacterizationService
02:                 extends RealTimeService{
03:   public Document
04:          getRealtimeCharacterization(Bundle b);
05:   public boolean setRealtimeCharacterization(
06:                Bundle bnd, Document doc);
07:}
                                         JTR-12                          10
TROSGi: Level 2 –
Real-time characterization service
• Three new services:
   – Admission controlers
       • Based on RTSJ’s model
   – Fault-tolerance
       • Partiatilly taken from DRTSJ
   – Compositor
       • Inspired in iLAND gained
         experience and
       • DRTSJ’s distributable threads




                                        JTR-12   11
TROSGi: Level 2 – API:
  BundleScheduler, BundleRecover,
  BundleCompositor
00:   import org.osgi.framework.*;
01:   import org.w3c.dom.*;
02:   public interface BundleSchedulerService
03:                   extends RealTimeService{
04:      public boolean setIfFeassible(Bundle bnd);
05:      public boolean removeFromScheduler(Bundle bnd);
06:   }

00: import org.osgi.framework.*;
01: public interface BundleRecoverService
03:                 extends RealTimeService{
04:    public boolean addBundle(Bundle bnd);
05:    public boolean removeBundle(Bundle bnd);
}


00: import org.osgi.framework.*;
01: public interface BundleCompositorService
03:                 extends RealTimeService{
03:    public boolean addComposedBundle(Bundle bnd);
04:    public boolean removeComposedBundle(Bundle bnd);
}


                                            JTR-12         12
Level 2: Common Services API
(inspired in RTSJ’s resource model)f

 00:   <!DOCTYPE resourcemodel[
 01:   <!ELEMENT resourcemodel(bundlescheduler|
 02:          bundlerecover|bundlecompositor)
 03:   <!ELEMENT bundlescheduler(schedulable*)>
 04:    <!ELEMENT schedulable (releaseparameters?,scheduling?)>
 05:      <!ATTLIST alt name (#PCDATA)>
 06:      <!ELEMENT releaseparameters (periodic|sporadic
 07:                                  |aperiodic)>
 08:       <!ELEMENT periodic (start?,period?,cost?,deadline?)>
 09:        <!ELEMENT sporadic (start?,mit?,cost?,deadline?)>
 10:        <!ELEMENT aperiodic>
 11:        <!ELEMENT start (#PCDATA)>
 12:        <!ELEMENT period (#PCDATA)>
 13:        <!ELEMENT cost (#PCDATA)>
 14:        <!ELEMENT deadline (#PCDATA)>
 15:        <!ELEMENT mit (#PCDATA)>
 16:   <!ELEMENT scheduling (priority?)>
 17:       <!ELEMENT priority (#PCDATA)>
 18:   <!ELEMENT bundlerecover (policy+)>
 19:   <!ELEMENT policy (mit?, cost?,deadline?,priority?)>
 20:      <!ATTLIST policy name #PCDATA>
 21:   <!ELEMENT bundlecompositor (alt*)>
 22:    <!ELEMENT alt (block+)>
 23:      <!ATTLIST alt type (#PCDATA)>
 24:    <!ELEMENT block (schedulable*)>
 25:   ]>




                                                  JTR-12          13
Implementation
• Prototype:                                                       Characterization     Scheduler
                                                                      Service            Service

   – Oracle’s JTR                             TROSGi
                                              Services                Recovery
                                                                       Service
                                                                                        Compositor
                                                                                         Service
   – Real-time Linux kernel 2.6.28
                                                                                      Real-Time Java

   – Knopflerfish 3.0                                                                    Access


                                              OSGi
                                              (knopflerfish 3.0)


• TROSGi                                      Real-time Java
                                              (1.5.0_20_Java_RTS-2.2.fcs_b19)
   – RUB admission controller
   – Re-starting fault policy                 Real-time operating system
                                              (2.6.28-3-rt)

   – Multi-constrained recovery                    CPU             Memory
     service
                                                                                         Network
                                                (1.5 Ghz)          (5 Gb)


   – 50 kbytes footprint


                                     JTR-12                                                            14
Level 0     and Level 1 results




          JTR-12                  15
Level 2: BundleScheduler results




• Admission control takes reduced amout of time (see 1st
  figure)
   – 1024 tasks in 50 ms
• Most of the time consumed in XML processing (see 2nd
  figure)
                             JTR-12                        16
Level 2: RecoveryService results
                                                               Soft (99%)
                                                  Worst Case
             Approach                                           Case Cost
                                                   Cost (ms)
                                                                      (ms)
Including Installation Cost
(full installation)                                     257           157
Without Installation Cost (start only)                  177           137




                                         JTR-12                              17
Level 2: Bundle
Compositor results


 Much overhead !!!
 - Compared against the
 scheduler service




                          JTR-12   18
Conclusions
• The definition of real-time OSGi is a rather open issue
   – No standard, nor functional solutions


• TROSGi offers a service-based approach for real-time
  integrations
   – Three integration levels : L0, L1, and L2
   – Tested on RTSJ, and validated with simple implementation services




                                  JTR-12                                 19
Ongoing work

• Two main ongoing issues
  – Improving the implementation
     • Use of DRTSJ, new service implementations, real-time
       security
     • New compositor policies
  – Introducing hooks for other languages
     • C and Ada integration




                                                              20
JTR-12   21

More Related Content

PPT
No Heap Remote Objects for Distributed real-time Java
PPT
A synchronous scheduling service for distributed real-time Java
PPT
Enhancing the region model of RTSJ
PPT
Simple asynchronous remote invocations for distributed real-time Java
PDF
Qt everywhere a c++ abstraction platform
PDF
Towards an Integration of the Actor Model in an FRP Language for Small-Scale ...
No Heap Remote Objects for Distributed real-time Java
A synchronous scheduling service for distributed real-time Java
Enhancing the region model of RTSJ
Simple asynchronous remote invocations for distributed real-time Java
Qt everywhere a c++ abstraction platform
Towards an Integration of the Actor Model in an FRP Language for Small-Scale ...

What's hot (20)

PDF
Java in flames
PDF
Qt Quick in depth
PDF
Slides for a talk on UML Semantics in Nuremberg in 2005
PDF
4th European Lisp Symposium: Jobim: an Actors Library for the Clojure Program...
PPT
2017 10 17_quantum_program_v2
PDF
Marco Cattaneo "Event data processing in LHCb"
PDF
Adaptive Linear Solvers and Eigensolvers
PPTX
java memory management & gc
PDF
Using Flame Graphs
PDF
A Language Support for Exhaustive Fault-Injection in Message-Passing System M...
PDF
Crossing the border with Qt: the i18n system
PDF
Highly Scalable Java Programming for Multi-Core System
PPT
Clockless design language - ilia greenblat
PDF
Tr ns802 11
PDF
The new ehcache 2.0 and hibernate spi
PPT
PPTX
General Purpose Computing using Graphics Hardware
PPTX
Hp rhev-m-driver
PDF
[GEG1] 10.camera-centric engine design for multithreaded rendering
PDF
How long can you afford to Stop The World?
Java in flames
Qt Quick in depth
Slides for a talk on UML Semantics in Nuremberg in 2005
4th European Lisp Symposium: Jobim: an Actors Library for the Clojure Program...
2017 10 17_quantum_program_v2
Marco Cattaneo "Event data processing in LHCb"
Adaptive Linear Solvers and Eigensolvers
java memory management & gc
Using Flame Graphs
A Language Support for Exhaustive Fault-Injection in Message-Passing System M...
Crossing the border with Qt: the i18n system
Highly Scalable Java Programming for Multi-Core System
Clockless design language - ilia greenblat
Tr ns802 11
The new ehcache 2.0 and hibernate spi
General Purpose Computing using Graphics Hardware
Hp rhev-m-driver
[GEG1] 10.camera-centric engine design for multithreaded rendering
How long can you afford to Stop The World?
Ad

Similar to 2011.jtr.pbasanta. (20)

PDF
LibOS as a regression test framework for Linux networking #netdev1.1
PPTX
Towards a garbage collector for distributed real-time Java
PDF
Новый InterSystems: open-source, митапы, хакатоны
PDF
Playing BBR with a userspace network stack
PDF
OpenCensus with Prometheus and Kubernetes
PDF
Hybrid Apps (Native + Web) via QtWebKit
PDF
Grizzly 20080925 V2
PDF
IJCER (www.ijceronline.com) International Journal of computational Engineeri...
PDF
20250617 [KubeCon JP 2025] containerd - Project Update and Deep Dive.pdf
PDF
Postgres clusters
PPTX
Real World Lessons on the Pain Points of Node.JS Application
PDF
Project Reactor Now and Tomorrow
PDF
The Ring programming language version 1.9 book - Part 81 of 210
PPT
Real-time Programming in Java
PDF
GDG Cloud Iasi - Docker For The Busy Developer.pdf
PDF
RTOS implementation
PPTX
Kubernetes Introduction
PDF
Structured concurrency with Kotlin Coroutines
PDF
Microservices and modularity with java
PDF
TorqueBox at GNUnify 2012
LibOS as a regression test framework for Linux networking #netdev1.1
Towards a garbage collector for distributed real-time Java
Новый InterSystems: open-source, митапы, хакатоны
Playing BBR with a userspace network stack
OpenCensus with Prometheus and Kubernetes
Hybrid Apps (Native + Web) via QtWebKit
Grizzly 20080925 V2
IJCER (www.ijceronline.com) International Journal of computational Engineeri...
20250617 [KubeCon JP 2025] containerd - Project Update and Deep Dive.pdf
Postgres clusters
Real World Lessons on the Pain Points of Node.JS Application
Project Reactor Now and Tomorrow
The Ring programming language version 1.9 book - Part 81 of 210
Real-time Programming in Java
GDG Cloud Iasi - Docker For The Busy Developer.pdf
RTOS implementation
Kubernetes Introduction
Structured concurrency with Kotlin Coroutines
Microservices and modularity with java
TorqueBox at GNUnify 2012
Ad

More from Universidad Carlos III de Madrid (7)

PPT
Tecnicas y extensiones para Java de tiempo real
PDF
A simple data muling protocol
PDF
Mejoras a la predictibilidad de la tecnología Java EE
PPTX
Remote Memory Areas for distributed real-time Java
PDF
Towards a real-time reconfiguration service for distributed Java
PPT
Pbasanta@jtres06 extendedportal
Tecnicas y extensiones para Java de tiempo real
A simple data muling protocol
Mejoras a la predictibilidad de la tecnología Java EE
Remote Memory Areas for distributed real-time Java
Towards a real-time reconfiguration service for distributed Java
Pbasanta@jtres06 extendedportal

Recently uploaded (20)

PDF
Paper A Mock Exam 9_ Attempt review.pdf.
PPTX
Onco Emergencies - Spinal cord compression Superior vena cava syndrome Febr...
PDF
medical_surgical_nursing_10th_edition_ignatavicius_TEST_BANK_pdf.pdf
PDF
Computing-Curriculum for Schools in Ghana
PPTX
Orientation - ARALprogram of Deped to the Parents.pptx
PDF
Indian roads congress 037 - 2012 Flexible pavement
PPTX
202450812 BayCHI UCSC-SV 20250812 v17.pptx
PDF
Hazard Identification & Risk Assessment .pdf
PPTX
Cell Types and Its function , kingdom of life
PPTX
Final Presentation General Medicine 03-08-2024.pptx
PPTX
Unit 4 Skeletal System.ppt.pptxopresentatiom
PPTX
UNIT III MENTAL HEALTH NURSING ASSESSMENT
PPTX
Introduction-to-Literarature-and-Literary-Studies-week-Prelim-coverage.pptx
PDF
احياء السادس العلمي - الفصل الثالث (التكاثر) منهج متميزين/كلية بغداد/موهوبين
PDF
SOIL: Factor, Horizon, Process, Classification, Degradation, Conservation
PPTX
Chinmaya Tiranga Azadi Quiz (Class 7-8 )
PDF
Practical Manual AGRO-233 Principles and Practices of Natural Farming
PPTX
A powerpoint presentation on the Revised K-10 Science Shaping Paper
PDF
Weekly quiz Compilation Jan -July 25.pdf
PPTX
Lesson notes of climatology university.
Paper A Mock Exam 9_ Attempt review.pdf.
Onco Emergencies - Spinal cord compression Superior vena cava syndrome Febr...
medical_surgical_nursing_10th_edition_ignatavicius_TEST_BANK_pdf.pdf
Computing-Curriculum for Schools in Ghana
Orientation - ARALprogram of Deped to the Parents.pptx
Indian roads congress 037 - 2012 Flexible pavement
202450812 BayCHI UCSC-SV 20250812 v17.pptx
Hazard Identification & Risk Assessment .pdf
Cell Types and Its function , kingdom of life
Final Presentation General Medicine 03-08-2024.pptx
Unit 4 Skeletal System.ppt.pptxopresentatiom
UNIT III MENTAL HEALTH NURSING ASSESSMENT
Introduction-to-Literarature-and-Literary-Studies-week-Prelim-coverage.pptx
احياء السادس العلمي - الفصل الثالث (التكاثر) منهج متميزين/كلية بغداد/موهوبين
SOIL: Factor, Horizon, Process, Classification, Degradation, Conservation
Chinmaya Tiranga Azadi Quiz (Class 7-8 )
Practical Manual AGRO-233 Principles and Practices of Natural Farming
A powerpoint presentation on the Revised K-10 Science Shaping Paper
Weekly quiz Compilation Jan -July 25.pdf
Lesson notes of climatology university.

2011.jtr.pbasanta.

  • 1. Enhancing OSGi with real-time Java support Pablo Basanta-Val, Marisol García-Valls, and Iria Estévez-Ayres mailto:pbasanta@it.uc3m.es †Jornadas de Tiempo Real 2012- Santander ( ) Acceptado en Software Practice and Experience (SPE)
  • 2. Outline • OSGi and RTSJ – Motivation and interesting issues • TROSGi (real-Time foR OSGi) – Architecture: L0, L1, L2 – API – Performance results • Conclusion and ongoing work 2
  • 3. Context • Java programmers may use OSGi for – Life-cycle management of Java applications called bundles • start/stop/update bundles • export/lookup/unexport bundles/services from the framework • Runlevels • Some pieces work has addressed the provision of real- time with OSGi – [hybrid approaches] • Java for soft-real time + C modules for hard real-time – [pure Java approaches] • Using RTSJ (i.e., The Real-Time Specification for Java) JRT-12 3
  • 4. Some issues in OSGi and RTSJ integration • Access to real-time Java facilities – I.e. RTSJ and/or DRTSJ • Improving the predictability of the framework – Definition of a real-time bundle • Real-time characterization • Access/modification of the characterization • Backward compatibility – Predictability in bundle management • Execution environment, security, underlying OS • New real-time services for OSGi – New APIs • Other real-time improvements on exiting services – E.g. Real-time framework, real-time HTTP 4
  • 5. In this work: TROSGi • Primary goal: – Real-time and OSGi integration • This presentation – Introducing the integration framework proposed with RTSJ • Integration levels, architecture, and AP • Outcomes, – TROSGi=={real-time for OSGi} 5
  • 6. TROSGi: Level 0 • Minimal access to real-time Java and OSGi • Changes required from the env.: – javax.realtime. – Real-time operating system (if any) – OSGi should export javax.realtime – Bundles should import javax.realtime 6
  • 7. TROSGi: Level 0 – Example (1/2) 00: import javax.realtime.*; 01: import org.osgi.framework.*; 02: public class ExampleRT implements BundleActivator{ 03: BundleContext ctx; 04: RealtimeThread rt; 05: public void start(BundleContext context) throws Exception { 06: rt=new RealtimeThread(){ 07: public void run(){ 08: try{ 09: do{ System.out.println(“RT hello”); 10: RealtimeThread.sleep(new AbsoluteTime(10,0)); //mit=10 ms 11: }while (true); 12: }catch(Exception e){ 13: System.out.println(“STOP called: bye, bye”);} 14: }; 15: rt.start(); //Launch the real-time thread 16: } 17: public void stop(BundleContext context) throws Exception { 18: rt.interrupt(); //Launch an exception 19: } 20:.} Listing 1. Example of a bundle activator that starts/stops a real-time thread 7
  • 8. TROSGi: Level 0 – Example (2/2) 00: Bundle-Name: Hello RT Threads 01: Bundle-SymbolicName: es.uc3m.it.drequiem.trosgi.Rtthreads 02: Bundle-Description: A Hello World bundle for RTSJ 03: Bundle-ManifestVersion: 2 04: Bundle-Version: 1.0.0 05: Bundle-Activator: ExampleRT 06: Import-Package: org.osgi.framework, javax.realtime Listing 2. Bundle descriptor 8
  • 9. TROSGi: Level 1 – Real-time characterization service • Goal: – Real-time charaterization • Solution: – Stored in the bundle in an xml file – Accessed from the bundle using a service 00: <!--Bundle-Name: Hello RT Threads -> 01: <schedulable name="RTHello"> 02: <mit>10000</mit> 03: </schedulable> 9
  • 10. TROSGi-Level 1: Example and API 00: import javax.realtime.*; 01: import org.osgi.framework.*; 02: import es.uc3m.it.trosgi.*; 03: import org.w3c.dom.*; 04: public class ExampleRT implements BundleActivator{ 05: BundleContext ctx; 06: RealtimeThread rt; 07: int mit=0; 08: public void start(BundleContext context) throws Exception { 09: rt=new RealtimeThread(){ 10: public void run(){ 11: ServiceReference c_rf1= // Ref to the service 12: Context.getServiceReference(“CharacterizationService”); 13: RealtimeCharacterizationService client1= 14: (RealtimeCharacterizationService) context.getService(c_rf1); 15: Bundle bundle=context.getBundle(); 16: Document doc=client1.getRealtimeCharacterization(bundle); 17: NodeListlist nlist=doc.getElementsByTagName("mit"); 00: import org.osgi.framework.*; 01: public interface RealtimeCharacterizationService 02: extends RealTimeService{ 03: public Document 04: getRealtimeCharacterization(Bundle b); 05: public boolean setRealtimeCharacterization( 06: Bundle bnd, Document doc); 07:} JTR-12 10
  • 11. TROSGi: Level 2 – Real-time characterization service • Three new services: – Admission controlers • Based on RTSJ’s model – Fault-tolerance • Partiatilly taken from DRTSJ – Compositor • Inspired in iLAND gained experience and • DRTSJ’s distributable threads JTR-12 11
  • 12. TROSGi: Level 2 – API: BundleScheduler, BundleRecover, BundleCompositor 00: import org.osgi.framework.*; 01: import org.w3c.dom.*; 02: public interface BundleSchedulerService 03: extends RealTimeService{ 04: public boolean setIfFeassible(Bundle bnd); 05: public boolean removeFromScheduler(Bundle bnd); 06: } 00: import org.osgi.framework.*; 01: public interface BundleRecoverService 03: extends RealTimeService{ 04: public boolean addBundle(Bundle bnd); 05: public boolean removeBundle(Bundle bnd); } 00: import org.osgi.framework.*; 01: public interface BundleCompositorService 03: extends RealTimeService{ 03: public boolean addComposedBundle(Bundle bnd); 04: public boolean removeComposedBundle(Bundle bnd); } JTR-12 12
  • 13. Level 2: Common Services API (inspired in RTSJ’s resource model)f 00: <!DOCTYPE resourcemodel[ 01: <!ELEMENT resourcemodel(bundlescheduler| 02: bundlerecover|bundlecompositor) 03: <!ELEMENT bundlescheduler(schedulable*)> 04: <!ELEMENT schedulable (releaseparameters?,scheduling?)> 05: <!ATTLIST alt name (#PCDATA)> 06: <!ELEMENT releaseparameters (periodic|sporadic 07: |aperiodic)> 08: <!ELEMENT periodic (start?,period?,cost?,deadline?)> 09: <!ELEMENT sporadic (start?,mit?,cost?,deadline?)> 10: <!ELEMENT aperiodic> 11: <!ELEMENT start (#PCDATA)> 12: <!ELEMENT period (#PCDATA)> 13: <!ELEMENT cost (#PCDATA)> 14: <!ELEMENT deadline (#PCDATA)> 15: <!ELEMENT mit (#PCDATA)> 16: <!ELEMENT scheduling (priority?)> 17: <!ELEMENT priority (#PCDATA)> 18: <!ELEMENT bundlerecover (policy+)> 19: <!ELEMENT policy (mit?, cost?,deadline?,priority?)> 20: <!ATTLIST policy name #PCDATA> 21: <!ELEMENT bundlecompositor (alt*)> 22: <!ELEMENT alt (block+)> 23: <!ATTLIST alt type (#PCDATA)> 24: <!ELEMENT block (schedulable*)> 25: ]> JTR-12 13
  • 14. Implementation • Prototype: Characterization Scheduler Service Service – Oracle’s JTR TROSGi Services Recovery Service Compositor Service – Real-time Linux kernel 2.6.28 Real-Time Java – Knopflerfish 3.0 Access OSGi (knopflerfish 3.0) • TROSGi Real-time Java (1.5.0_20_Java_RTS-2.2.fcs_b19) – RUB admission controller – Re-starting fault policy Real-time operating system (2.6.28-3-rt) – Multi-constrained recovery CPU Memory service Network (1.5 Ghz) (5 Gb) – 50 kbytes footprint JTR-12 14
  • 15. Level 0 and Level 1 results JTR-12 15
  • 16. Level 2: BundleScheduler results • Admission control takes reduced amout of time (see 1st figure) – 1024 tasks in 50 ms • Most of the time consumed in XML processing (see 2nd figure) JTR-12 16
  • 17. Level 2: RecoveryService results Soft (99%) Worst Case Approach Case Cost Cost (ms) (ms) Including Installation Cost (full installation) 257 157 Without Installation Cost (start only) 177 137 JTR-12 17
  • 18. Level 2: Bundle Compositor results Much overhead !!! - Compared against the scheduler service JTR-12 18
  • 19. Conclusions • The definition of real-time OSGi is a rather open issue – No standard, nor functional solutions • TROSGi offers a service-based approach for real-time integrations – Three integration levels : L0, L1, and L2 – Tested on RTSJ, and validated with simple implementation services JTR-12 19
  • 20. Ongoing work • Two main ongoing issues – Improving the implementation • Use of DRTSJ, new service implementations, real-time security • New compositor policies – Introducing hooks for other languages • C and Ada integration 20
  • 21. JTR-12 21