Millennium

The Millennium project at Microsoft Research investigated new ways to build distributed systems. Our primary goal was to provide a new level of abstraction for application programmers and users. The resulting systems managed machines and network connections for the programmer in the same way that prior operating systems managed pages of memory and disk sectors. We also explored making distributed systems be self-tuning and self-configuring; automatically adapting to changes in hardware resources

Overview

The Microsoft Research Millennium Project investigated new ways to build distributed systems. Our primary goal was to provide a new level of abstraction for application programmers and users. The resulting systems would manage machines and network connections for the programmer in the same way that existing operating systems manage pages of memory and disk sectors. The Millennium system would be self-tuning and self-configuring; it would automatically adapt to changes in hardware resources and application workload. Under the umbrella of the Millennium project, we built a number of prototype systems.

Raising the Level of Abstraction

Millennium raised the level of abstraction provided by the system to the application developer. For example, progammers using the Continuum prototype, were unaware that they were developing distributed applications. The system provided a single abstract machine from multiple physical machines. This is a radical departure from most distributed systems which provide the application with distributed services, but force the programmer to be aware of distribution.

Self-Tuning, Self-Configuring

To increase performance while simultaneously raising the level of abstraction, the Millennium prototypes self optimize.. For example, Coign could repartition distributed applications to minimize distributed communication costs. It could do so throughout the lifetime of an application because it modified binary files, not source code. Coign automatically modified the application to achieve optimal performance in a changing environment. Thus, Coign could take advantage of upgrades in network infrastructure or changes in an individual's usage patterns and workload.

Optimizing the Distributed Infrastructure

Providing aggressive abstraction often raises the issues of performance and customizability. The infrastructure part of the Millennium project focused on these two issues. Millenniun Falcon optimized DCOM for gigabit network with user-level networking. Another prototyped aimed at providing a componentized infrastructure that offers flexible customizability to the higher layer of Millennium as well as to the applications.

Summary

The Millennium project pushed the envelope of distributed application development. While the Millennium prototypes made distribution invisible to the application developer, developers in other distributed systems must be very cognizant of the fact that they are creating distributed applications. Millennium raised the programmer's level of abstraction without significant penalty to the application by aggressive optimization techniques throughout the lifetime of the application (even modifying the application while it is running), optimization of the underlying per-machine operating system, and eliminatation of unnecessary boundaries between the operating system and the application.

People
Bill Bolosky
Bill Bolosky

Rich Draves
Rich Draves

Publications