Designed to achieve scalability and fine-grain customizability while offering to applications the usual Linux API and ABI environment, the K42 research operating system is a flexible framework for conducting system software research. It allows applications to customize and thus optimize the OS services they require. It has been used to experiment with novel operating system policies and mechanisms, and evaluate the impact of architectural innovations.
K42 is a high performance, open source, general-purpose research operating system kernel for cache-coherent 64-bit multiprocessors. IBM Research is targeting next-generation servers, ranging from small-scale multiprocessors that we expect will become ubiquitous, to very large-scale non-symmetric multiprocessors that are becoming increasingly important in both commercial and technical environments. K42 uses clustered objects, a technology that enables an object to control its own distribution across processors, simplifying the development of scalable data structures. By designing the system from the start for multiprocessors, we achieve a high degree of spatial and temporal locality in code and data. To support large servers, K42 is designed to scale to hundreds of processors and to address the reliability, fault-containment, and fault-tolerance requirements of large commercial applications.
Object-oriented technology has been used throughout the system. Each resource (for example, virtual memory region, network connection, open file, or process) is managed by a different set of object instances. Each object encapsulates the meta-data necessary to manage the resource as well as the locks necessary to manipulate the meta-data, thus avoiding global locks, data structures, and policies. The object-oriented nature enables adaptability, because different resources can be managed by different implementations.
K42 provides the unique operating system capability of being able to customize resource management to the different needs of individual applications. Further, we have extended this capability to allow for the object instance managing the resource to be changed dynamically. This allows us to, for example, upgrade the system or respond to security threats without having to reboot the system. It also allows resource management to be modified for each phase of a scientific application.
K42 Operating System
As part of K42 we have developed efficient and scalable tracing infrastructure to allow us to understand the performance of the system. This has proved extremely valuable in understanding and improving the behavior of K42 and libraries on it as well as the DARPA benchmarks.
In collaboration with the Continuous Program Optimization (CPO) effort, we have begun to leverage the dynamic adaptation aspects of K42 to allow the system to automatically tune itself to the needs of different applications, achieving performance benefits that before now would have required manual programmer intervention.
The K42 team has also been involved with the Research Hypervisor project.
Related Publications
Andrew Baumann, Jonathan Appavoo, Dilma Da Silva, Jeremy Kerr, Orran Krieger and Robert W. Wisniewski. Providing Dynamic Update in an Operating System. Usenix. 2005.
Robert W. Wisniewski and Bryan Rosenburg, "Efficient, Unified, and Scalable Performance Monitoring for Multiprocessor Operating Systems," Supercomputing 2003.
Craig A. N. Soules, Jonathan Appavoo, Kevin Hui, Robert W. Wisniewski, Dilma Da Silva, Gregory R. Ganger, Orran Krieger, Michael Stumm, Marc Auslander, Michal Ostrowski, Bryan Rosenburg, Jimi Xenidis, "System Support for Online Reconfiguration," Proceedings of Usenix 2003, pg 141-154.
Jonathan Appavoo, Marc Auslander, Dilma Da Silva, Orran Krieger, Michal Ostrowski, Bryan Rosenburg, Robert W. Wisniewski, Jimi Xenidis, Michael Stumm, Ben Gamsa, Reza Azimi, Raymond Fingas, Adrian Tam, David Tam, "Enabling Scalable Performance for General Purpose Workloads on Shared Memory Multiprocessors," IBM Research Report RC22863.
Rate this article













