Java For Real-Time Enterprise Systems - Object Management Group

33
Java For Real-Time Enterprise Systems Delivering the Benefits of Java to the world of Real-Time distributed object computing Simon McQueen CORBA Technical Lead July 2006

Transcript of Java For Real-Time Enterprise Systems - Object Management Group

Page 1: Java For Real-Time Enterprise Systems - Object Management Group

Java For Real-Time Enterprise Systems

Delivering the Benefits of Java to the world of Real-Time distributed object computing

Simon McQueenCORBA Technical Lead

July 2006

Page 2: Java For Real-Time Enterprise Systems - Object Management Group

1The Case for Java in Enterprise Real-Time Systems

Changes in scale complexity and scope of Real-Time systems are forcing the Real-time community to re-think the way in which it develops software

Elements of Real-Time programming are now finding their way into applications that had never previously required Real-Time programming expertise

It is increasingly difficult to view Real-Time developers and business application developers as members of two separate communities

Ways have to be found to build bridges between the two communities to facilitate the smooth flow of information from the smallest embedded device to the largest enterprise information systems and vice versa

These trends make it necessary for the Real-Time community to adopt Real-Time platforms that provide higher level abstractions and advanced tools for functional and temporal programming

Page 3: Java For Real-Time Enterprise Systems - Object Management Group

2Benefits of Real-Time CORBA

CORBA is well established as a technology for integrating diverse systems

Used extensively for mission and business critical applications in many industry sectors such as defense, telecommunications and manufacturing

With the publication of the Real-Time CORBA Specification, the OMG extended the benefits of CORBA to the Real-Time domain

The standard addresses the issues of end-to-end predictability across CORBA systems and provides a solution in terms of priority control, synchronization and resource control

Until very recently developers have been forced to implement their applications in programming languages such as C, C++ and Adathat can support the temporal constraints of Real-Time systems

Page 4: Java For Real-Time Enterprise Systems - Object Management Group

3What is OpenFusion RTOrb Java Edition ?

OpenFusion RTOrb Java Edition is PrismTech’s Real-Time CORBA compliant ORB for the Java platform

OpenFusion RTOrb Java Edition is the first COTS Java ORB that can be used in “hard” Real-Time systems

Made possible through the recent emergence of RTJVM implementations based on the Real-Time Specification for Java (RTSJ)

e.g Sun’s Java Real-Time System v1.0 (formally known as the Mackinac JVM) & IBM’s J9 JVM

OpenFusion RTOrb Java Edition can provide a unified solution for different needs and uses, supporting both hard Real-Time systems and non Real-Time Enterprise applications in a single ORB

Page 5: Java For Real-Time Enterprise Systems - Object Management Group

4OpenFusion RTOrb Java Edition

ObjectivesProve practicality of Real-Time CORBA in a Java environmentBuild a single Enterprise ORB implementation that can in both Real-Time and non Real-Time systems

Support for SUN’s Real-Time System for Java (formally Mackinac) JVM running on Solaris 10 and IBM’s J9 on LinuxUse in non RT environment with JSE JVMs

Providing support for CORBA 3.0 and Real-Time CORBA v1.2 standards

Including full enterprise features set, including:CORBA Messaging – QoS, AMI, Portable Interceptors, ValueTypes, Pluggable transports

Performance - high throughput, low latency – as good as JacORB or better100% interoperability with TAO & JacORBReal-time acceptance criterion

Measured jitter <1mS in test environment

Page 6: Java For Real-Time Enterprise Systems - Object Management Group

5Target Market Characteristics

Systems requiring advanced software tools for both functional and temporal programming

Customers who typically have large and complex software integration problems to solve

Systems where Java is the obvious best long term language choice

Mission or business critical applications where a hybrid architecture consisting of Real-Time and Enterprise level CORBA functionality is a requirement

Page 7: Java For Real-Time Enterprise Systems - Object Management Group

6Example Application Domains

Large Scale Defense IntegrationC4i – wide range of Command Control Computers Communication and Intelligence Systems e.g. Combat Management Systems, Weapon Control Systems

Telecommunications and NetworkingBusiness management applicationsOperations support systemsCall controlIntelligent networkingSTN/Internet convergenceIntegrated network managementCall and multimedia processingVoice Over IP (VOIP) telephony

AerospaceAir traffic management

Saving or displaying management dataCommand interpretation of inputs from a user interface

ManufacturingIndustrial controllersAutomotive controllersIndustrial robotics

Page 8: Java For Real-Time Enterprise Systems - Object Management Group

