M.E. (Reg.) Thesis, Department of Computer Science and Automation,
Indian Institute of Science, Bangalore, India, January 1999.
Distributed Shared Memory combines the advantages of ease of programmability of shared memory machines and the performance scalability of distributed memory systems. Software Distributed Shared Memory implements the shared memory abstraction on inherently distributed memory systems, completely in software.
We present the design of a performance tuning tool for Coherent Virtual Machine (CVM), which is a software DSM system. This tool is based on Paradyn, which is an existing performance tuning tool for distributed memory systems. We have identified and implemented CVM-specific basic metrics using the Paradyn's Metric Definition Language. The derived metrics, hypotheses, tests and resource hierarchies have been designed. However, though some part of the design was implemented, the complete implementation of the tool was not possible due to portability problems.
We also implemented a number of enhancements to CVM to improve its performance. The concept of data centric abstraction was introduced in CVM, so that, performance tools like Paradyn can give a data centric view of performance, and the performance can be improved by specifying a different consistency protocol for each object.
We implemented adaptive protocol switching in CVM which dynamically switches between lazy single writer and lazy multiple writer protocols, for the pages of the application, depending on the sharing characteristics. Performance evaluation of adaptive protocol switching reveals considerable performance improvement over lazy multiple water. However due to the overheads in checking for protocol switching and due to single writer nature of some applications, lazy single writer performs better than the adaptive method.
Lastly, we implemented simple sequential prefetching in CVM. Our implementation can also support prefetching at a constant stride. We also provide support for compiler-inserted prefetches through a prefetch API.