K42: Building a Complete OS Orran Krieger, Marc Auslander, Bryan Rosenburg, Robert Wisniewski, Jimi Xenidis, Dilma Da Silva, Michal Ostrowski, Jonathan.

Slides:



Advertisements
Similar presentations
MicroKernel Pattern Presented by Sahibzada Sami ud din Kashif Khurshid.
Advertisements

Background Virtual memory – separation of user logical memory from physical memory. Only part of the program needs to be in memory for execution. Logical.
Paging: Design Issues. Readings r Silbershatz et al: ,
Autonomic Systems Justin Moles, Winter 2006 Enabling autonomic behavior in systems software with hot swapping Paper by: J. Appavoo, et al. Presentation.
The Multikernel: A new OS architecture for scalable multicore systems Andrew Baumann et al CS530 Graduate Operating System Presented by.
Tornado: Maximizing Locality and Concurrency in a Shared Memory Multiprocessor Operating System Ben Gamsa, Orran Krieger, Jonathan Appavoo, Michael Stumm.
Chapter 101 Virtual Memory Chapter 10 Sections and plus (Skip:10.3.2, 10.7, rest of 10.8)
1 Enabling autonomic behavior in systems software with hot swapping By J. Appavoo, K. Hui, C. A. N. Soules, R. W. Wisniewski, D. M. Da Silva, O. Krieger,
Virtual Memory Virtual Memory Management in Mach Labels and Event Processes in Asbestos Ingar Arntzen.
Operating System Support Focus on Architecture
Virtual Memory Chapter 8. Hardware and Control Structures Memory references are dynamically translated into physical addresses at run time –A process.
What Great Research ?s Can RAMP Help Answer? What Are RAMP’s Grand Challenges ?
Threads 1 CS502 Spring 2006 Threads CS-502 Spring 2006.
Memory Management 2010.
Microkernels: Mach and L4
1 Supporting Hot-Swappable Components for System Software Kevin Hui, Jonathan Appavoo, Robert Wisniewski, Marc Auslander, David Edelsohn, Ben Gamsa Orran.
Experience with K42, an open- source, Linux-compatible, scalable operation-system kernel IBM SYSTEM JOURNAL, VOL 44 NO 2, 2005 J. Appovoo 、 M. Auslander.
Virtualization and the Cloud
Operating System Organization
NPACI: National Partnership for Advanced Computational Infrastructure August 17-21, 1998 NPACI Parallel Computing Institute 1 Cluster Archtectures and.
Slide 3-1 Copyright © 2004 Pearson Education, Inc. Operating Systems: A Modern Perspective, Chapter 3 Operating System Organization.
6/10/2005 FastOS PI Meeting/Workshop K42 Internals Dilma da Silva for K42 group IBM TJ Watson Research.
Virtual Machine Monitors CSE451 Andrew Whitaker. Hardware Virtualization Running multiple operating systems on a single physical machine Examples:  VMWare,
Basics of Operating Systems March 4, 2001 Adapted from Operating Systems Lecture Notes, Copyright 1997 Martin C. Rinard.
Stack Management Each process/thread has two stacks  Kernel stack  User stack Stack pointer changes when exiting/entering the kernel Q: Why is this necessary?
Hands-On Microsoft Windows Server 2008 Chapter 1 Introduction to Windows Server 2008.
Computer System Architectures Computer System Software
Dual Stack Virtualization: Consolidating HPC and commodity workloads in the cloud Brian Kocoloski, Jiannan Ouyang, Jack Lange University of Pittsburgh.
Microkernels, virtualization, exokernels Tutorial 1 – CSC469.
Disco : Running commodity operating system on scalable multiprocessor Edouard et al. Presented by Jonathan Walpole (based on a slide set from Vidhya Sivasankaran)
CS533 Concepts of Operating Systems Jonathan Walpole.
LiNK: An Operating System Architecture for Network Processors Steve Muir, Jonathan Smith Princeton University, University of Pennsylvania
CCA Common Component Architecture Manoj Krishnan Pacific Northwest National Laboratory MCMD Programming and Implementation Issues.
Virtualization: Not Just For Servers Hollis Blanchard PowerPC kernel hacker.
Subject: Operating System.
Using Virtual Servers for the CERN Windows infrastructure Emmanuel Ormancey, Alberto Pace CERN, Information Technology Department.
Slide 3-1 Copyright © 2004 Pearson Education, Inc. Operating Systems: A Modern Perspective, Chapter 3.
Headline in Arial Bold 30pt HPC User Forum, April 2008 John Hesterberg HPC OS Directions and Requirements.
1 Providing Dynamic Update in an Operating System By Liao,Hsiao-Win Andrew Baumann, Gernot Heiser University of New South Wales & National ICT Australia.
Disco: Running Commodity Operating Systems on Scalable Multiprocessors Edouard et al. Madhura S Rama.
Supporting Multi-Processors Bernard Wong February 17, 2003.
 Virtual machine systems: simulators for multiple copies of a machine on itself.  Virtual machine (VM): the simulated machine.  Virtual machine monitor.
Disco : Running commodity operating system on scalable multiprocessor Edouard et al. Presented by Vidhya Sivasankaran.
Distributed Information Systems. Motivation ● To understand the problems that Web services try to solve it is helpful to understand how distributed information.
02/09/2010 Industrial Project Course (234313) Virtualization-aware database engine Final Presentation Industrial Project Course (234313) Virtualization-aware.
By Teacher Asma Aleisa Year 1433 H.   Goals of memory management  To provide a convenient abstraction for programming.  To allocate scarce memory.
Simics: A Full System Simulation Platform Synopsis by Jen Miller 19 March 2004.
M. Accetta, R. Baron, W. Bolosky, D. Golub, R. Rashid, A. Tevanian, and M. Young MACH: A New Kernel Foundation for UNIX Development Presenter: Wei-Lwun.
Full and Para Virtualization
Lecture 4 Page 1 CS 111 Online Modularity and Virtualization CS 111 On-Line MS Program Operating Systems Peter Reiher.
Operating-System Structures
Tornado: Maximizing Locality and Concurrency in a Shared Memory Multiprocessor Operating System Ben Gamsa, Orran Krieger, Jonathan Appavoo, Michael Stumm.
CSE 451: Operating Systems Winter 2015 Module 25 Virtual Machine Monitors Mark Zbikowski Allen Center 476 © 2013 Gribble, Lazowska,
Running Commodity Operating Systems on Scalable Multiprocessors Edouard Bugnion, Scott Devine and Mendel Rosenblum Presentation by Mark Smith.
Computer System Structures
Virtual Machine Monitors
Kernel Design & Implementation
Chapter 9: Virtual Memory – Part I
CSE 451: Operating Systems Autumn 2003 Lecture 10 Paging & TLBs
CSE451 Virtual Memory Paging Autumn 2002
CSE 451: Operating Systems Autumn Module 24 Virtual Machine Monitors
Operating Systems: A Modern Perspective, Chapter 3
CSE 451: Operating Systems Autumn 2003 Lecture 10 Paging & TLBs
Why Threads Are A Bad Idea (for most purposes)
Outline Operating System Organization Operating System Examples
Why Threads Are A Bad Idea (for most purposes)
Why Threads Are A Bad Idea (for most purposes)
CSE 451: Operating Systems Autumn Module 24 Virtual Machine Monitors
COMP755 Advanced Operating Systems
CSE 542: Operating Systems
Presentation transcript:

K42: Building a Complete OS Orran Krieger, Marc Auslander, Bryan Rosenburg, Robert Wisniewski, Jimi Xenidis, Dilma Da Silva, Michal Ostrowski, Jonathan Appavoo, Maria Butrico, Mark Mergen, Amos Waterland, Volkmar Uhlig

How it all started

Our Predictions 1996 Microsoft Windows will dominate Large-scale SMMP increasingly important Within 5 years multi-core pervasive Traditional OS structures not maintainable Customizability and extensibility critical Within 5 years 64-bit pervasive Sufficient motivation to design entirely new OS. Small aggressive research team.

Resulting K42 Goals performance/scalability: –up to large MP and large applications –down for small-scale MP and small apps on large-scale MP flexibility/customizability: –policies/implementations of resource instances can be customized to application needs –system can adapt without penalizing common case performance applicability –full functionality with multiple personalities –support client to embedded to server wide availability –release open source and build community –highly maintainable/extensible structure enable problem domain experts re-enable architectural innovation re-enable OS research community

Technical directions 1996 Micro-kernel design User-level implementation OO design Extensive infrastructure & programming model Pervasive exploitation of 64 bits Application manager for fault containment Micro-kernel Servers Legacy OS emulation K42 lib Application Legacy OS emulation K42 lib Application

Key technology/work

Memory Processors Service Interface External Service Requests Software Structures Memory Processors Add brick Memory Processors Scale up Scaling existing OSes Incremental approach of optimizing global data structures/policies … focuses on concurrency rather than locality. Poor scaling of SW requires major HW investments to compensate, resulting in: Systems that are not cost competitive. Limits to the system scalability.

