Distributed Java Virtual Machine for Cluster Computing

In this work, we introduce the Cooperative Java Virtual Machine (CoJVM), a new distributed Java run-time system that enables concurrent Java programs to efficiently execute on clusters of personal computers or workstations. CoJVM implements Java’s shared memory model by enabling multiple standard JVMs to work cooperatively and transparently to support a single distributed sharedmemory across the cluster’s nodes. Mostly important, CoJVM requires no change to applications written in standard Java. Our experimental results using several Java benchmarks show that CoJVM performance is respectable with speed-ups ranging from 6.1 to 7.8 for a 8-node cluster.

One of the most interesting features of Java [1] is its embedded support for concurrent programming. Java provides a native parallel programming model that includes support for multithreading and defines a common memory area, called the heap, which is shared among all threads that the program creates. To treat race conditions during concurrent accesses to the shared memory, Java offers to the programmer a set of synchronization primitives, which are based on an adaptation of the classic monitor model as proposed by Hoare [2]. The development of parallel applications using Java’s concurrent programming is restricted to sharedmemory computers, which are often expensive and do not scale easily. A compromise solution is the use of clusters of personal computers or workstations. In this case, the programmer has to ignore Java’s support for concurrent programming and instead use a message-passing protocol to establish communication between threads. However, changing to message-passing programming is often less convenient and even more complex to code development and maintenance. To address this problem, new distributed Java environments have been proposed. In common, the basic idea is to extend the Java heap among the nodes of the cluster, using a distributed shared-memory approach. So far, only few proposals have been implemented, and even less are compliant with the Java Virtual Language Specification [3]. Yet, very few reported good performance results [11] and presented detailed performance analysis [23]. In this paper, we introduce the design and present performance results of a new Java environment for high-performance computing, which we called the CoJVM (Cooperative Java Virtual Machine) [4]. CoJVM’s main objective is to speed up Java applications executing on homogeneous computer clusters, our target platform. CoJVM relies on two key features to improve application performance: 1) the HLRC software Distributed Shared Memory (DSM) protocol [5] and 2) a new instrumentation mechanism [4] to the JVM that enables new latency-tolerance techniques to exploit the application run-time behavior. Mostly important, the syntax and the semantics of the Java language are preserved, allowing programmers to write applications in the same way they write concurrent programs for the single standard Java Virtual Machine (JVM). In this work, we evaluate CoJVM performance for six parallel applications: Matrix Multiplication (MM), Successive Over Relaxation (SOR), Crypt, LU, FFT, and Radix. The connected figures show that all benchmarks we tested achieved good speedups, which demonstrate CoJVM effectiveness

Free download research paper