M.Sc Thesis

M.Sc StudentGleizer Vadim
SubjectOptimizing Sharing Patterns and Locality via Thread
DepartmentDepartment of Computer Science
Supervisor PROF. Assaf Schuster


A Distributed Shared Memory (DSM) system provides an easy and powerful programming environment for distributed and parallel applications. A programmer who develops a distributed application using DSM is spared much of his or her concern with the details of the communication protocols, of the network configuration, and of special communication primitives.

In this work we have researched and contributed to three different aspects of DSM systems. First, we present two new schemes for internal DSM handling mechanisms that will make DSM systems more efficient and reliable. In addition, these schemes reduce the dependency of an internal DSM handling mechanism on a specific operating system.

Second, we have developed a fast and scalable thread migration facility. Thread migration can be used in DSM systems to balance load and to reduce communication as well as to treat fault tolerance and to manage clusters. All of this increases considerably the efficiency and reliability of the underlying DSM system.

In this work we present our design and implementation of a thread migration facility. Our thread migration facility enables migration of standard kernel threads although it is fully implemented in user mode. In this work we overview several approaches to the problem of transferring the stack of a migrating thread. We also present a new approach that allows a thread stack to be placed on DSM. This approach makes programming with DSM more flexible and dramatically improves thread migration, especially when the thread has a lot of data on its stack.

Third, we have researched load balancing techniques in DSM-based systems. Threads of a DSM application need to communicate and synchronize, thus imposing overhead, and if the distribution is not efficient, the overhead might be very high. Thread migration and the principle of locality can be used to overcome this problem.

In this work we present a load sharing module that uses thread migration to perform dynamic load sharing in DSM systems. This module efficiently obtains the communication pattern of threads while cooperating closely with standard DSM mechanisms. It uniformly distributes the load among all the available workstations and strives to minimize the thread communication overhead associated with the underlying memory consistency protocol.