7So Why Can’t Java Be used in Real-Time Systems ?

Use of Java in Real-Time systems is limited by its inability to predictably control the temporal execution of applications due to:

Unpredictable latencies introduced by automatic memory management (garbage collectors)Inadequate scheduling controlUnpredictable synchronization delaysVery coarse timer supportNo asynchronous event processingNo "safe" asynchronous transfer of control

Page 9: Java For Real-Time Enterprise Systems - Object Management Group

8The Real-Time Specification for Java

The Real-Time Specification for Java (RTSJ), developed through the Java Community Process by the Real-Time Expert Group

Objective to enable the real-time embedded software developer to use the Java programming language where predictable/hard real-time behaviour is a must

Specified as a set of extensions to the Java Technology Model

For example, the RTSJ shall not prevent existing properly written non real-time Java programs from executing on implementations of the RTSJ

Page 10: Java For Real-Time Enterprise Systems - Object Management Group

9Key Extensions to the Java Technology Model

The RTSJ supports the following important new features which make Java suitable for use in “Hard” Real-Time systems:

New Real-Time Threads, Scheduling, and Synchronization New Memory Management SchemesAsynchronous Events Handling & Asynchronous Transfer of Control Time & Timers Direct Access to Physical Memory

Page 11: Java For Real-Time Enterprise Systems - Object Management Group

10ORB Design Challenges

Architecture must support dual mode of operation, full RTSJ/Real-Time CORBA mode and conventional ORB modeFull Enterprise ORB functionality must also be available in RTSJ mode In RTSJ mode ORB designed to use No Heap Real-time Threads, Scoped & Immortal Memory throughout the call chainUsing RTSJ memory models is non trivial and complex

Careful decisions have to be made about which parts of the ORB are long lived and run in Immortal memory and which parts of the ORB are more dynamic and can run in Scoped memory

NHRT threads typically allocated in immortal memory, with critical sections of code executing in scoped memory

Memory assignment rules must be strictly followed so as to avoid potential dangling references

Exceptions cannot be thrown in scoped memory and caught in a different memory areas

Use of specific design patterns required to propagate exception information from ORB to the application

Note: ORB design issues also highlight the same issues faced by the application programmer!

Page 12: Java For Real-Time Enterprise Systems - Object Management Group

11Development Approach

An experimental approach with three phases:

1. Obtain benchmark figures from a C socket to socket example

2. Repeat socket example in JavaIsolate contributors to jitter

3. Repeat tests with PrismTech’s OpenFusion RTOrb Java EditionDevelop tests using RT threads, NHRT Threads, Scoped and Immortal memory

Page 13: Java For Real-Time Enterprise Systems - Object Management Group

12Test Application

High Priority Thread

Low Priority Thread

Period (30mS nominal)

Duration

Sleep (2mS)

Page 14: Java For Real-Time Enterprise Systems - Object Management Group

13Test Configuration

Client Server

SwitchSwitch

100base T Network

Connection

100base T Network

Connection

Physical Machine 1 Physical Machine 2

Ultra 60 WorkstationSolaris 9

Sun RTJS JVM

Sunfire V440Solaris 9

Sun RTJS JVM

Networked client and server

Page 15: Java For Real-Time Enterprise Systems - Object Management Group

14

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000

Sample

Tim

e (m

S)C Client Server, 1 High Priority Thread

Frequenc y

0

2000

4000

6000

8000

10000

12000

0.3 0.4 0.5 0.6 0.7 More

T im e (m S)

No

of O

ccur

ence

s

Page 16: Java For Real-Time Enterprise Systems - Object Management Group

15Co-located Java Sockets

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000

Sample

Tim

e (m

S)

Last 10K results of a 20K run

GC logged over run – only minor events recorded

All results within 0.6mS

0

2000

4000

6000

8000

10000

12000

0.2 0.3 0.4 0.5 0.6 0.7 0.8 More

Time (mS)

Freq

uenc

y

Page 17: Java For Real-Time Enterprise Systems - Object Management Group

16Networked Java Sockets

Socket Only, Duration

0

0.5

1

1.5

2

2.5

3

3.5

4

4.5

0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000

Samples

Tim

e (m

S)

Series1

Last 10000 samples from a 50000 sample run.

Heap size 256MB

No Garbage Collection recorded during entire run

95% of results within 0.1mS

Only 0.03% of results outside 0.5mS

Indicates what can be achieved

Page 18: Java For Real-Time Enterprise Systems - Object Management Group

17Sockets and Heavy GC

Socket Only - Heavy GC

0

50

100

150

200

250

300

350

