Program transformations for light-weight CPU accounting and control in the Java virtual machine

This article constitutes a thorough presentation of an original scheme for portable CPU accounting and control in Java, which is based on program transformation techniques at the bytecode level and can be used with every standard Java Virtual Machine. In our approach applications, middleware, and even the standard Java runtime libraries (i.e., the Java Development Kit) are modified in a fully portable way, in order to expose details regarding the execution of threads. These transformations however incur a certain overhead at runtime. Further contributions of this article are the systematic review of the origin of such overheads and the description of a new static path prediction scheme targeted at reducing them.

[1]  Jarle Hulaas,et al.  Monitoring of Resource Consumption in Java-based Application Servers , 2003 .

[2]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[3]  Andreas Krall,et al.  Improving semi-static branch prediction by code replication , 1994, PLDI '94.

[4]  Grzegorz Czajkowski,et al.  A resource management interface for the Java™ platform , 2005 .

[5]  D. B. Davis,et al.  Sun Microsystems Inc. , 1993 .

[6]  Jeffrey M. Bradshaw,et al.  NOMADS: toward a strong and safe mobile agent system , 2000, AGENTS '00.

[7]  Adrian M. Colyer,et al.  Aspect-oriented programming with AspectJ , 2005, IBM Syst. J..

[8]  Walter Binder,et al.  Exact and Portable Profiling for the JVM Using Bytecode Instruction Counting , 2006, QAPL.

[9]  James M. Stichnoth,et al.  Practicing JUDO: Java under dynamic optimizations , 2000, PLDI '00.

[10]  James R. Larus,et al.  Branch prediction for free , 1993, PLDI '93.

[11]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

[12]  Wen-mei W. Hwu,et al.  Improving static branch prediction in a compiler , 1998, Proceedings. 1998 International Conference on Parallel Architectures and Compilation Techniques (Cat. No.98EX192).

[13]  Marc Feeley Polling efficiently on stock hardware , 1993, FPCA '93.

[14]  Walter Binder,et al.  Program transformations for portable CPU accounting and control in Java , 2004, PEPM '04.

[15]  Walter Binder,et al.  Extending Standard Java Runtime Systems for Resource Management , 2004, SEM.

[16]  Laurie J. Hendren,et al.  Optimizing Java Bytecode Using the Soot Framework: Is It Feasible? , 2000, CC.

[17]  Grzegorz Czajkowski,et al.  A resource management interface for the Java™ platform , 2005, Softw. Pract. Exp..

[18]  Frank Yellin,et al.  The Java Virtual Machine Specification , 1996 .

[19]  Harvey G. Cragon,et al.  Branch strategy taxonomy and performance models , 1991, IEEE computer society press monograph.

[20]  Jan Gustafsson,et al.  Automatic Derivation of Path and Loop Annotations in Object-Oriented Real-Time Programs , 1998, Scalable Comput. Pract. Exp..

[21]  Éric Tanter,et al.  Altering Java Semantics via Bytecode Manipulation , 2002, GPCE.

[22]  Toshio Nakatani,et al.  A study of exception handling and its dynamic optimization in Java , 2001, OOPSLA '01.

[23]  Thorsten von Eicken,et al.  JRes: a resource accounting interface for Java , 1998, OOPSLA '98.

[24]  Wilson C. Hsieh,et al.  Processes in KaffeOS: isolation, resource management, and sharing in java , 2000, OSDI.

[25]  R. Stephenson A and V , 1962, The British journal of ophthalmology.

[26]  Walter Binder,et al.  A portable CPU-management framework for Java , 2004, IEEE Internet Computing.

[27]  Walter Binder,et al.  Portable resource control in Java , 2001, OOPSLA '01.

[28]  Laurie J. Hendren,et al.  Dynamic metrics for java , 2003, OOPSLA '03.

[29]  Walter Binder,et al.  Using Bytecode Instruction Counting as Portable CPU Consumption Metric , 2006, Electron. Notes Theor. Comput. Sci..

[30]  Guy L. Steele,et al.  Java Language Specification, Second Edition: The Java Series , 2000 .

[31]  Shigeru Chiba,et al.  Load-Time Structural Reflection in Java , 2000, ECOOP.

[32]  Markus Dahm,et al.  Byte Code Engineering , 1999, Java-Informations-Tage.

[33]  Walter Binder,et al.  Using a Secure Mobile Object Kernel as Operating System on Embedded Devices to Support the Dynamic Upload of Applications , 2002, Mobile Agents.