SEDA: An Architecture for Well-Conditioned, Scalable Internet Services Matt Welsh, David Culler, and Eric Brewer Computer Science Division University of.

Slides:



Advertisements
Similar presentations
Welcome to Middleware Joseph Amrithraj
Advertisements

CS 443 Advanced OS Fabián E. Bustamante, Spring 2005 Resource Containers: A new Facility for Resource Management in Server Systems G. Banga, P. Druschel,
1 SEDA: An Architecture for Well- Conditioned, Scalable Internet Services Matt Welsh, David Culler, and Eric Brewer Computer Science Division University.
CS533 Concepts of Operating Systems Jonathan Walpole.
SEDA: An Architecture for Well- Conditioned, Scalable Internet Services Matt Welsh, David Culler, and Eric Brewer Computer Science Division University.
Concurrency, Thread and Event CS6410 Sept 6, 2011 Ji-Yong Shin.
CS533 Concepts of Operating Systems Class 5 Event-Based Systems.
Understanding Networked Applications: A First Course Chapter 17 by David G. Messerschmitt.
SEDA: An Architecture for Well-Conditioned, Scalable Internet Services Matt Welsh, David Culler, and Eric Brewer Computer Science Division University of.
Capriccio: Scalable Threads for Internet Services ( by Behren, Condit, Zhou, Necula, Brewer ) Presented by Alex Sherman and Sarita Bafna.
Computer Science Lecture 6, page 1 CS677: Distributed OS Processes and Threads Processes and their scheduling Multiprocessor scheduling Threads Distributed.
490dp Synchronous vs. Asynchronous Invocation Robert Grimm.
CS533 Concepts of Operating Systems Class 5 Event-Based Systems.
Capriccio: Scalable Threads for Internet Services Rob von Behren, Jeremy Condit, Feng Zhou, Geroge Necula and Eric Brewer University of California at Berkeley.
Computer Science Scalability of Linux Event-Dispatch Mechanisms Abhishek Chandra University of Massachusetts Amherst David Mosberger Hewlett Packard Labs.
CS533 Concepts of Operating Systems Class 5 Event-Based Systems.
Why Events Are a Bad Idea (for high-concurrency servers) Author: Rob von Behren, Jeremy Condit and Eric Brewer Presenter: Wenhao Xu Other References: [1]
Computer Science Lecture 2, page 1 CS677: Distributed OS Last Class: Introduction Distributed Systems – A collection of independent computers that appears.
“Why Events are a Bad Idea (For high-concurrency servers)” Paper by Rob von Behren, Jeremy Condit and Eric Brewer, May 2003 Presentation by Loren Davis,
CS533 Concepts of Operating Systems Class 2 Thread vs Event-Based Programming.
Concurrency, Threads, and Events Robbert van Renesse.
CS533 Concepts of Operating Systems Class 2 The Duality of Threads and Events.
Adaptive Content Delivery for Scalable Web Servers Authors: Rahul Pradhan and Mark Claypool Presented by: David Finkel Computer Science Department Worcester.
SEDA: An Architecture for Well-Conditioned, Scalable Internet Services
SEDA – Staged Event-Driven Architecture
Client/Server Architectures
SEDA: An Architecture for Well-Conditioned, Scalable Internet Services by, Matt Welsh, David Culler, and Eric Brewer Computer Science Division University.
SEDA: An Architecture for Well-Conditioned, Scalable Internet Services
Adaptive Overload Control for Busy Internet Servers Matt Welsh and David Culler USENIX Symposium on Internet Technologies and Systems (USITS) 2003 Alex.
SEDA: An Architecture for Well-Conditioned, Scalable Internet Services Presented by Changdae Kim and Jaeung Han OFFENCE.
Orbited Scaling Bi-directional web applications A presentation by Michael Carter
Rapid Development of High Performance Servers Khaled ElMeleegy Alan Cox Willy Zwaenepoel.
U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science Computer Systems Principles Concurrency Patterns Emery Berger and Mark Corner University.
1 Geospatial and Business Intelligence Jean-Sébastien Turcotte Executive VP San Francisco - April 2007 Streamlining web mapping applications.
Computer Science 1 Adaptive Overload Control for Busy Internet Servers Matt Welsh and David Culler USITS 2003 Presented by: Bhuvan Urgaonkar.
Server to Server Communication Redis as an enabler Orion Free
Distributed Information Systems. Motivation ● To understand the problems that Web services try to solve it is helpful to understand how distributed information.
Enterprise Java Beans. Model 1 J2EE – Web View Model/View/Controller Model View Control Data base Web Server Model One Architecture HTTP Request HTTP.
5204 – Operating Systems Threads vs. Events. 2 CS 5204 – Operating Systems Forms of task management serial preemptivecooperative (yield) (interrupt)
Department of Computer Science and Software Engineering
Presenting: Why Events Are A “Bad” Idea ( for high-concurrency servers) Paper by: Behren, Condit and Brewer, 2003 Presented by: Rania Elnaggar 1/30/2008.
By: Rob von Behren, Jeremy Condit and Eric Brewer 2003 Presenter: Farnoosh MoshirFatemi Jan
SEDA An architecture for Well-Conditioned, scalable Internet Services Matt Welsh, David Culler, and Eric Brewer University of California, Berkeley Symposium.
Threads versus Events CSE451 Andrew Whitaker. This Class Threads vs. events is an ongoing debate  So, neat-and-tidy answers aren’t necessarily available.
1 Why Events Are A Bad Idea (for high-concurrency servers) By Rob von Behren, Jeremy Condit and Eric Brewer (May 2003) CS533 – Spring 2006 – DONG, QIN.
Threads. Readings r Silberschatz et al : Chapter 4.
An Efficient Threading Model to Boost Server Performance Anupam Chanda.
CS533 Concepts of Operating Systems Jonathan Walpole.
SEDA: An Architecture for Scalable, Well-Conditioned Internet Services
Code Development for High Performance Servers Topics Multithreaded Servers Event Driven Servers Example - Game Server code (Quake) A parallelization exercise.
for Event Driven Servers
Paper Review of Why Events Are A Bad Idea (for high-concurrency servers) Rob von Behren, Jeremy Condit and Eric Brewer By Anandhi Sundaram.
SEDA. How We Got Here On Tuesday we were talking about Multics and Unix. Fast forward years. How has the OS (e.g., Linux) changed? Some of Multics.
Distributed Handler Architecture (DHArch) Beytullah Yildiz Advisor: Prof. Geoffrey C. Fox.
Multithreading vs. Event Driven in Code Development of High Performance Servers.
Introduction to Operating Systems Concepts
Chapter 4 – Thread Concepts
Capriccio:Scalable Threads for Internet Services
SEDA: An Architecture for Scalable, Well-Conditioned Internet Services
Threads vs. Events SEDA – An Event Model 5204 – Operating Systems.
Why Events Are A Bad Idea (for high-concurrency servers)
Processes and Threads Processes and their scheduling
Chapter 4 – Thread Concepts
Capriccio – A Thread Model
Admission Control and Request Scheduling in E-Commerce Web Sites
Software models - Software Architecture Design Patterns
CS533 Concepts of Operating Systems Class 7
Why Events Are a Bad Idea (for high concurrency servers)
SEDA: An Architecture for Well-Conditioned, Scalable Internet Services
CSC Multiprocessor Programming, Spring, 2011
Presentation transcript:

