Efficient realization of a shared memory model on a distributed memory computer continues to be a challenging research problem. The major concern is the reduction, to acceptable limits, of the communication and synchronization overhead in accessing (read and write) any shared memory. This turns out to be heavily dependent on the access patterns of data elements during execution. This paper proposes an adaptive approach to choosing appropriate ways of handling data elements, by tracking their access patterns at runtime.
The work is based on the Java programming language in a cluster environment. A distributed Java virtual machine (DJVM) provides middleware to project a single system image to applications. A global object space is part of such a DJVM, to provide transparent access to objects across the machines in the cluster. The authors’ framework tracks the data access pattern of data elements through hooks in the DJVM, and accordingly chooses strategies such as home-based ownership, object home migration, method migration, and so on. The paper also proposes a three-dimensional access pattern space framework to characterize object behavior. The dimensions are number of writers, synchronization, and repetition. An algorithm to identify objects that are distributed and shared is also presented.
The paper is quite well written and informative. Performance results for problems such as the traveling salesman and Nbody problems are provided, along with analysis of the results. As expected, there is no consensus on a uniform strategy. The system arrives at different strategies for the different pieces of shared data. The ideas presented are interesting, and need to be explored further for reliability in the context of general programs. Adaptive algorithms are the only way to realize effective distributed shared memory.