Scalability of microkernel-based systems
Authors
University of Karlsruhe
Abstract
Microkernel-based systems divide the operating system functionality into individual and isolated components. The system components are subject to application-class protection and isolation. This structuring method has a number of benefits, such as fault isolation between system components, safe extensibility, co-existence of different policies, and isolation between mutually distrusting components. However, such strict isolation limits the information flow between subsystems including information that is essential for performance and scalability in multiprocessor systems.
Semantically richer kernel abstractions scale at the cost of generality and minimality–two desired properties of a microkernel. I propose an architecture that allows for dynamic adjustment of scalability-relevant parameters in a general, flexible, and safe manner. I introduce isolation boundaries for microkernel resources and the system processors. The boundaries are controlled at user-level. Operating system components and applications can transform their semantic information into three basic parameters relevant for scalability: the involved processors (depending on their relation and interconnect), degree of concurrency, and groups of resources.
I developed a set of mechanisms that allow a kernel to:
- efficiently track processors on a per-resource basis with support for very large number of processors,
- dynamically and safely adjust lock primitives at runtime, including full de-activation of kernel locks in the case of no concurrency,
- dynamically and safely adjust locking granularity at runtime,
- provide a scalable translation-look-aside buffer (TLB) coherency algorithm that uses versions to minimize interprocessor interference for concurrent memory resource re-allocations, and
- efficiently track and communicate resource usage in a component-based operating system.
Based on my architecture, it is possible to efficiently co-host multiple isolated, independent, and loosely coupled systems on larger multiprocessor systems, and also to fine-tune individual subsystems of a system that have different and potentially conflicting scalability and performance requirements.
I describe the application of my techniques to a real system: L4Ka::Pistachio, the latest variant of an L4 microkernel. L4Ka::Pistachio is used in a variety of research and industry projects. Introducing a new dimension to a system — parallelism of multiprocessors — naturally introduces new complexity and overheads. I evaluate my solutions by comparing with the most challenging competitor: the uniprocessor variant of the very same and highly optimized microkernel.
BibTeX Entry
@phdthesis{Uhlig:phd, address = {Karlsruhe, DE}, author = {Volkmar Uhlig}, month = jun, paperurl = {http://os.itec.kit.edu/519.php}, school = {University of Karlsruhe}, title = {Scalability of Microkernel-Based Systems}, year = {2005} }