Java Support Packages and Benchmarks for Multi-core Processors

This paper presents Java support packages that help optimize the program performance by improving the coordination with the underlying software and hardware (operating system and CPU). The software support exports low-level information about processor features (cache sizes and sharing, number of logical CPUs per chip/core, Simultaneous Multi-Threading, etc) to the application level and addresses issues such as CPU/interrupt affinity, thread scheduling and synchronization. The paper also shows how to use the support packages to develop micro-benchmarks for Java VMs and Real-Time Specification for Java (RTSJ) implementations running on multi-core CPUs. A benchmark suite consisting of memory, asynchronous event handling (for RTSJ implementations only) and locking tests is described and evaluated on Java and Jamaica VM [15].

[1]  Douglas C. Schmidt,et al.  Evaluating real-time Java features and performance for real-time embedded systems , 2002, Proceedings. Eighth IEEE Real-Time and Embedded Technology and Applications Symposium.

[2]  No License,et al.  Intel ® 64 and IA-32 Architectures Software Developer ’ s Manual Volume 3 A : System Programming Guide , Part 1 , 2006 .

[3]  Jan Vitek,et al.  CDx: a family of real-time Java benchmarks , 2009, JTRES '09.

[4]  Maurice Herlihy,et al.  A methodology for implementing highly concurrent data objects , 1993, TOPL.

[5]  Alan L. Cox,et al.  Tradeoffs between false sharing and aggregation in software distributed shared memory , 1997, PPOPP '97.

[6]  John K. Ousterhout Scheduling Techniques for Concurrebt Systems. , 1982, ICDCS 1982.

[7]  Douglas C. Schmidt,et al.  The Design and Performance of the jRate Real-Time Java Implementation , 2002, OTM.

[8]  Gregory R. Andrews,et al.  Dynamically controlling false sharing in distributed shared memory , 1996, Proceedings of 5th IEEE International Symposium on High Performance Distributed Computing.

[9]  John K. Ousterhout,et al.  Scheduling Techniques for Concurrent Systems , 1982, ICDCS.

[10]  Andy J. Wellings Multiprocessors and the Real-Time Specification for Java , 2008, 2008 11th IEEE International Symposium on Object and Component-Oriented Real-Time Distributed Computing (ISORC).

[11]  James Gosling,et al.  The Real-Time Specification for Java , 2000, Computer.

[12]  Brian P. Doherty A real-time benchmark for Java#8482; , 2007, JTRES.

[13]  Stefan Kowalewski,et al.  Evaluation of the real-time Java runtime environment for deployment in time-critical systems , 2009, JTRES '09.