0 5000 10000 15000 20000 25000 30000

Sample

Tim

e (m

S)

DurationGC events

Last 30K samples of 40K run

Heap size 4MB

Dramatic increase in GC effects

Page 19: Java For Real-Time Enterprise Systems - Object Management Group

18Socket only, Heavy GC

Socket Only - Heavy GC

0.5

0.6

0.7

0.8

0.9

1

1.1

1.2

1.3

1.4

1.5

0 5000 10000 15000 20000 25000 30000

Sample

Tim

e (m

S)DurationGC events

Page 20: Java For Real-Time Enterprise Systems - Object Management Group

19Real-Time Predictability – Low Jitter < 1mS

0

1

2

3

0 5000 10000 15000 20000 25000 30000

Sample

Tim

e (m

S)

Results showing the roundtrip CORBA call invocation times for a high priority thread with one or more low priority threads running concurrently

Page 21: Java For Real-Time Enterprise Systems - Object Management Group

20Distribution of Duration

0

10

20

30

40

50

60

70

80

90

100

2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3 More

One Hi Priority task

One Low Priority task

0

10

20

30

40

50

60

70

80

90

2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3 More

One Hi Priority task only

Page 22: Java For Real-Time Enterprise Systems - Object Management Group

21RT ORB, High and Low Priority Tasks

Absolute Period

29.994

29.996

29.998

30

30.002

30.004

30.006

30.008

0 5000 10000 15000 20000 25000 30000

Sample

Tim

e (m

S)

Page 23: Java For Real-Time Enterprise Systems - Object Management Group

22Garbage Collection Log - Server

Server Side GC Log

0

0.5

1

1.5

2

2.5

3

3.5

4

0 200 400 600 800 1000

Elapsed Time (Secs)

Dur

atio

n (m

S)

Page 24: Java For Real-Time Enterprise Systems - Object Management Group

23Garbage Collection Logs - Client

Client Side GC Log

0

5

10

15

20

25

30

35

40

45

0 100 200 300 400 500 600 700 800 900 1000

Elapsed Time (Secs)

Dur

atio

n (m

S)

Page 25: Java For Real-Time Enterprise Systems - Object Management Group

24Non-Real-Time ORB and JVM

0

50

100

150

200

250

300

350

400

450

0 100 200 300 400 500 600 700 800 900 1000

Sample

Tim

e (m

S)

0

50

100

150

200

250

1 2 3 4 5 6 7 8 9 10 20 30 40 50More

Duration (mS)

Freq

uenc

y

Page 26: Java For Real-Time Enterprise Systems - Object Management Group

25Excellent Performance – Low Latency, High Throughput

Client to server roundtrip invocation times for a series of calls with increasing payload. All measurements carried out on Solaris 10, single host inter-process communication, using

JDK 1.4.

Page 27: Java For Real-Time Enterprise Systems - Object Management Group

26OpenFusion RTOrb Java Edition Architecture & Features

IDLCompiler

IDLCompiler

ServerServer

IDLIDL

ClientClient

IDLIDL ORB InterfaceORB

Interface

GIOPGIOP

Pluggable Transports Pluggable Transports

IIOPIIOP MIOPMIOPSSLIOPSSLIOP

RT CORBART CORBA

PortableInterceptorsPortable

InterceptorsCORBA

MessagingCORBA

Messaging

Pluggable POAPluggable POA

RT-POART-POAM-POAM-POA

RT JVM – RT Threads, NHRT Threads,Scoped & Immortal Memory

RT JVM – RT Threads, NHRT Threads,Scoped & Immortal Memory

SHMIOPSHMIOP

OpenFusion CORBA Services – Naming, Trading, Notification & LogOpenFusion CORBA Services – Naming, Trading, Notification & Log

InterfaceRepositoryInterface

Repository

ImplementationRepository

ImplementationRepository

ThreadingModels

ThreadingModels OBVOBV

ORB Core

•CORBA 3.0 ORB . Including features such as:

•IDL to Java compiler, GIOP 1.3, Full POA, Dynamic ANY, Portable Interceptors, CORBA Messaging (AMI, QoS), Value Types

•Support for OMG’s Real-Time CORBA v1.2 specification. Including features such as:

•RT ORB, RT POA, RT Priority and Mappings, RT Current, RT Priority Model –Client propagated and Server declared, Priority Transforms, Mutex , Thread Pools, PrivateConnection Policy, Invocation Timeout

