Virtualization considered harmful: OS design directions for well-conditioned services

We argue that existing OS designs are ill-suited for the needs of Internet service applications. These applications demand massive concurrency (supporting a large number of requests per second) and must be well-conditioned to load (avoiding degradation of performance and predictability when demand exceeds capacity). The transparency and virtualization provided by existing operating systems leads to limited concurrency and lack of control over resource usage. We claim that Internet services would be far better supported by operating systems by reconsidering the role of resource virtualization. We propose a new design for server applications, the staged event-driven architecture (SEDA). In SEDA, applications are constructed as a set of event driven stages separated by queues. We present the SEDA architecture and its consequences for operating system design.

[1]  Michael Stonebraker,et al.  Operating system support for database management , 1981, CACM.

[2]  Brian N. Bershad,et al.  Scheduler activations: effective kernel support for the user-level management of parallelism , 1991, TOCS.

[3]  David R. Cheriton,et al.  Application-controlled physical memory using external page-cache management , 1992, ASPLOS V.

[4]  Seth Copen Goldstein,et al.  Active Messages: A Mechanism for Integrated Communication and Computation , 1992, [1992] Proceedings the 19th Annual International Symposium on Computer Architecture.

[5]  Larry L. Peterson,et al.  Fbufs: a high-bandwidth cross-domain transfer facility , 1994, SOSP '93.

[6]  Takashi Masuda,et al.  'Unstable threads' kernel interface for minimizing the overhead of thread switching , 1993, [1993] Proceedings Seventh International Parallel Processing Symposium.

[7]  Brian N. Bershad,et al.  Extensibility safety and performance in the SPIN operating system , 1995, SOSP.

[8]  Jeffrey C. Mogul,et al.  Operating systems support for busy Internet servers , 1995, Proceedings 5th Workshop on Hot Topics in Operating Systems (HotOS-V).

[9]  Thorsten von Eicken,et al.  U-Net: a user-level network interface for parallel and distributed computing , 1995, SOSP.

[10]  Robin Fairbairns,et al.  The Design and Implementation of an Operating System to Support Distributed Multimedia Applications , 1996, IEEE J. Sel. Areas Commun..

[11]  Peter B. Danzig,et al.  A Hierarchical Internet Object Cache , 1996, USENIX ATC.

[12]  Dawson R. Engler,et al.  Server operating systems , 1996, EW 7.

[13]  Larry L. Peterson,et al.  Making paths explicit in the Scout operating system , 1996, OSDI '96.

[14]  M. Kaashoek,et al.  ASHs: Application-specific handlers for high-performance messaging , 1996, SIGCOMM '96.

[15]  David E. Culler,et al.  High-performance local area communication with fast sockets , 1997 .

[16]  Thorsten von Eicken,et al.  Incorporating Memory Management into User-Level Network Interfaces , 1997 .

[17]  Douglas C. Schmidt,et al.  High performance web servers on windows NT design and performance , 1997 .

[18]  Robert Grimm,et al.  Application performance and flexibility on exokernel systems , 1997, SOSP.

[19]  Douglas C. Schmidt,et al.  APPLYING THE PROACTOR PATTERN TO HIGH-PERFORMANCE WEB SERVERS , 1998 .

[20]  Peter Druschel,et al.  A Scalable and Explicit Event Delivery Mechanism for UNIX , 1999, USENIX Annual Technical Conference, General Track.

[21]  Steven M. Hand,et al.  Self-paging in the Nemesis operating system , 1999, OSDI '99.

[22]  Eddie Kohler,et al.  The Click modular router , 1999, SOSP.

[23]  Willy Zwaenepoel,et al.  Flash: An efficient and portable Web server , 1999, USENIX Annual Technical Conference, General Track.

[24]  David E. Culler,et al.  A Design Framework for Highly Concurrent Systems , 2000 .

[25]  Matt Welsh,et al.  The Staged Event-Driven Architecture for Highly-Concurrent Server Applications , 2000 .

[26]  Chuck Lever,et al.  Scalable Network I/O in Linux , 2000, USENIX Annual Technical Conference, FREENIX Track.

[27]  Eric Brewer,et al.  A design framework and a scalable storage platform to simplify internet service construction , 2000 .

[28]  Willy Zwaenepoel,et al.  IO-Lite: a unified I/O buffering and caching system , 1999, TOCS.

[29]  EDDIE KOHLER,et al.  The click modular router , 2000, TOCS.