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

Slides:



Advertisements
Similar presentations
Multiple Processor Systems
Advertisements

Database Architectures and the Web
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,
Department of Computer Science and Engineering University of Washington Brian N. Bershad, Stefan Savage, Przemyslaw Pardyak, Emin Gun Sirer, Marc E. Fiuczynski,
Capriccio: Scalable Threads for Internet Services Rob von Behren, Jeremy Condit, Feng Zhou, Geroge Necula and Eric Brewer University of California at Berkeley.
Flash: An efficient and portable Web server Authors: Vivek S. Pai, Peter Druschel, Willy Zwaenepoel Presented at the Usenix Technical Conference, June.
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.
1 Web Server Performance in a WAN Environment Vincent W. Freeh Computer Science North Carolina State Vsevolod V. Panteleenko Computer Science & Engineering.
Concurrency, Thread and Event CS6410 Sept 6, 2011 Ji-Yong Shin.
CS533 Concepts of Operating Systems Class 5 Event-Based Systems.
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.
CS 623 Lecture #9 Yen-Yu Chen Utku Irmak. Papers to be read Better operating system features for faster network servers.Better operating system features.
Precept 3 COS 461. Concurrency is Useful Multi Processor/Core Multiple Inputs Don’t wait on slow devices.
Capriccio: Scalable Threads for Internet Services Rob von Behren, Jeremy Condit, Feng Zhou, Geroge Necula and Eric Brewer University of California at Berkeley.
CS533 Concepts of Operating Systems Class 5 Event-Based Systems.
1 Introduction to Load Balancing: l Definition of Distributed systems. Collection of independent loosely coupled computing resources. l Load Balancing.
CS533 Concepts of Operating Systems Class 2 Thread vs Event-Based Programming.
Concurrency, Threads, and Events Robbert van Renesse.
User-Level Interprocess Communication for Shared Memory Multiprocessors Brian N. Bershad, Thomas E. Anderson, Edward D. Lazowska, and Henry M. Levy Presented.
16: Distributed Systems1 DISTRIBUTED SYSTEM STRUCTURES NETWORK OPERATING SYSTEMS The users are aware of the physical structure of the network. Each site.
PRASHANTHI NARAYAN NETTEM.
NPACI: National Partnership for Advanced Computational Infrastructure August 17-21, 1998 NPACI Parallel Computing Institute 1 Cluster Archtectures and.
Scalable Server Load Balancing Inside Data Centers Dana Butnariu Princeton University Computer Science Department July – September 2010 Joint work with.
SEDA: An Architecture for Well-Conditioned, Scalable Internet Services
SEDA – Staged Event-Driven Architecture
Advanced Network Architecture Research Group 2001/11/149 th International Conference on Network Protocols Scalable Socket Buffer Tuning for High-Performance.
SEDA: An Architecture for Well-Conditioned, Scalable Internet Services
9/14/2015B.Ramamurthy1 Operating Systems : Overview Bina Ramamurthy CSE421/521.
Introduction and Overview Questions answered in this lecture: What is an operating system? How have operating systems evolved? Why study operating systems?
B.Ramamurthy9/19/20151 Operating Systems u Bina Ramamurthy CS421.
M i SMob i S Mob i Store - Mobile i nternet File Storage Platform Chetna Kaur.
Pattern Oriented Software Architecture for Networked Objects Based on the book By Douglas Schmidt Michael Stal Hans Roehnert Frank Buschmann.
Rensselaer Polytechnic Institute CSCI-4210 – Operating Systems CSCI-6140 – Computer Operating Systems David Goldschmidt, Ph.D.
Webcommerce Computer Networks Webcommerce by Linnea Reppa Douglas Martindale Lev Shalevich.
Advanced Network Architecture Research Group 2001/11/74 th Asia-Pacific Symposium on Information and Telecommunication Technologies Design and Implementation.
Computer Science 1 Adaptive Overload Control for Busy Internet Servers Matt Welsh and David Culler USITS 2003 Presented by: Bhuvan Urgaonkar.
Capriccio: Scalable Threads for Internet Services Rob von Behren, Jeremy Condit, Feng Zhou, Geroge Necula and Eric Brewer University of California at Berkeley.
Distributed System Concepts and Architectures 2.3 Services Fall 2011 Student: Fan Bai
Processes CSCI 4534 Chapter 4. Introduction Early computer systems allowed one program to be executed at a time –The program had complete control of the.
Computing Simulation in Orders Based Transparent Parallelizing Pavlenko Vitaliy Danilovich, Odessa National Polytechnic University Burdeinyi Viktor Viktorovych,
Intel Research & Development ETA: Experience with an IA processor as a Packet Processing Engine HP Labs Computer Systems Colloquium August 2003 Greg Regnier.
1 Combining Events and Threads for Scalable Network Services Peng Li and Steve Zdancewic University of Pennsylvania PLDI 2007, San Diego.
5204 – Operating Systems Threads vs. Events. 2 CS 5204 – Operating Systems Forms of task management serial preemptivecooperative (yield) (interrupt)
Measuring the Capacity of a Web Server USENIX Sympo. on Internet Tech. and Sys. ‘ Koo-Min Ahn.
CSI 3125, Preliminaries, page 1 SERVLET. CSI 3125, Preliminaries, page 2 SERVLET A servlet is a server-side software program, written in Java code, that.
SEDA: An Architecture for Well-Conditioned, Scalable Internet Services Matt Welsh, David Culler, and Eric Brewer Computer Science Division University of.
SEDA An architecture for Well-Conditioned, scalable Internet Services Matt Welsh, David Culler, and Eric Brewer University of California, Berkeley Symposium.
Performance Testing Test Complete. Performance testing and its sub categories Performance testing is performed, to determine how fast some aspect of a.
Threads versus Events CSE451 Andrew Whitaker. This Class Threads vs. events is an ongoing debate  So, neat-and-tidy answers aren’t necessarily available.
Chapter 1 Basic Concepts of Operating Systems Introduction Software A program is a sequence of instructions that enables the computer to carry.
SEDA: An Architecture for Scalable, Well-Conditioned Internet Services
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.
Multithreading vs. Event Driven in Code Development of High Performance Servers.
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
Capriccio – A Thread Model
Operating Systems Bina Ramamurthy CSE421 11/27/2018 B.Ramamurthy.
CS533 Concepts of Operating Systems Class 7
AIMS Equipment & Automation monitoring solution
Why Threads Are A Bad Idea (for most purposes)
Why Threads Are A Bad Idea (for most purposes)
Why Threads Are A Bad Idea (for most purposes)
SEDA: An Architecture for Well-Conditioned, Scalable Internet Services
Presentation transcript:

