|
The K42 Research Operating System
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.
Andrew Baumann, Jonathan Appavoo, Dilma Da Silva,
Jeremy Kerr, Orran Krieger, and Robert W. Wisniewski, "Providing
Dynamic Update in an Operating System," to appear 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.
|
 |
 |
|
|
What is the most exciting potential
future use for the work you're doing?
Software and multiprocessors
are becoming increasingly complex and the requirements of
applications are becoming more divergent, especially on
multiprocessors. To achieve good performance in this environment,
the underlying system needs to be customizable to the application,
and to handle complexity, mechanisms are needed to be able
to automatically use this capability. K42 is an IBM Research
project aimed at designing a research operating system kernel
from the ground up. Its goals are to achieve good scalable
performance and allow its resource management to be customized
to the needs of individual applications. Also as part of
K42, we are exploring how to provide that customization
dynamically. To address automating the customization process,
another group I work in is exploring continuous program
optimization (CPO) -- how to gather performance data from
all layers of the execution stack, including the hardware,
operating system, libraries, application, etc., and analyze
that data both off and online to make better automatic resource
control decisions.
An exciting opportunity exists by combining
the recommendations made by the CPO infrastructure with
the dynamic hot-swapping capabilities provided in K42. With
this combination we have the ability to automatically increase
the application's performance without manual programmer
intervention, thereby addressing system complexity.
What is the most interesting part
of your research?
I have always enjoyed designing and implementing
algorithms. An integral part of the above described research
has involved inventing novel algorithms to figure out how
to perform the dynamic resource management capability, as
well as designing algorithms to analyze the data produced
by the performance monitoring infrastructure to produce
good resource control directives.
What inspired you to go into this
field?
Growing up, I was always fascinated by the internals
of calculators. I would take them apart and stare at the
green circuit boards and wonder how the wires and chips
could produce the computation results. As personal computers
developed, this interest grew into wanting to understand
them, and from there to wanting to be able to understand
and program supercomputers.
What is your favorite invention
of all time?
The computer has given people the unprecedented capability
to understand the world, and has tremendously advanced many
disciplines of science. Moving forward, computers will play
an important role in allowing us to advance and expand beyond
our current understanding and position.
|
|