SEDA: An Architecture for Well-Conditioned, Scalable Internet Services Matt Welsh, David Culler, and Eric Brewer Computer Science Division University of California, Berkeley Symposium on Operating Systems Principles (SOSP), October for: CS533 - Concepts of Operating Systems Portland State University, Professor Jonathan Walpole presented by: Dan Coates January 12th, 2009

01/12/09Coates - SEDA2 Motivation Prototypical application: Web server Must handle “Slashdot effect” gracefully Well-conditioned service: simple pipeline without degradation beyond load saturation Unlike traditional OS load balancing concerns source: Wikipedia

01/12/09Coates - SEDA3 SEDA From Matt Welsh's PhD work at UC Berkeley ( )‏ Architecture for highly concurrent server applications Hybrid design combines elements of threaded and event-based paradigms Programming framework attempts to separate application logic from OS concurrency details while providing performance control and profiling in a principled way

01/12/09Coates - SEDA4 Outline Thread vs. event-based approaches (to Web services)‏ SEDA model SEDA specifics: I/O and dynamic resource allocation Results Summary Criticisms/Questions

01/12/09Coates - SEDA5 Anatomy of a simple HTTP server Source: Finite state machine (FSM)‏ Can be implemented using threads or events (or SEDA)‏ Need to consider blocking in each node

