Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
IBM Software Group Tactics for Minimal Interference from Class Loading in Real-Time Java™ Sean Foley, IBM Software Group, Ottawa, Canada [email protected] 613-726-5516 The 5th International Workshop on Java Technologies for Real-time and Embedded Systems - JTRES 2007 Institute of Computer Engineering Vienna University of Technology Vienna, Austria September 26, 2007 © 2007 IBM Corporation IBM Software Group Agenda Motivations for altering class loading behaviour in Real-Time Java Tactics, experiences, results: – Reducing the size and number of classes to load – Elimination of premature loading – Redistribution of loading – Elimination of repeated loading – Alternative class formats Requirements for Implementation of Techniques 2 Tactics for Minimal Interference from Class Loading in Real-Time Java | JTRES 2007 © 2007 IBM Corporation IBM Software Group Loading Takes Time 3 Tactics for Minimal Interference from Class Loading in Real-Time Java | JTRES 2007 © 2007 IBM Corporation IBM Software Group Motivations and Rationale Class Loading Impacts Real-Time Requirements Simplest approach: load everything at startup – Can be optimized – Not necessarily easy (code paths, development) – Can be excessive (memory/time), particularly for large apps. – Not all classes needed for each invocation Startup time possibly subject to timing constraints Alternative approaches beneficial for optimal usage of resources 4 Tactics for Minimal Interference from Class Loading in Real-Time Java | JTRES 2007 © 2007 IBM Corporation IBM Software Group Instantiated Type Analysis (ITA) determines what methods and classes can be removed Basic control flow analysis follows all references with the code 5 ITA instantiates objects for more accurate analysis to determine reachable items Tactics for Minimal Interference from Class Loading in Real-Time Java | JTRES 2007 © 2007 IBM Corporation IBM Software Group Advanced Control Flow Analysis ITA control flow analysis involves exception object throwing and virtual method invocations 6 Tactics for Minimal Interference from Class Loading in Real-Time Java | JTRES 2007 © 2007 IBM Corporation IBM Software Group Elimination of loading Induced by Verification Runtime bytecode verifier loads classes to verify inheritance. Can be avoided by inserting checkcast bytecodes. Operation Verifier requirement Non-static field access or method invocation Receiver must be subtype of declaring class of field/method Field store Stored object must be subtype of field type Method invocation Arguments must be subtypes of parameters Return instruction Returned object must be subtype of return type Throw instruction or exception handler Thrown or caught object must be Throwable Example: static BaseClass aMethod(SubClass subClass) { if(subClass == null) throw (Throwable) new NullPointerException(); return (BaseClass) subClass; } Bytecodes: 7 aload_0 aconst_null ifnull new invokespecial checkcast athrow aload_0 checkcast areturn Tactics for Minimal Interference from Class Loading in Real-Time Java | JTRES 2007 © 2007 IBM Corporation IBM Software Group Cold Method Refactoring: Distributed Loading The most expensive stage of loading is bytecode verification. Refactoring steps: 1. Identify a method to be migrated 2. Create a counterpart static method in a shell class 3. Migrate the body of the original method 4. Replace the method body with an invocation of the counterpart Result: Bytecode verification of the original method is delayed Loading time of original class is split 8 Tactics for Minimal Interference from Class Loading in Real-Time Java | JTRES 2007 © 2007 IBM Corporation IBM Software Group Persistent Class Sharing Class representations shared amongst VMs: concurrently, sequentially Cache can exist in shared memory or on file system Share: classes, strings, compiled code Not everything shareable: constraints from verifier, advanced optimizations 23377 20455 Sharing w ith Warm Cache 17533 No Sharing 14611 0 11689 Sharing w ith Warm Cache 10000 8767 Sharing w ith Cold Cache 60 40 20 0 20000 5845 No Sharing 30000 Maximum Load Time 2923 600 500 400 300 200 100 0 Abs. Max. Time for a Single Class Load 1 Average Time per Class Load Time (microseconds) Time (microseconds) Multiple shared caches more flexible Tim e (m icroseconds) Sharing Warm Cache No Sharing IBM LS20 Blade Server / real-time linux / IBM Java5 VM 9 Tactics for Minimal Interference from Class Loading in Real-Time Java | JTRES 2007 © 2007 IBM Corporation IBM Software Group Alternative File Formats Load precompiled native code (AOT or ahead-of-time) With IBM’s WebSphere Real-Time, the steps are: Other jar files Source files Compile Compile Java AOT Jar files Run Bound jar files Real-time execution Other class file formats have been designed The class file format specification itself allows the delivery of additional data 10 Tactics for Minimal Interference from Class Loading in Real-Time Java | JTRES 2007 © 2007 IBM Corporation IBM Software Group Summary Class Loading can Interference with Real-Time Constraints Tactics to alter loading: – Reducing the size and number of classes to load – Elimination of premature loading – Temporal redistribution of loading – Elimination of repeated loading – Alternative methods of loading Implementation require analysis, tuning, building, some insight into the app Tools and resources are available for implementation 11 Tactics for Minimal Interference from Class Loading in Real-Time Java | JTRES 2007 © 2007 IBM Corporation