Y. Charlie Hu|
|Topic:||Run-Time Support For Distributed Sharing in Typed Languages|
|Date:||Thursday, March 22, 2001|
|Place:||Gould-Simpson, Room 701|
Distributed shared memory (DSM) systems support cost-effective parallel computing on networks of workstations by providing the application with a shared memory abstraction. How to build the most efficient DSM systems has been extensively studied for over a decade. However, the state-of-the-art DSM systems are still limited to providing only one granularity with good performance. Coarse-grained sharing systems are typically page-based from the use of the VM hardware for access and modification detection, and their performance suffer from false-sharing for fine-grained applications. Fine-grained sharing systems typically augment the executable with instructions to detect reads and writes, freeing them from the large size of the consistency unit in VM-based systems, but introducing per-access overhead that reduces performance for coarse-grained applications.
In this talk, I will present the design and evaluation of the first runtime system (called DOSA) that allows efficient and transparent sharing of data with both fine-grained and coarse-grained access patterns. DOSA supports sharing of objects in a typed language (such as Java) between the different computers within a cluster. It exploits the key insight that the ability to distinguish pointers from data at run-time enables the decoupling of shared object space from the address space. Our performance evaluation demonstrates that the new system performs comparably to a state-of-the-art page-based DSM (TreadMarks) for coarse-grained applications, and significantly outperforms TreadMarks for fine-grained applications (up to 98%) and a garbage-collected application (65% for OO7).
In addition, the new system offers many advantages over earlier distributed object sharing systems. In the new system, direct access through a reference to object data is supported, unlike Java/RMI, where remote object access is restricted to method invocation. Furthermore, in languages with suitable multithreading support, such as Java, distributed execution is transparent: no new API is introduced for distributed sharing. This transparency distinguishes this work from many earlier distributed object sharing systems.