Disco

Abstract
In this paper we examine the problem of extending modem operat- ing systems to run efficiently on large-scale shared memory multi- processors without a large implementation effort. Our approach brings back an idea popular in the 197Os, virtual machine monitors. We use virtual machines to run multiple commodity operating sys- tems on a scalable multiprocessor. This solution addresses many of the challenges facing the system software for these machines. We demonstrate our approach with a prototype called Disco that can run multiple copies of Silicon Graphics' IRIX operating system on a multiprocessor. Our experience shows that the overheads of the monitor are small and that the approach provides scalability as well as the ability to deal with the non-uniform memory access time of these systems. To reduce the memory overheads associated with running multiple operating systems, we have developed techniques where the virtual machines transparently share major data struc- tures such as the program code and the file system buffer cache. We use the distributed system support of modem operating systems to export a partial single system image to the users. The overall solu- tion achieves most of the benefits of operating systems customized for scalable multiprocessors yet it can be achieved with a signifi- cantly smaller implementation effort. cost. The use of commodity operating systems leads to systems that are both reliable and compatible with the existing computing base. To demonstrate the approach, we have constructed a prototype system targeting the Stanford FLASH shared memory multiproces- sor ( 171, an experimental cache coherent non-uniform memory ar- chitecture (ccNUMA) machine. The prototype, called Disco, combines commodity operating systems not originally designed for such large-scale multiprocessors to form a high performance sys- tem software base. Disco contains many features that reduce or eliminate the problems associated with traditional virtual machine monitors. Spe- cifically, it minimizes the overhead of virtual machines and enhanc- es the resource sharing between virtual machines running on the same system. Disco allows the operating systems running on differ- ent virtual machines to be coupled using standard distributed sys- tems protocols such as NFS and TCP/IP. It also allows for efficient sharing of memory and disk resources between virtual machines. The sharing support allows Disco to maintain a global buffer cache transparently shared by all the virtual machines, even when the vir- tual machines communicate through standard distributed protocols. Our experiments with realistic workloads on a detailed simu- lator of the FLASH machine show that Disco achieves its goals. With a few simple modifications to an existing commercial operat- ing system, the basic overhead of virtualization is at most 16% for all our uniprocessor workloads. We show that a system with eight virtual machines can run some workloads 40% faster than on a commercial symmetric multiprocessor operating system by in- creasing the scalability of the system software, without substantial- ly increasing the system's memory footprint. Finally, we show that page placement and dynamic page migration and replication allow Disco to hide the NUMA-ness of the memory system, improving the execution time by up to 37%. In Section 2, we provide a more detailed presentation of the problem being addressed. Section 3 describes an overview of the approach and the challenges of using virtual machines to construct the system software for large-scale shared-memory multiproces- sors. Section 4 presents the design and implementation of Disco and Section 5 shows experimental results. We end the paper with a discussion of related work in Section 6 and conclude in Section 7.

This publication has 18 references indexed in Scilit: