Resource Management in a Multicore Operating System
Total Page:16
File Type:pdf, Size:1020Kb
Research Collection Doctoral Thesis Resource management in a multicore operating system Author(s): Peter, Simon Publication Date: 2012 Permanent Link: https://doi.org/10.3929/ethz-a-007579246 Rights / License: In Copyright - Non-Commercial Use Permitted This page was generated automatically upon download from the ETH Zurich Research Collection. For more information please consult the Terms of use. ETH Library DISS.ETH NO. 20664 Resource Management in a Multicore Operating System A dissertation submitted to ETH ZURICH for the degree of Doctor of Sciences presented by SIMON PETER Diplom-Informatiker, Carl-von-Ossietzky Universität Oldenburg born October 13, 1981 citizen of Federal Republic of Germany accepted on the recommendation of Prof. Timothy Roscoe, examiner Prof. Steven Hand, co-examiner Prof. Gustavo Alonso, co-examiner Prof. Markus Püschel, co-examiner 2012 Abstract Trends in hardware design have led to processors with many cores on a single die, which present the opportunity for commodity com- puting to become increasingly parallel. These multicore architectures bring with them complex memory and cache hierarchies and processor interconnects. While the execution of batch parallel applications has been researched in the context of high-performance computing (HPC), commodity hardware is evolving at a faster pace than specialized su- percomputers and applications are interactive, requiring fast system response times and the ability to react to ad-hoc workload changes. Leveraging and managing the existing potential for parallelization thus presents a difficult challenge for the development of both commodity operating systems and application programs, which have to keep up with hardware developments and present nimble solutions. This dissertation presents the design and implementation of oper- ating system mechanisms to support the execution of a dynamic mix of interactive and parallel applications on commodity multicore com- puters. The main goals are to provide a system that is scalable with an increasing number of processor cores, is agile with a changing hard- ware architecture, and provides interactive response time to the user when running a mix of parallel, interactive applications. I describe a new operating system architecture, the Multikernel, and report about a concrete implementation of it, called Barrelfish. The Multikernel takes a novel view on the underlying hardware ar- chitecture: as a network of autonomous, heterogeneous processors. The Barrelfish operating system is structured as a distributed system of servers to facilitate easy restructuring of OS services according to the hardware architecture. Applying techniques from the field of dis- tributed systems, Barrelfish demonstrates that the operating system can scale and perform equally well as manually tuned operating systems, like Linux, and in some cases better, while remaining agile with a range of different multicore systems. I present the design and implementation of the inter-process com- munication system and process scheduler within Barrelfish and show how it can be made scalable and agile by applying the Multikernel de- sign principles. Finally, I apply the gang scheduling technique from HPC and show how it can be made nimble to support interactive re- sponse times via a novel technique called phase-locked scheduling to support scheduling a dynamic mix of parallel, interactive applications. Zusammenfassung Hardwaredesign Trends haben zu Prozessoren mit vielen Kernen auf einem einzelnen Chip geführt, welches der elektronischen Daten- verarbeitung ermöglicht, paralleler zu werden. Diese multicore Ar- chitekturen ziehen komplexe Speicher und Cache Hierarchien, sowie Prozessorverbindungen mit sich. Während die Ausführung von paral- lelen Stapelverarbeitungsanwendungen im Kontext von Hochleistungs- rechnern gut erforscht ist, entwickelt sich Massenhardware schneller als spezialisierte Supercomputer und die Anwendungen sind interak- tiv, was schnelle Systemantwortzeiten und die Fähigkeit, schnell auf ad-hoc Änderungen der Arbeitslast zu reagieren, voraussetzt. Die Aus- nutzung und Verwaltung des existierenden Parallelisierungspotenzials stellt daher ein schwieriges Problem für die Entwicklung sowohl von Massenbetriebssystemen, als auch Anwendungsprogrammen dar, die mit der Hardwareentwicklung mithalten und flinke Lösungen anbieten müssen. Diese Dissertation stellt das Design und die Implementierung von Betriebssystemmechanismen vor, welche die Ausführung einer dy- namischen Mischung von interaktiven und parallelen Anwendungen auf multicore Massencomputern unterstützt. Die Hauptziele sind ein System bereit zu stellen, welches mit einer steigenden Anzahl an Pro- zessorkernen skaliert, Agilität gegenüber einer sich verändernden Hard- warearchitektur bietet und dem Anwender interaktive Antwortzeiten bereitstellt, während es eine Mischung aus parallelen und interaktiven Anwendungen ausführt. Ich beschreibe eine neue Betriebssystemarchitektur, den Multik- ernel, und berichte über eine konkrete Implementierung derselben, genannt Barrelfish. Der Multikernel nimmt eine neue Sicht auf die darunterliegende Hardwarearchitektur: Als Netzwerk autonomer, het- erogener Prozessoren. Das Barrelfish Betriebssystem ist strukturiert als verteiltes System von Servern, welches ein leichtes Restrukturi- eren von Betriebssystemservices anhand der Hardwarearchitektur er- möglicht. Dabei wendet Barrelfish Techniken aus dem Bereich der verteilten Systeme an und demonstriert, daß das Betriebssytem ebenso gut skalieren und funktionieren kann, wie manuell auf die Hardware abgestimmte Betriebssysteme, wie zum Beispiel Linux, und in eini- gen Fällen sogar besser, während es agil gegenüeber einer Anzahl ver- schiedener Multicoresysteme bleibt. Ich stelle das Design und die Implementierung des Interprozesskom- munikationssystems und des Prozess-Schedulers vor und zeige wie beide Systeme skalierbar und agil gemacht werden können, indem die Designprinzipien des Multikernels angewandt werden. Schließlich wende ich die Gang-Scheduling Technik aus dem Feld des Hochleis- tungsrechnens an und zeige, wie es durch eine neue Technik, genannt phase-locked scheduling, flink gemacht werden kann, so dass es inter- aktive Antwortzeiten beim Scheduling einer dynamischen Mischung aus parallelen und interaktiven Anwendungen unterstützt. Acknowledgements I would like to thank my supervisor Timothy Roscoe for all his help, pa- tience, support and advice, and the entire Barrelfish team, at ETH and Mi- crosoft, for all the insightful discussions, around the whiteboard, in corri- dors, and elsewhere, in particular Paul Barham, Andrew Baumann, Pierre- Evariste Dagand, Jana Giceva, Tim Harris, Rebecca Isaacs, Ross McIlroy, Adrian Schüpbach, and Akhilesh Singhania. Also, I am heavily indebted to the authors of the work that this dissertation builds upon, namely the Barrelfish team, interns, students, and collaborators. Without them, this dissertation would not exist. In addition, I would like to acknowledge my examination committee for the detailed feedback on numerous drafts of this document. I would like to thank the researchers, staff, and interns at the Microsoft Research labs in Cambridge and Silicon Valley for the incredibly fun and rewarding time. Finally, I would like to thank my parents for their patience and support through all the years, as well as Akhilesh Singhania, for being a very good and supporting friend in good and in tough times. Thanks for making all of this so much more worthwhile! Zurich, August 2012. Contents 1 Introduction 1 1.1 Motivation . .2 1.2 Contribution . .5 1.3 Dissertation Structure . .6 1.4 Related Publications . .7 2 The Multikernel 9 2.1 Motivation . 10 2.1.1 Hardware Diversity . 11 2.1.2 Interconnect Latency Matters . 12 2.1.3 Remote Procedure Call vs. Shared Memory . 15 2.1.4 Cache Coherence Protocol Scalability . 18 2.1.5 Discussion . 19 2.2 Background . 20 2.3 Evaluation Platforms . 22 2.3.1 x86-based Systems . 22 2.3.2 Intel Single-Chip Cloud Computer . 23 2.4 The Multikernel Architecture . 24 2.4.1 Explicit Inter-core Communication . 26 2.4.2 Hardware-neutral OS Structure . 28 2.4.3 State Replication . 29 2.5 System Structure . 31 2.5.1 CPU Drivers . 33 2.5.2 Process Structure . 35 2.5.3 Protection Model . 41 2.5.4 Monitors . 43 2.5.5 Threads and Shared Address Spaces . 44 2.5.6 Knowledge and Policy Engine . 45 2.6 Inter-domain Communication . 46 2.6.1 Naming and Binding . 47 2.6.2 Same-core Communication . 48 2.6.3 Inter-core Communication . 49 2.6.4 Application-level Messaging Performance . 57 2.6.5 Summary . 59 2.7 Related Work . 60 2.8 Summary . 62 3 Scheduling in a Multikernel 64 3.1 Motivation . 65 3.1.1 System Diversity . 67 3.1.2 Multiple Applications . 68 3.1.3 Interactive Workloads . 71 3.2 Background . 72 3.2.1 Parallel Scheduling in High-Performance Computing 72 3.2.2 Scheduling with Information from Applications . 75 3.2.3 Commodity Multicore OS Scheduling . 76 3.2.4 Studies in Commodity Multicore Scheduling . 77 3.2.5 Blocking Cost Evaluation . 78 3.3 Example Workloads . 79 3.3.1 Virtual Machine Monitors . 80 3.3.2 Parallel Garbage Collection . 81 3.3.3 Potential Future Workloads . 81 3.4 Design Principles . 85 3.4.1 Time-multiplexing Cores is Still Needed . 85 3.4.2 Schedule at Multiple Timescales . 87 3.4.3 Reason Online About the Hardware . 87 3.4.4 Reason Online About Each Application . 88 3.4.5 Applications and OS Must Communicate . 89 3.4.6 Summary . 90 3.5 Scheduler Concepts . 90 3.5.1 Dispatcher Groups . 91 3.5.2 Scheduler Activations . 92 3.5.3 Deterministic