Group photograph at Linaro Connect in Copenhagen
Monday 29 Oct 2012
Why? What? How? Who? Where? When?
LCE-13
OpenJDK
www.linaro.org
Meet the team
• RedHat
o Andrew Haley (Template Interpreter & C1 Compiler)
o Andrew Dinn (C2 Compiler)
• Li...
www.linaro.org
Why Java
• Java is the most popular programming language!
– Or maybe 2nd most popular
– Depending who you t...
www.linaro.org
Java terminology
• J2ME – Java 2 Micro Edition
– Opensource implementation by phoneMe
• J2SE – Java 2 Stand...
www.linaro.org
Inside Hotspot
• Zero
– C++ bytecode interpreter – veerrrryy sloooowww
– Useful as a reference implementati...
www.linaro.org
Inside Hotspot
• C1 (Client) Compiler
– Simple register allocator
– Simple straight line compilation
– Simp...
www.linaro.org
Inside Hotspot
• Tiered compilation
– Start executing in Template interpreter
– Compile with C1 if method i...
www.linaro.org
Current Status
• AARCH64 initial released pushed Monday
– Announcement on aarch64 mailing list
• Template I...
www.linaro.org
Next Steps
• Template Interpreter
– Continue testing with JTReg & fix faults
– Integrate build into OE & de...
www.linaro.org
Resources
• Source mercurial
– http://hg.openjdk.java.net/aarch64-port/jdk8
• Mailing list
– aarch64-port-d...
Group photograph at Linaro Connect in Copenhagen
Monday 29 Oct 2012
Test and Benchmark Status
LCE-13
OpenJDK
www.linaro.org
Available Validation Tests
● Mauve
○ Developed for "clean room" implementations of Java
○ Maintained throug...
www.linaro.org
Test Results
OpenJDK 7 x86-64 aarch64 Zero
Mauve Fail Total Tests Fail Total Tests
Totals 773 5267 800 5261...
www.linaro.org
Benchmarks
● Embedded Caffeinemark
○ Developed for Java ME
○ Small enough to run on emulator
● SPECjvm2008
...
Upcoming SlideShare
Loading in …5
×

LCE13: LEG - OpenJDK

263
-1

Published on

Resource: LCE13
Name: LEG - OpenJDK
Date: 10-07-2013
Speaker: Andy Johnson
Video: https://www.youtube.com/watch?v=_mjNleD48Cc&feature=c4-overview&list=UUIVqQKxCyQLJS6xvSmfndLA

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
263
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

LCE13: LEG - OpenJDK

  1. 1. Group photograph at Linaro Connect in Copenhagen Monday 29 Oct 2012 Why? What? How? Who? Where? When? LCE-13 OpenJDK
  2. 2. www.linaro.org Meet the team • RedHat o Andrew Haley (Template Interpreter & C1 Compiler) o Andrew Dinn (C2 Compiler) • Linaro o Andrew Johnson (Test and Benchmarking) o Ed Nevill (General dogsbody) • With thanks to o Riku Voipio (help with OpenEmbedded) o Andrew McDermott (help with CI loop integration) • Management o Andrea Gallo (LEG Director) o Ilias Biris (Project Manager)
  3. 3. www.linaro.org Why Java • Java is the most popular programming language! – Or maybe 2nd most popular – Depending who you talk to • Java is used in servers – a lot • Tends to be used in performance critical database apps. • Tier 1 Java support is a requirement Why Java
  4. 4. www.linaro.org Java terminology • J2ME – Java 2 Micro Edition – Opensource implementation by phoneMe • J2SE – Java 2 Standard Edition – Opensource implementation by OpenJDK • J2EE – Java 2 Enterprise Edition – OpenJDK + Jboss • OpenJDK – Hotspot – The VM – JDK – The Java runtime – Other components (corba, jaxp, jaxws, nashorn)
  5. 5. www.linaro.org Inside Hotspot • Zero – C++ bytecode interpreter – veerrrryy sloooowww – Useful as a reference implementation only • Template Interpreter – Chunk of assembler (template) for each bytecode – Templates copied and modified depending on entry conditions (atos, itos, vtos, dtos) – Computed goto at end of each loop removes loop overhead. – Performance improvement 3-5x over Zero
  6. 6. www.linaro.org Inside Hotspot • C1 (Client) Compiler – Simple register allocator – Simple straight line compilation – Simple optimisation across bytecodes – Assumed 32 bit! – Performance ~10 x Template interpreter • C2 (Server) Compiler – Aggressive global optimisation – Predictive optimisation / deoptimisation – Performance ~2 X C1
  7. 7. www.linaro.org Inside Hotspot • Tiered compilation – Start executing in Template interpreter – Compile with C1 if method is hot – Compile with C2 if method is still hot – Tiered compilation good for dynamically changing loads – If load is static, may as well just use C2 – But C2 will give very slow startup,
  8. 8. www.linaro.org Current Status • AARCH64 initial released pushed Monday – Announcement on aarch64 mailing list • Template Interpreter – Code complete – Fails 2 more Mauve tests compared to Zero – “Pretty Rock Solid” • C1 Compiler – Compiling 100s of methods – Not quite code complete – nearly • C2 Compiler – Work in progress
  9. 9. www.linaro.org Next Steps • Template Interpreter – Continue testing with JTReg & fix faults – Integrate build into OE & develop CI loop • C1 Compiler – Fix existing faults to get to code complete – Once code complete move to testing – Not yet stable enough to test • C2 Compiler – Under development adinn @ redhat
  10. 10. www.linaro.org Resources • Source mercurial – http://hg.openjdk.java.net/aarch64-port/jdk8 • Mailing list – aarch64-port-dev@openjdk.java.net • IRC – Server: irc.oftc.net Channel: #openjdk
  11. 11. Group photograph at Linaro Connect in Copenhagen Monday 29 Oct 2012 Test and Benchmark Status LCE-13 OpenJDK
  12. 12. www.linaro.org Available Validation Tests ● Mauve ○ Developed for "clean room" implementations of Java ○ Maintained through Java 6 ○ Uses a Java test harness ■ Tests can be run on the same Java that runs the harness or a designated JVM ■ Over 5000 tests, covering both java and javax packages ○ Tests run on several ports ■ OpenJDK 7 Zero port ■ OpenJDK 8 Zero port ■ OpenJDK 8 Template interpreter ■ OpenJDK 8 Client compiler (C1) ● JTREG ○ Unit tests supplied with OpenJDK ○ Current with OpenJDK ○ Over 3000 tests in combined "core" and "default" suites ○ Same harness used to run JCK when available
  13. 13. www.linaro.org Test Results OpenJDK 7 x86-64 aarch64 Zero Mauve Fail Total Tests Fail Total Tests Totals 773 5267 800 5261 OpenJDK8 x86-64 Zero aarch64 Zero aarch64 Template aarch64 Client Mauve Fail Total Fail Total Fail Total Fail Total Totals 554 5119 752 5114 570 5112 581 5112 OpenJDK 8 x86-64 Zero aarch64 Zero aarch64 Template JTREG Pass Fail Pass Fail Pass Fail Totals 2957 78 2638 381 2638 381
  14. 14. www.linaro.org Benchmarks ● Embedded Caffeinemark ○ Developed for Java ME ○ Small enough to run on emulator ● SPECjvm2008 ○ Freely available ○ Single subset run on emulator as proof of concept ○ More complete runs when hardware available ● SPECjbb2013 ○ Newly released ○ Designed specifically for Java server performance ○ Available under license - will obtain when all components are ready

×