Multithreading vs. Event Driven in Code Development of High Performance Servers.

Slides:



Advertisements
Similar presentations
Lazy Asynchronous I/O For Event-Driven Servers Khaled Elmeleegy, Anupam Chanda and Alan L. Cox Department of Computer Science Rice University, Houston,
Advertisements

Chap 4 Multithreaded Programming. Thread A thread is a basic unit of CPU utilization It comprises a thread ID, a program counter, a register set and a.
Threads.
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.
Chapter 6 Limited Direct Execution
ECE 526 – Network Processing Systems Design Software-based Protocol Processing Chapter 7: D. E. Comer.
CSC 501 Lecture 2: Processes. Von Neumann Model Both program and data reside in memory Execution stages in CPU: Fetch instruction Decode instruction Execute.
Course: Operating Systems Instructor: Umar Kalim NUST Institute of Information Technology, Pakistan Operating Systems.
SEDA: An Architecture for Well-Conditioned, Scalable Internet Services Matt Welsh, David Culler, and Eric Brewer Computer Science Division University of.
Precept 3 COS 461. Concurrency is Useful Multi Processor/Core Multiple Inputs Don’t wait on slow devices.
Threads - Definition - Advantages using Threads - User and Kernel Threads - Multithreading Models - Java and Solaris Threads - Examples - Definition -
CS533 Concepts of Operating Systems Class 5 Event-Based Systems.
Threads CSCI 444/544 Operating Systems Fall 2008.
Chapter 4: Threads. 4.2 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th edition, Jan 23, 2005 Chapter 4: Threads Overview Multithreading.
CPS110: Implementing threads/locks on a uni-processor Landon Cox.
Threads CS 416: Operating Systems Design, Spring 2001 Department of Computer Science Rutgers University
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8 th Edition Chapter 4: Threads.
SEDA: An Architecture for Well-Conditioned, Scalable Internet Services
 A JavaScript runtime environment running Google Chrome’s V8 engine ◦ a.k.a. a server-side solution for JS ◦ Compiles JS, making it really fast  Runs.
Chapter 51 Threads Chapter 5. 2 Process Characteristics  Concept of Process has two facets.  A Process is: A Unit of resource ownership:  a virtual.
1 Lecture 4: Threads Operating System Fall Contents Overview: Processes & Threads Benefits of Threads Thread State and Operations User Thread.
Silberschatz, Galvin and Gagne ©2011Operating System Concepts Essentials – 8 th Edition Chapter 4: Threads.
CSC 501 Lecture 2: Processes. Process Process is a running program a program in execution an “instantiation” of a program Program is a bunch of instructions.
Threads Many software packages are multi-threaded Web browser: one thread display images, another thread retrieves data from the network Word processor:
1 RTOS Design Some of the content of this set of slides is taken from the documentation existing on the FreeRTOS website
Lecture 3 Process Concepts. What is a Process? A process is the dynamic execution context of an executing program. Several processes may run concurrently,
Operating Systems ECE344 Ashvin Goel ECE University of Toronto Thread Scheduling.
Continuations And Java Regis -
Rapid Development of High Performance Servers Khaled ElMeleegy Alan Cox Willy Zwaenepoel.
Multiprogramming. Readings r Silberschatz, Galvin, Gagne, “Operating System Concepts”, 8 th edition: Chapter 3.1, 3.2.
Scheduling Lecture 6. What is Scheduling? An O/S often has many pending tasks. –Threads, async callbacks, device input. The order may matter. –Policy,
Chapter 2 Processes and Threads Introduction 2.2 Processes A Process is the execution of a Program More specifically… – A process is a program.
1 Lecture 4: Threads Advanced Operating System Fall 2010.
CPS110: Implementing threads Landon Cox. Recap and looking ahead Hardware OS Applications Where we’ve been Where we’re going.
Processes, Threads, and Process States. Programs and Processes  Program: an executable file (before/after compilation)  Process: an instance of a program.
Processes & Threads Introduction to Operating Systems: Module 5.
LAIO: Lazy Asynchronous I/O For Event Driven Servers Khaled Elmeleegy Alan L. Cox.
CSC 360, Instructor: Kui Wu Thread & PThread. CSC 360, Instructor: Kui Wu Agenda 1.What is thread? 2.User vs kernel threads 3.Thread models 4.Thread issues.
Threads versus Events CSE451 Andrew Whitaker. This Class Threads vs. events is an ongoing debate  So, neat-and-tidy answers aren’t necessarily available.
An Efficient Threading Model to Boost Server Performance Anupam Chanda.
Code Development for High Performance Servers Topics Multithreaded Servers Event Driven Servers Example - Game Server code (Quake) A parallelization exercise.
1 Why Threads are a Bad Idea (for most purposes) based on a presentation by John Ousterhout Sun Microsystems Laboratories Threads!
for Event Driven Servers
Operating System Concepts
CPS110: Implementing threads on a uni-processor Landon Cox January 29, 2008.
Lecturer 3: Processes multithreaded Operating System Concepts Process Concept Process Scheduling Operation on Processes Cooperating Processes Interprocess.
Advanced Operating Systems CS6025 Spring 2016 Processes and Threads (Chapter 2)
Scheduler activations Landon Cox March 23, What is a process? Informal A program in execution Running code + things it can read/write Process ≠
Multiprogramming. Readings r Chapter 2.1 of the textbook.
Introduction to Operating Systems Concepts
Operating System Concept
OPERATING SYSTEM CONCEPT AND PRACTISE
Chapter 4: Threads.
Processes and threads.
Process concept.
Threads vs. Events SEDA – An Event Model 5204 – Operating Systems.
Why Events Are A Bad Idea (for high-concurrency servers)
CS 6560: Operating Systems Design
Scheduler activations
Chapter 4: Multithreaded Programming
Intro to Processes CSSE 332 Operating Systems
Chapter 4: Threads.
Operating System Concepts
Threads and Concurrency
Fine-grained vs Coarse-grained multithreading
Chapter 4: Threads.
CS703 – Advanced Operating Systems
Chapter 4: Threads.
CS Introduction to Operating Systems
Presentation transcript:

Multithreading vs. Event Driven in Code Development of High Performance Servers

Goals Maximize server utilization and decrease its latency. –Server process doesn’t block! Robust under heavy loads. Relatively easy to develop.

Key Idea Event Driven Multi-Threaded Programming level: Implementation level: Multi-threaded serversEvent driven servers

Key Idea Get the best of the two worlds. Event Driven Multi-Threaded Programming level: Implementation level: Multi-threaded serversEvent driven servers Lazy threaded servers

Backgound: AIO Asynchronous I/O mainly used for disk reads/writes. Issue disk request and return immediately without blocking for results. On completion an event is raised.

Servers Architectures: a- Multi-threaded Servers  Kernel thread per request executing the request handler.  A thread blocking on I/O doesn’t block the server.  Ex: Apache, MySql. Request Handler A B C Function Calls

Multi-threaded Servers (Cont.) Advantages: + Relatively easy to develop. Disadvantages: - Not good performance. Thread scheduling. Context switching. - Doesn’t scale. Under heavy load, many threads would be created exhausting kernel’s memory, crashing the server.

Needed for Event-Driven servers Kernel event notification mechanism. Supported by FreeBSD Kernel. Events queued in a kernel queue, and delivered to user by kernel calls. Events usually correspond to AIO completions, or socket reads/writes. Asynchronous I/O

 Single thread (event loop).  AIO operations.  I/O completions / Requests (events) put in Event Queue.  Continuations.  Ex:Flash web server (slightly different architecture). + High performance. + Scalable/Robust. - Hard to write. b- Event Driven Servers Event Loop A1 B1 C1 A2 B2 C2 Events From Kernel “Blocking” operation Event Queue (KQueue)

Lazy Threading Similar design to event driven but no continuations. Threads yield control on fixed points (I/O).  If request handler doesn’t “block” –Run handler to completion then use same thread to handle next event.  Else –Suspend current thread, create another user thread to handle next event.

Wrappers / Thread Suspension IO_Wrapper(..) { uc = save_user_context(..); /* save the current user thread context to be able to resume it later */ aio_func(..); /* non-blocking I/O call */ stack=allocate_stack(); switch_thread(event_loop,stack); /* suspend current thread and create a new thread running the event loop using the newly allocated stack */. } Wrappers around “blocking” operations to create the blocking illusion. Uses AIO. Saves current stack instead of unwinding it. Creates a user thread by jumping to the event loop and using a new stack.

Thread Resumption Event_loop() {. e = get_event(..); /* read new event from the kernel’s kqueue */ if e is completion of aio_func(..) run_thread(uc); /* dispose current thread and resume the IO_Wrapper from where it has stopped */. } Restores registers and jumps back to wrapper as if blocking has finished. Current thread is disposed as it’s useless. Wrapper’s thread eventually returns to the event loop after handling its request.

Summary Yes NoHigh Performance No YesThread / request? Yes (user) NoYes (kernel) >1 thread NoN/AYesArbitrary thread yield YesNoYes“Easy” to build Yes NoScalable Lazy- Threaded Event Driven Multi- Threaded