LCE13: LEG - OpenJDK
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

LCE13: LEG - OpenJDK

on

  • 335 views

Resource: LCE13

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

Statistics

Views

Total Views
335
Views on SlideShare
335
Embed Views
0

Actions

Likes
0
Downloads
4
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

LCE13: LEG - OpenJDK Presentation Transcript

  • 1. Group photograph at Linaro Connect in Copenhagen Monday 29 Oct 2012 Why? What? How? Who? Where? When? LCE-13 OpenJDK
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. Group photograph at Linaro Connect in Copenhagen Monday 29 Oct 2012 Test and Benchmark Status LCE-13 OpenJDK
  • 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. 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. 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