Run-time optimizations for a Java DSM implementation
Jackal is a fine-grained distributed shared memory implementation of the Java programming language. Jackal implements Java's memory model and allows multithreaded Java programs to run unmodified on distributed-memory systems. This paper focuses on Jackal's run-time system, which implements a multiple-writer, home-based consistency protocol. Protocol actions are triggered by software access checks that Jackal's compiler inserts before object and array references. To reduce access-check overhead, the compiler exploits source-level information and performs extensive static analysis to optimize, lift, and remove access checks. We describe optimizations for Jackal's run-time system, which mainly consists of discovering opportunities to dispense with flushing of cached data. We give performance results for different run-time optimizations, and compare their impact with the impact of one compiler optimization. We find that our run-time optimizations are necessary for good Jackal performance, but only in conjunction with the Jackal compiler optimizations described by Veldema et al. As a yardstick, we compare the performance of Java applications run on Jackal with the performance of equivalent applications that use a fast implementation of Java's Remote Method Invocation instead of shared memory. Copyright (C) 2003 John Wiley Sons, Ltd.
java dsm protocols compiler runtime