01/12/09Coates - SEDA6 Thread-based concurrency Create thread per task Straightforward to program I/O concurrency implicitly handled

01/12/09Coates - SEDA7 Threaded server degradation Doesn't scale well due to context overhead at high load Throughput decreases Latency curve worse than linear

01/12/09Coates - SEDA8 Bounded Thread Pool Limit the number of requests, reject additional connections Common solution (Apache, IIS, Netscape Server, etc.)‏ BUT:  How to determine number of threads to use?  Is unfair at load saturation: long waiting times  Difficult to profile and tune

01/12/09Coates - SEDA9 Event-based model Single thread handles requests, no concurrency issues Event handlers should be short-lived I/O must be non-blocking

01/12/09Coates - SEDA10 Event-based performance Better performance: program has control of scheduling instead of OS, so lighter-weight contexts Constant throughput up to 1M tasks Latency is linear with number of tasks

01/12/09Coates - SEDA11 Disadvantages of events More difficult to program:  Need to maintain state throughout FSM  Application responsible for explicit control of scheduling No principled framework, so solutions are typically ad- hoc, lacking modularity “Structured event queues” attempt to provide modular designs, although SEDA was first to offer general- purpose architecture.

01/12/09Coates - SEDA12 Staged Event-Drive Architecture (SEDA)‏ Source: Decompose applications into independent stages separated by queues Each stage has its own thread pool for concurrent execution Separate queues provide clean boundary for modularity, security, and profile analysis/introspection (at cost of increased latency)‏

01/12/09Coates - SEDA13 Staged Event-Drive Architecture (SEDA)‏ Source: Finite event queues can provide:  backpressure: blocking on a full queue  load shedding: dropping events  errors to user, etc.

01/12/09Coates - SEDA14 A SEDA Stage Modular application component Event queue and thread pool managed by SEDA machinery, parameterized by application Controller dynamically adjusts resource allocation (optionally)‏ Application-supplied event handler

01/12/09Coates - SEDA15 Dynamic Resource Controllers  Automatic, adaptive performance tuning  No programmer intervention necessary Dynamically adjust number of threads allocated to stage based on actual measured usage Process variable number of requests during each time-step, for cache optimization and task aggregation

01/12/09Coates - SEDA16 Asynchronous I/O Usage of event queues requires asynchronous I/O When OS provides asynchronous I/O, SEDA provides a natural wrapper layer for applications to use (example: socket I/O)‏ If the OS only provides blocking I/O, need to explicitly create a stage with a bounded thread pool (example: file I/O)‏

01/12/09Coates - SEDA17 Asynchronous I/O Performance asyncSocket layer Uses non-blocking /dev/poll Performance compared to blocking sockets and thread pool

01/12/09Coates - SEDA18 Results: Sandstorm Sandstorm is a Java proof-of-concept platform to provide web services Authors have implemented a moderately simple Web server, and a peer-to-peer file sharing system

01/12/09Coates - SEDA19 Results: “Haboob” SEDA Web Server More complicated Web server, broken into stages Compared to Apache (150 static processes) and Flash (event- based)‏

01/12/09Coates - SEDA20 Results: “Haboob” SEDA Web Server Note decline in fairness for Apache While having high frequency of low response times, note heavy tail (with long response times) for Apache and Flash

01/12/09Coates - SEDA21 Results: Resource Throttling 1024 clients repeatedly request dynamic pages with I/O and computation Apache and vanilla Haboob process all requests, Flash quietly drops Haboob controller drops (with error) if average response time > 5 sec

01/12/09Coates - SEDA22 Summary SEDA provides a principled framework for implementing highly concurrent Web services The hybrid approach attempts to get best of both worlds: performance, with flexibility and ease of programming Based on the published results, it has robust performance, especially at saturation Ample opportunities for both manual and automatic tuning

01/12/09Coates - SEDA23 Criticisms/Questions While much mention was made of the need for supporting “dynamically changing services,” the Web server performance methodology used:  only static Web pages  loops with read, 20 ms sleep. More thorough testing employs randomization to more closely approximate real-world performance Does the effort in learning SEDA pay off? Only a handful of applications have employed the system in the last 7 years. I'm curious how much OS specifics (Linux , /dev/poll, JVM, etc.) impacted the results.

01/12/09Coates - SEDA24 Acknowledgments I made use of material from the SEDA website, Many of the screenshots from the SEDA paper were reused from previous class presentations, especially Jarett Creason's presentation from January Thank you for your attention!