Andrea Camesi, Jarle Hulaas Software Engineering Laboratory Swiss Federal Institute of Technology in Lausanne (EPFL) Switzerland Joint work with Walter Binder Advances in Portable Resource Management
© Andrea Camesi and Jarle Hulaas 07/07/ Plan CPU Load Prediction Approach of CPU Load Measurements Future research directions Graphical Monitoring tool Layer structure Monitoring CPU consumption Portable Resource Management Resource Awareness Heterogeneous Distributed System Programming models Our General Approach with J-RAF2
© Andrea Camesi and Jarle Hulaas 07/07/ Portable Resource Management Physical resources CPU, Memory, Network bandwidth, Battery power What is Resource Management ? Logical / conceptual resources Threads, Sockets, etc. Resource Management Views From outside (e.g. by the middleware) Accounting (non-intrusive monitoring) of consumption Controlling (possibly limiting) the consumption From inside Adaptive Resource-Aware applications Units of Measurement Bytecode instructions(CPU), Byte(Memory, Network bandwidth,..)
© Andrea Camesi and Jarle Hulaas 07/07/ Portable Resource Management What is it good for ? Software development Monitoring and profiling of Distributed Applications Benefits of Resource Management Quality of Service Billing for resource consumption Provisioning, load balancing Security with respect to Mobile Code Detecting/terminating Denial-of-Service attacks
© Andrea Camesi and Jarle Hulaas 07/07/ Portable Resource Management What is it good for ? Benefits of Resource Management Reliability and Flexibility Adapt behavior (algorithm) in front of resource saturation especially in Embedded Devices, Resource-Awareness Reliability Accountability (liability) for resource consumption interrupt a component and reclaim all its resources
© Andrea Camesi and Jarle Hulaas 07/07/ Plan CPU Load Prediction Approach of CPU Load Measurements Future research directions Graphical Monitoring tool Layer structure Monitoring CPU consumption Resource Awareness Heterogeneous Distributed System Programming models Our General Approach with J-RAF2 Portable Resource Management Resource Awareness Heterogeneous Distributed System
© Andrea Camesi and Jarle Hulaas 07/07/ Resource Awareness Heterogeneous Distributed System No programming model for Resource-Awareness No available platform (java or other) to support Resource- Awareness Need portability Why portable ? Devise methods that are portable even across platforms/languages.Net, Resilient (?) Explore potential of portable Resource-Awareness strategies, portable units of measurement
© Andrea Camesi and Jarle Hulaas 07/07/ Plan CPU Load Prediction Approach of CPU Load Measurements Future research directions Graphical Monitoring tool Layer structure Monitoring CPU consumption Resource Awareness Heterogeneous Distributed System Programming models Our General Approach with J-RAF2 Portable Resource Management Resource Awareness Heterogeneous Distributed System Programming models
© Andrea Camesi and Jarle Hulaas 07/07/ Resource Awareness Programming models Traditional Java thread-based Event-based (lower level) Programmer must provide fine grained applications Reactive model
© Andrea Camesi and Jarle Hulaas 07/07/ Per-thread and per-component accounting objects Net Mem CPU Resource-reified Multi-threaded Component (‘has a’ relation) invokes Resource Awareness callbacks Mem CPU Per-domain extensible management objects Net domain Memory domain CPU domain Programming models
© Andrea Camesi and Jarle Hulaas 07/07/ Plan CPU Load Prediction Approach of CPU Load Measurements Future research directions Graphical Monitoring tool Layer structure Monitoring CPU consumption Resource Awareness Heterogeneous Distributed System Programming models Our General Approach with J-RAF2 Portable Resource Management Resource Awareness Heterogeneous Distributed System Programming models Our General Approach with J-RAF2
© Andrea Camesi and Jarle Hulaas 07/07/ J-RAF2 Our solution: portable resource management through bytecode rewriting schemes Our General Approach with J-RAF2 The Java Resource Accounting Framework, 2nd edition + = As easy to deploy as any Java application across all kinds of devices If the overhead is reasonable, why not favor a portable approach ?
© Andrea Camesi and Jarle Hulaas 07/07/ J-RAF2 Execute Original Java Application (compiled) Rewrite bytecode Transformed, Resource-reified Version of Application Per-thread or per-component accounting objects Net CPU Mem Meta-level Execution hooks Our General Approach with J-RAF2
© Andrea Camesi and Jarle Hulaas 07/07/ Graphical Monitoring tool Layer structure Monitoring CPU consumption Plan CPU Load Prediction Approach of CPU Load Measurements Future research directions Resource Awareness Heterogeneous Distributed System Programming models Our General Approach with J-RAF2 Portable Resource Management Resource Awareness Heterogeneous Distributed System Programming models Our General Approach with J-RAF2 Graphical Monitoring tool Layer structure Monitoring CPU consumption
© Andrea Camesi and Jarle Hulaas 07/07/ Graphical Monitoring tool What is Graphical Monitoring ? Benefits of Graphical Monitoring Visualize the behavior of a server application Internet applications Quality of Service, Security, Reliability Enforce limits, reduce threads priority High-level layer code User-defined: Accounting, Control and Profiling applications
© Andrea Camesi and Jarle Hulaas 07/07/ Graphical Monitoring tool VM Native Code (unmanaged) (partly unmanaged native code) Bytecode rewriting engine CPU-manageable runtime Adaptable CPU management libraries Sample CPU-monitoring policy Layer structure
© Andrea Camesi and Jarle Hulaas 07/07/ Graphical Monitoring tool Monitoring the Java 2D Demo application: - Standalone - Applet Viewer - Netscape browser - Tomcat Servlet
© Andrea Camesi and Jarle Hulaas 07/07/ Graphical Monitoring tool Layer structure Monitoring CPU consumption Plan CPU Load Prediction Approach of CPU Load Measurements Future research directions Resource Awareness Heterogeneous Distributed System Programming models Our General Approach with J-RAF2 Portable Resource Management Resource Awareness Heterogeneous Distributed System Programming models Our General Approach with J-RAF2 Graphical Monitoring tool Layer structure Monitoring CPU consumption CPU Load Prediction Approach of CPU Load Measurements
© Andrea Camesi and Jarle Hulaas 07/07/ CPU Load Prediction What is CPU Load Prediction? Bytecode instruction counting (BIC) and CPU time They are distinct metrics for different purposes Profile based on BIC are precise, platform-independent, directly comparable across different environment, independent of CPU BIC could be useful to fix absolute limit of execution time BIC could be useful to evaluate algorithm complexity Estimate CPU time Number of executed bytecode instructions / elapsed CPU time Relationship between BIC and CPU time Intuitive relation: proportional, but not so simple No previous work Goal: find the exact relationship Use profiles based on BIC to accurately estimate CPU time Difficulties: JIT, GC, Bytecode weight
© Andrea Camesi and Jarle Hulaas 07/07/ CPU Load Prediction Benefits of CPU time Prediction J-RAF2 Increase the value of our tools Resource Aware Cross development: embedded device, e.g. PDA Heterogeneous Environment with mobile code: evaluate execution time of an application in a portable way User defined deterministic scheduler based on BIC as application specific Pros Better understanding of java applications and java environment Continuous metric give more information
© Andrea Camesi and Jarle Hulaas 07/07/ CPU Load Prediction Samples taken during a run of 201_compress on Linux machine Measurements
© Andrea Camesi and Jarle Hulaas 07/07/ CPU Load Prediction Number of bytecodes executed per millisecond of CPU time (with Sun JDK in interpreted mode, on a Sun Sparc 500 MHz machine under Solaris 9) Number of bytecodes executed per millisecond of CPU time (with Sun JDK in interpreted mode, on an Intel Pentium 2.6 GHz machine under Linux)
© Andrea Camesi and Jarle Hulaas 07/07/ Graphical Monitoring tool Layer structure Monitoring CPU consumption Plan CPU Load Prediction Approach of CPU Load Measurements Future research directions Resource Awareness Heterogeneous Distributed System Programming models Our General Approach with J-RAF2 Portable Resource Management Resource Awareness Heterogeneous Distributed System Programming models Our General Approach with J-RAF2 Graphical Monitoring tool Layer structure Monitoring CPU consumption CPU Load Prediction Approach of CPU Load Measurements Future research directions
© Andrea Camesi and Jarle Hulaas 07/07/ Future research directions Associate different weights to sequences of bytecode instructions Increase the level of precision of measurements Use profiles based on BIC to accurately estimate CPU time Explore aspect-oriented programming as a way of defining Resource-Awareness strategies Explore different programming models for Resource-Aware systems Memory accounting Short-term Mid-term Long-term
© Andrea Camesi and Jarle Hulaas 07/07/ Thank you for your attention !