SEDA: An Architecture for Well-Conditioned, Scalable Internet Services by, Matt Welsh, David Culler, and Eric Brewer Computer Science Division University of California, Berkeley presented by, Jarett Creason January 30th, 2008

SEDA – Staged Event-Driven Architecture A robust, high-performance platform for massively concurrent Internet services An architecture that can be applied to many different types of services Haboob - Web Server Gnutella – Router Arashi – Dynamic Service (not discussed here)‏ Designed to be flexible to handle large amounts of load efficiently and effectively

Problem Proposed to Solve Give fast, reliable access to millions of users Huge variations in server service load More and more dynamic content Service logic changes often, which requires redesign of algorithms Services hosted on general purpose facilities, not specialized hardware

Traditional Techniques vs. SEDA Traditional Processes & Threads Transparent resource virtualization Very specialized for specific roles Excessive engineering burden to convert to different architectures SEDA Events mixed with threads Allow applications to make informed scheduling decisions General purpose mechanisms Easier for programmers to adapt and use for other applications

Traditional – More in depth Thread per request Most common strategy and easy to program High overhead and serious performance degradation Virtualization hides presence of limited resources

Traditional – More in depth Bounded Thread Pool Limits the total amount of threads possible Solution to serious performance degradation Apache, IIS, IBM WebSphere, etc. Unfairness to clients – requests can queue up for very long periods of time under heavy load

Traditional – More in depth Event-Driven Concurrency Small number of threads with a continuous loop processing events from a queue Robust when dealing with heavy loads; little degradation to throughput Scheduling and ordering must be defined, generally very specific and when new functionality is added, the algorithm must be redefined

SEDA – Goals Support Massive Concurrency Avoid performance degradation, make use of event driven execution Simplify Construction Shield programmers from the details of scheduling and resource management; support modular construction; support debugging Enable Introspection Applications should be able to modify how they behave under heavy load, reschedule and prioritize Support Self-Tuning Resource Management Systems should be able to adapt to changing circumstances

SEDA – Stages Self contained application components Includes: event handler, incoming event queue and thread pool Managed by a “controller” Each stage has a dynamically bounded thread pool

SEDA – Network of Stages Event queues connect the separate stages Event queues can be finite Backpressure – blocking on a full queue Load shedding – dropping events Other – send error to user, or provide degraded service This provides modularity and more control, but with that comes latency Debugger can trace a bogged down stage easily

SEDA – Dynamic Resource Controllers Goal is to shield programmers from performance tuning Automatically adapts resource usage for the stage based on performance and demand

Sandstorm – SEDA Prototype Internet Services Platform Completely written in Java API for all SEDA functions create and destroy stages queue operations profiling and debugging Thread manager handles a pool of threads

Asynchronous I/O Primitives Highly concurrent programs need non-blocking I/O so the rest of the program can proceed without having to wait for the slow I/O Two SEDA Sandstorm stages for I/O Socket I/O File I/O

Asynchronous Socket I/O Easy to use non-blocking socket I/O Provided by the OS Applications create instances of the classes: asyncClientSocket, asyncServerSocket, asyncConnection Simply a "SEDA way" of communicating efficiently with sockets

Asynchronous File I/O Very different than Sandstorms socket I/O The OS does not provide a way to do asynchronous file I/O (Linux kernel 2.2)‏ Uses a thread pool to simulate asynchronous file I/O

Haboob – Web Server "Haboobs" are huge desert dust storms Made up of 10 total stages Four devoted to asynchronous I/O HttpParse – accepts new client connections and processes packets HttpRecv – accepts HTTP connections and request events PageCache – in memory web page cache CacheMiss – handles page chache misses HttpSend – sends responses to clients

Haboob – Performance Trade off between low average response time and low variance in response time

Packet router for Gnutella Gnutella is a p2p file sharing service 3 stages GnutellaServer – accepts TCP connections and processes packets GnutellaRouter – performs packet routing and routing table maintenance GnutellaCatcher – helper stage; used to connect to a site with a list of hosts Used the profiling and debugging features in Sandstorm to find a memory leak which was causing the program to crash

Conclusions SEDA attempts to be an architecture for massively concurrent internet services which are robust, easy to program and handle great variations in load gracefully. The use of event queues and dynamic resource control can be used in the future for novel scheduling techniques Was originally implemented with JDK 1.3 and Linux kernel 2.2 (both of which have advanced)‏ Current status of SEDA Research has stopped, last release on SourceForge July 2002 “The most fundamental aspect of the SEDA architecture is the programming model that supports stage-level backpressure and load management. Our goal was never to show that SEDA outperforms other server designs, but rather that acceptable performance can be achieved while providing a disciplined approach to overload management. Clearly more work is needed to show that this goal can be met in a range of application and server environments.”