•Pluggable transports – support for OMG’s Extensible Transport Framework (ETF)•Common Object Services -OpenFusion Naming, Trading & Notification Services•JVM - Sun Real-Time Java System v1.0, JDK 1.4, IBM J9•Operating System Support - Solaris 10, Linux, LynxOS

Page 28: Java For Real-Time Enterprise Systems - Object Management Group

27Resulting Benefits

First commercial CORBA implementation that makes Real-Time Java programming in a distributed environment possibleEnables Real-Time system developers to leverage the benefits of the Java platform – write once run anywhere portability, ease of use and securityCompliant with key standards from the OMG and the JCP:

CORBA 3 and Real-Time CORBA v1.2 SpecificationsRTSJ (Real-time Specification for Java v1.0)

Full enterprise level CORBA functionality Can be used as a Real-time ORB or general purpose Enterprise solution or

bothFor systems with a mix of uses (both RT and non-RT) provides a single ORB solutionSingle ORB solution minimises ORB interoperability issuesDevelopers only have to learn how to use one ORB

Low jitter (< 1ms) High performance (excellent latency and throughput characteristics, as good or better than other Java ORBs)Guaranteed interoperability with TAO and JacORB

Page 29: Java For Real-Time Enterprise Systems - Object Management Group

28Future Direction

ORB implementation that can utilize JVMs that provide support for Real-Time garbage collectors e.g. IBM J9

May facilitate Real-Time CORBA in a Java environment but without the need for application developers to use complex RTSJ memory modelsWill enable the application developers to once again leverage one of the key benefits of the Java Programming Model –namely “ease of use”Extensive benchmarking required in order to determine what class of Real-Time system can be supported, “soft” or “hard” or bothAdditional standardization works required at OMG in order to provide a Java language binding more suitable for Real-Time systems

Support for object caching in order to reduce amount of garbage generated in standard stubs and skeletonsSupport for specific RTSJ features such as scoped memory in the generated binding

Page 30: Java For Real-Time Enterprise Systems - Object Management Group

29Networked Sockets with Real-Time Garbage Collection

Page 31: Java For Real-Time Enterprise Systems - Object Management Group

30OpenFusion RTOrb Java Edition Release Schedule

Jan Feb March April May June July Aug

OpenFusion RT for Java v1.1

!CORBA 3.0 ORB! IDL to Java binding!Full POA Interface!Full ORB Interface!CORBA Messaging

! Qos!Interface Repository!GIOP 1.2 (without BI DIR)!ValueTypes!Portable Interceptors including Object Reference Templates

!Support for RT CORBA v1.2!RT ORB!RT POA!RT Priority and Mappings!RT Current!RT Priority Model – Client propagated and Server declared!Priority Transforms!Mutex !Thread Pools!PrivateConnection Policy!Invocation Timeout

!COS – OpenFusion Naming Service!RTJVM- Sun Real-time Java System v1.0, JDK v1.4!OS – Solaris 10, Linux (part of ongoing strategy to provide a single Java ORB solution for both RT and non RT apps)!Docs – RT for Java User Documentation!ORB Interoperability – tested and proven with TAO and JacORB!DDS Interoperability – tested and proven with SPLICE DDS

GA

OpenFusion RT for Java v1.0

!In addition to the functionality provided in OpenFusion RT for Java v1.0

!DynamicAny!CORBA Messaging – AMI!Extensible Transport Framework Priority Banded Connections

!COS – OpenFusion Trader Service

GAOpenFusion RT for Java v1.2

!In addition to the functionality provided in OpenFusion RT for Java v1.1

!RTJVM – IBM J9 (dependent onJVMavailability)

GA

Page 32: Java For Real-Time Enterprise Systems - Object Management Group

31Summary and Conclusions

Real-Time CORBA in a Java environment is now a reality

OpenFusion Real-Time Java ORB can provide a single unified ORB solution for use in both Real-Time (hard & soft) and Non Real-time systems

Obvious application of this technology for complex applications comprising significant non-real-time logic and both soft and/or hard real-time logic where Java is the preferred long term implementation language

The impact of GC can be eliminated by using NHRT threads, scoped and immortal memory

Writing Real-Time CORBA applications in Java can be complex and certainly requires careful use of RTSJ features such as scoped and immortal memory as well as Real-Time/NHRT threads

Real-Time garbage collectors may offer a good potential compromise for support of certain classes of RT system – helping make developing Real-Time applications in Java less complex

Page 33: Java For Real-Time Enterprise Systems - Object Management Group

32Further Information

For further information about OpenFusion RTOrb Java Edition

Visit PrismTech’s Website at:

http://www.prismtech.com

E-mail PrismTech:

[email protected]