Portable virtual cycle accounting for large-scale distributed cycle sharing systems

CPU cycle sharing among distributed heterogeneous computers is the key function in large-scale volunteer computing and desktop grid applications. One important problem in large-scale distributed cycle sharing system is how to account for the amount of computation work performed by a CPU cycle provider, in a uniform and portable fashion across heterogeneous hardware and operating system platforms. Such an accounting mechanism is especially desirable when CPU resources are traded and a lack of uniform workload accounting will hinder the enforcement of market-driven CPU pricing/trading policies in distributed cycle sharing systems. Java Virtual Machine (JVM) has proved to be a good match for distributed cycle sharing because of its abilities to run applications on a wide variety of platforms without modification (portability) and to host untrusted applications (safety). In this paper, we present the design, implementation, and evaluation of an efficient, application-transparent virtual cycle accounting scheme integrated into JVM. Our scheme achieves portable workload accounting across heterogeneous computing platforms by accounting for JVM virtual instructions instead of real processor cycles. Different from the existing JVM CPU accounting mechanisms that involve bytecode rewriting, our scheme is transparent to applications and does not require visible changes to application and library code interfaces which would break applications that use Reflection API. Moreover, our scheme is efficient via the use of processor registers for accounting. Our experimental results demonstrate both high accounting accuracy and low runtime overhead of virtual cycle accounting.

[1]  Jason Maassen,et al.  Ibis: a flexible and efficient Java‐based Grid programming environment , 2005, Concurr. Pract. Exp..

[2]  James R. Larus,et al.  Optimally profiling and tracing programs , 1994, TOPL.

[3]  Robert L. Probert,et al.  Optimal Insertion of Software Probes in Well-Delimited Programs , 1982, IEEE Transactions on Software Engineering.

[4]  Samuel P. Midkiff,et al.  Java, Peer-to-Peer, and Accountability: Building Blocks for Distributed Cycle Sharing , 2004, Virtual Machine Research and Technology Symposium.

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

[6]  Samuel P. Midkiff,et al.  Trust but verify: monitoring remotely executing programs for progress and correctness , 2005, PPoPP.

[7]  Matthias Jacob,et al.  Cross-Architectural Performance Portability of a Java Virtual Machine Implementation , 2002, Java Virtual Machine Research and Technology Symposium.

[8]  Jason Maassen,et al.  Ibis: a flexible and efficient Java-based Grid programming environment: Research Articles , 2005 .

[9]  John A. Miller,et al.  Java , 1977, Itinerario.

[10]  Mario Lauria,et al.  The Organic Grid: Self‐organizing Computational Biology on Desktop Grids , 2005 .

[11]  Cho-Li Wang,et al.  JESSICA2: a distributed Java Virtual Machine with transparent thread migration support , 2002, Proceedings. IEEE International Conference on Cluster Computing.

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

[13]  Francis C. M. Lau,et al.  JESSICA: Java-Enabled Single-System-Image Computing Architecture , 2000, J. Parallel Distributed Comput..

[14]  Donald E. Knuth,et al.  Optimal measurement points for program frequency counts , 1973 .

[15]  Andrew Warfield,et al.  Xen and the art of virtualization , 2003, SOSP '03.

[16]  Douglas Thain,et al.  Distributed computing in practice: the Condor experience , 2005, Concurr. Pract. Exp..

[17]  Mirza Beg,et al.  A Memory Accounting Interface for The Java Programming Language , 2001 .

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