high performance java software
TRANSCRIPT
![Page 1: High Performance Java Software](https://reader035.vdocument.in/reader035/viewer/2022081622/613d0d45736caf36b758bdb4/html5/thumbnails/1.jpg)
1
High Performance Java™ Software
Comparing a Common Designin Three Languages
Kevin BuesingField Applications EngineerObjective Interface Systemshttp://www.ois.com
![Page 2: High Performance Java Software](https://reader035.vdocument.in/reader035/viewer/2022081622/613d0d45736caf36b758bdb4/html5/thumbnails/2.jpg)
2
Presentation Objectives
Compare the performance of a single middleware design implemented in Java, C++, and Ada 95.Compare performance of using C sockets vs. Java sockets vs. JNI C sockets.Compare multiple middleware designs implemented in various languages.
![Page 3: High Performance Java Software](https://reader035.vdocument.in/reader035/viewer/2022081622/613d0d45736caf36b758bdb4/html5/thumbnails/3.jpg)
3
High Performance Java Software
Foundation KnowledgeComparing SocketsComparing One Design Implemented in
Multiple LanguagesComparing Different ORBsLessons LearnedSummary
![Page 4: High Performance Java Software](https://reader035.vdocument.in/reader035/viewer/2022081622/613d0d45736caf36b758bdb4/html5/thumbnails/4.jpg)
4
High Performance Java Software
Foundation KnowledgeComparing SocketsComparing One Design Implemented in
Multiple LanguagesComparing Different ORBsLessons LearnedSummary
![Page 5: High Performance Java Software](https://reader035.vdocument.in/reader035/viewer/2022081622/613d0d45736caf36b758bdb4/html5/thumbnails/5.jpg)
5
Objective Interface Perspective
• Vendor of communications software for:─ Real-time and embedded systems─ High-performance enterprise systems
• Common themes─ Invest in long-term technologies─ An extreme fixation on performance─ High reliability requirements─ Wide platform support (over 500 binary platforms)─ Committed to standards (OMG, Open Group, JCP)
![Page 6: High Performance Java Software](https://reader035.vdocument.in/reader035/viewer/2022081622/613d0d45736caf36b758bdb4/html5/thumbnails/6.jpg)
6
Technology Used for Comparison
• ORBexpress™: High Performance CORBA• One design
─ Predictable and oriented for performance─ Replaceable transports─ Desktop, server, real-time and embedded systems
• Three ORBs implemented in their native languages─ Ada ORB written in Ada─ C++ ORB written in C++─ Java ORB written in Java─ Not language bindings─ Common design and architecture
![Page 7: High Performance Java Software](https://reader035.vdocument.in/reader035/viewer/2022081622/613d0d45736caf36b758bdb4/html5/thumbnails/7.jpg)
7
Transport Comparison
• With ORBexpress the transport itself is typically the bottleneck─ Is using the JNI to access C sockets faster than the
Java Socket class?─ Pluggable transport API in ORBexpress makes this
easy to test─ JNI can require copies
─Depends on JVM─JVM’s that force extra copies in either the socket
class or JNI interface preclude high bandwidth utilization
• Objective Interface tests run on─ 1.7 ghz Pentium 4─ Microsoft Windows XP
C++ Sockets vs. Java Sockets vs. JNI to C++
![Page 8: High Performance Java Software](https://reader035.vdocument.in/reader035/viewer/2022081622/613d0d45736caf36b758bdb4/html5/thumbnails/8.jpg)
8
Common Architecture ORB Comparison
• Oneway─ Data sent from the client to server─ Time to write data to the socket
• Twoway─ Data sent from the client to the server with reply.─ Time to send data to and receive reply from server
ORBexpress: Java vs. Ada vs. C++
![Page 9: High Performance Java Software](https://reader035.vdocument.in/reader035/viewer/2022081622/613d0d45736caf36b758bdb4/html5/thumbnails/9.jpg)
9
Comparing Middleware Implementations
• Scope of analysis─ Raw transport performance
─ Java Sockets─ JNI C Sockets─C Sockets
─ ORBexpress performance─Ada 95─C++─ Java
─ Comparisons to other ORBs─Sun JDK─ TAO (C++)─ORBexpress for Java─ORBexpress for C++
![Page 10: High Performance Java Software](https://reader035.vdocument.in/reader035/viewer/2022081622/613d0d45736caf36b758bdb4/html5/thumbnails/10.jpg)
10
Benchmarks Sources
• Independent Studies─ Lockheed Martin, ATL - Guatam Thaker
─http://www.atl.external.lmco.com/projects/QoS/─ Boeing Phantom Works - DII COE Study
─http://www.ois.com/resources/corb-10-overview.asp
• Objective Interface internal research
![Page 11: High Performance Java Software](https://reader035.vdocument.in/reader035/viewer/2022081622/613d0d45736caf36b758bdb4/html5/thumbnails/11.jpg)
11
Hardware Used
• Lockheed Martin Advanced Technology Labs─ 933 MHz Dual Pentium III ─ Linux
• Objective Interface─ 1.7 GHz Pentium M─ Windows XP
![Page 12: High Performance Java Software](https://reader035.vdocument.in/reader035/viewer/2022081622/613d0d45736caf36b758bdb4/html5/thumbnails/12.jpg)
12
Software Used
• Linux kernel versions─ Lockheed Martin tests
─Version 2.4.20-13• Microsoft Windows XP
─ Transport and common architecture comparisons
• ORBexpress versions used─ Version 2.5.0 for Java─ Version 2.5.1 for C++─ Version 2.4.6 for Ada
• Objective Interface’s Bench and BenchTransportdemos used in language and transport comparisons
![Page 13: High Performance Java Software](https://reader035.vdocument.in/reader035/viewer/2022081622/613d0d45736caf36b758bdb4/html5/thumbnails/13.jpg)
13
Pitfalls of Benchmarks
• “In the computer industry there are three kinds of lies. Lies, damn lies, and benchmarks!”─ “Lying” in benchmarks is frequently unintentional
and the result of invalid comparisons─ “What’s the difference between a used car
salesman and a software salesman?”─ “The used car salesman knows when he is lying.”
• Make sure to make a valid comparisons─ Linux kernel revisions can have dramatic effects on
network performance─ The performance difference between Linux kernel
versions was greater than the middleware!
![Page 14: High Performance Java Software](https://reader035.vdocument.in/reader035/viewer/2022081622/613d0d45736caf36b758bdb4/html5/thumbnails/14.jpg)
14
Understanding the Graphs
• All data sources are listed at the bottom of the slide
• Two elements of understanding network performance─ Latency (delay) of delivering first byte─ Added latency for additional bytes
─Extra copies─Extra system calls
• Important for comparing middleware─ Relevant performance = time added to sockets
(or whatever transport is used under middleware)
![Page 15: High Performance Java Software](https://reader035.vdocument.in/reader035/viewer/2022081622/613d0d45736caf36b758bdb4/html5/thumbnails/15.jpg)
15
High Performance Java Software
Foundation KnowledgeComparing SocketsComparing One Design Implemented in
Multiple LanguagesComparing Different ORBsLessons LearnedSummary
![Page 16: High Performance Java Software](https://reader035.vdocument.in/reader035/viewer/2022081622/613d0d45736caf36b758bdb4/html5/thumbnails/16.jpg)
16
Transport Comparison C Sockets vs. Java Sockets vs. JNI to C Sockets
• With middleware and specifically ORBexpressthe transport itself can be the primary bottleneck.─ Is JNI faster than the standard Java sockets class?─ Middleware with pluggable transports allows us to
test this.─ JVM’s that force extra copies in either the socket
class or JNI interface will preclude high bandwidth applications
• Tests done by Objective Interface on a 1.7 ghzPentium 4 running Microsoft Windows XP
![Page 17: High Performance Java Software](https://reader035.vdocument.in/reader035/viewer/2022081622/613d0d45736caf36b758bdb4/html5/thumbnails/17.jpg)
17
Transport Comparison C Sockets vs. Java Sockets vs. JNI to C Sockets
0
50
100
150
200
250
300
0 5,000 10,000 15,000 20,000 25,000 30,000
Message Size (bytes)
Late
ncy
(use
c)
C Sockets Java Sockets JNI to C Sockets
Source: Objective Interface internal research
![Page 18: High Performance Java Software](https://reader035.vdocument.in/reader035/viewer/2022081622/613d0d45736caf36b758bdb4/html5/thumbnails/18.jpg)
18
High Performance Java Software
Foundation KnowledgeComparing SocketsComparing One Design Implemented in
Multiple LanguagesComparing Different ORBsLessons LearnedSummary
![Page 19: High Performance Java Software](https://reader035.vdocument.in/reader035/viewer/2022081622/613d0d45736caf36b758bdb4/html5/thumbnails/19.jpg)
19
ORBexpress Performance (I)
• Oneway─ Data is sent from the client to server without reply─ Time measured = time to write the data to socket
• Twoway─ Data sent from the client to the server with reply─ Time measured = time for client to send the data to
the server and the server responds with an reply
• ORBexpress for Java transport─ ORB and transport are 100% Java─ Used the Java standard socket class─ Not JNI interface to C sockets
Java vs. Ada vs. C++
![Page 20: High Performance Java Software](https://reader035.vdocument.in/reader035/viewer/2022081622/613d0d45736caf36b758bdb4/html5/thumbnails/20.jpg)
20
ORBexpress Performance (II)ORBexpress for: Java vs. Ada vs. C++
0 10 20 30 40 50 60 70 80
Small Twoway
Small Oneway
Time (usec)
C++JavaAda
Source: Objective Interface internal tests
![Page 21: High Performance Java Software](https://reader035.vdocument.in/reader035/viewer/2022081622/613d0d45736caf36b758bdb4/html5/thumbnails/21.jpg)
21
High Performance Java Software
Foundation KnowledgeComparing SocketsComparing One Design Implemented in
Multiple LanguagesComparing Different ORBsLessons LearnedSummary
![Page 22: High Performance Java Software](https://reader035.vdocument.in/reader035/viewer/2022081622/613d0d45736caf36b758bdb4/html5/thumbnails/22.jpg)
22
Comparing Different ORBsSun JDK vs. TAO (C++) vs. ORBexpress (C++ and Java)
Source: Lockheed Martin Advanced Technology Labs
0
500
1,000
1,500
2,000
2,500
3,000
0 5,000 10,000 15,000 20,000 25,000 30,000
Message Size (bytes)
Late
ncy
(use
c)
Sun JDK 1.4 ORB ORBexpress C++ ORBexpress Java TAO C++ ORB
![Page 23: High Performance Java Software](https://reader035.vdocument.in/reader035/viewer/2022081622/613d0d45736caf36b758bdb4/html5/thumbnails/23.jpg)
23
Comparing ORB Added LatencyORBexpress for C++ vs. ORBexpress for Java
• Important for comparing middleware:Compare to transport (sockets)
• Relevant information: ORB added latency─ ORB time minus socket time─ Allows direct comparison of ORB overhead─ ORB added latency
─Relevant measure of the ORB code efficiency─Most relevant in comparing languages─Removes Java ORB’s penalty for using a slower
socket library
• Tests Done─ 1 byte Payload─ 32,168 byte Payload
![Page 24: High Performance Java Software](https://reader035.vdocument.in/reader035/viewer/2022081622/613d0d45736caf36b758bdb4/html5/thumbnails/24.jpg)
24
Delta ORB ComparisonORBexpress for C++ vs. ORBexpress for Java
0 20 40 60 80 100
Large (32136bytes)
Medium (16392bytes)
Small (1 byte)
Time (usec)
C++Java
Source: Objective Interface internal tests
![Page 25: High Performance Java Software](https://reader035.vdocument.in/reader035/viewer/2022081622/613d0d45736caf36b758bdb4/html5/thumbnails/25.jpg)
25
High Performance Java Software
Foundation KnowledgeComparing SocketsComparing One Design Implemented in
Multiple LanguagesComparing Different ORBsLessons LearnedSummary
![Page 26: High Performance Java Software](https://reader035.vdocument.in/reader035/viewer/2022081622/613d0d45736caf36b758bdb4/html5/thumbnails/26.jpg)
26
Lessons Learned
• Java-specific optimizations─ Well-written Java can beat compiled languages─ Don’t create garbage!─ Are final methods faster?
─Depends on JVM─Sun’s latest Hot-Spot JVM doesn’t care
─ Encourage early class loading
• General optimizations─ Minimization of data copies─ Minimization of context switches─ Minimization of system calls in the JVM
![Page 27: High Performance Java Software](https://reader035.vdocument.in/reader035/viewer/2022081622/613d0d45736caf36b758bdb4/html5/thumbnails/27.jpg)
27
High Performance Java Software
Foundation KnowledgeComparing SocketsComparing One Design Implemented in
Multiple LanguagesComparing Different ORBsLessons LearnedSummary
![Page 28: High Performance Java Software](https://reader035.vdocument.in/reader035/viewer/2022081622/613d0d45736caf36b758bdb4/html5/thumbnails/28.jpg)
28
In Summary
• Java can beat compiled Ada 95─ Typically because of integrity checks built into
Ada language─ Can suppress integrity checks, but this loses benefit
of Ada
• Great Java implementations can beat good C++ implementations
• Fewer copies and system calls in JVM’s where possible will improve performance even further
Java performance is competitive with compiled languages
![Page 29: High Performance Java Software](https://reader035.vdocument.in/reader035/viewer/2022081622/613d0d45736caf36b758bdb4/html5/thumbnails/29.jpg)
29
Kevin BuesingField Applications EngineerObjective Interface Systemshttp://www.ois.com
29
![Page 30: High Performance Java Software](https://reader035.vdocument.in/reader035/viewer/2022081622/613d0d45736caf36b758bdb4/html5/thumbnails/30.jpg)
30
For More Information
• Lockheed Martin Advanced Technology Labs─ Guatam Thaker─ http://www.atl.external.lmco.com/projects/QoS/
• Boeing Phantom Works - DII COE Study─ http://www.ois.com/resources/corb-10-overview.asp
• Objective Interface Systems, Inc.─ http://www.ois.com