Memory Processors Service Interface External Service Requests Memory Processors Add brick Memory Processors Scale up Software Structures Our solution Key elements of our solution: System services that avoid sharing when possible. OO design with per-resource instance objects Exploit sharing where workload demands or where performance is not critical. Tools to identify sharing problems and develop basic design methodology and set of tools to simplify the task of fixing the SW.

Independent workloads

Memclone benchmark: Memory intensive parallel application

Customization User-level implementation allows per-application customizations. Framework per service designed to: –Separate mechanism/policy that can be independently customized. –Application or agents can determine which implementation to use for workload. Dynamic customizations: patches/updates, adaptive algorithms, specializing common case, monitoring, application optimizations –Hot swapping: replacing O1 with O2 to adapt to new demands –Dynamic upgrade: replace all objects of a type

Hot-swapping Adaptive paging Adaptive file imp.

Infrastructure & Programming model Clustered objects Pervasive use of RCU to avoid existence locks Event based programming model Performance monitoring Scalable services –Protected Procedure calls –Locality aware memory allocation –Processor specific memory Automated interface generator/xobject services automate security, garbage collecting, …

Massive investment in/on Linux In late 90s Linux appeared to be taking off & we abandoned multiple personalities Linux API/ABI compatibility largely in library, exceptions: –Server code for process groups, ptys… –Fork has had way too pervasive impact on kernel MM (we violated our programming style). Support both unmodified glibc via trap reflection, and modified glibc. Applications with specialized needs can reach past Linux personality, e.g., to instantiate object, handle events… We are also compatible with Linux kernel modules, including device drivers, FS & TCP/IP stack: –Tracking Linux is an ongoing nightmare

Bad predictions, mistakes and questions

Our Predictions 1996 Microsoft Windows will dominate  Wasted huge amount of time on multiple personality support. Large-scale SMMP increasingly important. –True, but much slower than expected. –Massive investment in HW: allows existing OSes to run reasonably well Makes SMMP not cost effective Within 5 years multi-core pervasive –Only common today, not compelling differentiator until now Traditional OS structures not maintainable. Customizability and extensibility critical Within 5 years 64-bit pervasive. –Only common today, this has been a huge barrier to building community

Mistakes/Questions We should have had a 32-bit version. Application manager was a bad idea, we totally missed on virtualization: –Gets rid of the device driver nightmare –Can deploy new OS to solve subset of problem. While user-level implementation & micro-kernel clean, continuous challenge & orthogonal to OO design We implemented fork wrong!!! OO design, and infrastructure, obscures control flow: –Much more difficult for Linux hacker to gain broad understanding. –Requires more sophisticated debugging tools. Does OO really help maintainability?

Concluding remarks

The good news High degree of functionality: –32 & 64 bit apps, support standard gentoo tree, MPI. –Applications/benchmarks include SPEC SDET, ReAIM, SPECfp, many HPC apps (DARPA & DOE) –Recently provided enough support to run commercial JVM (J9) and DB2. Object-oriented design has advantages... –have found special casing easy –hot-swapping simpler than adaptive algorithm –Clustered objects relatively simple to do –local fixes, publish interface not structure –Domain experts/students can easily develop specialized component. Have been able to work around global policies, e.g., paging.

The good news General performance monitoring infrastructure key to identifying problems. We achieved excellent base performance (although since degraded); can compensate for intrinsic overheads: –advantages of Linux's hierarchical page tables: exception level traversal, identify PT entry for fast unmap and avoid segment unmapping, aggressive fork pre-mapping for anonymous memory –user-level implementation: cost initialization, page fault costs on fork –OO design: indirections, code replication, poor instruction cache locality, per-object data structures… –initialization costs of scalable implementations compensate by lazy initialization & hot swapping/specialization…

Ongoing projects IBM PERCS for DARPA HPCS –PEM and CPO & architectural evaluation DOE/FastOS –HEC with K42 at LBL, UNM, UofToronto –SmartApps at Texas A&M New South Wales (dynamic upgrade) Device drive I/O & Super page support with LTC

Concluding remarks Sufficiently functionality & performance to run real workloads. A great framework for fundamental OS research and HW architecture studies. Basic architecture/technologies largely successful. Virtualization, pervasive 64-bit processors, and pervasive multi-core makes design more relevant than at any time in project history. Most of IBM team no longer have K42 as day job, but are still passionate about it: –We continue to be excited to support community. –We are actively soliciting people to take over parts of the system.