why events are a bad idea
play

WHY EVENTS ARE A BAD IDEA Rob von Behren, Jeremy Condit, Eric Brewer - PowerPoint PPT Presentation

WHY EVENTS ARE A BAD IDEA Rob von Behren, Jeremy Condit, Eric Brewer threaded servers failed to scale up throughput event-based programming became popular threads are simpler and more natural downsides of threads due to poor


  1. WHY EVENTS ARE A BAD IDEA Rob von Behren, Jeremy Condit, Eric Brewer

  2. • threaded servers failed to scale up throughput • event-based programming became popular • threads are simpler and more natural • downsides of threads due to poor implementations • thread package + compiler support = right paradigm

  3. THREADS 30000 400 Throughput Latency request 1 Linear (ideal) latency 350 25000 300 Throughput, tasks/sec request 2 20000 250 Latency, msec 15000 200 dispatch send result network dispatcher request 3 network 150 10000 100 request 4 5000 50 request N 0 0 1 4 16 64 256 1024 Number of threads Figure 1:

  4. EVENTS 40000 Throughput request FSM 1 35000 Latency Linear (ideal) latency 30000 30000 request FSM 2 Throughput, tasks/sec 25000 Latency, msec disk 20000 20000 scheduler request FSM 3 15000 network 10000 10000 request FSM 4 5000 0 0 request FSM N 1 32 1024 32768 1048576 Number of tasks in pipeline

  5. DUALITY Events Threads event handlers monitors events accepted by handler functions exported by module SendMessage / AwaitReply procedure call, or fork/join SendReply return from procedure waiting for messages waiting on condition variables

  6. NON-PROBLEMS Problem Solution performance optimized user-level threading restrictive control flow complicated patterns not used expensive synchronisation cooperative threads inefficient state management stack-shrinking compiler uninformed scheduling magic?

  7. AGAINST EVENTS • events obfuscate control flow • cluttered exception handling and state lifetime • event-driven systems fall back to threads for complex parts • fixing problems of events is worse than using threads

  8. EVALUATION 900 Knot � C (favor connections) 800 Knot � A (favor accept) 700 Haboob Mbits / second 600 500 400 300 200 100 0 1 4 16 64 256 1024 4096 16384 65536 Concurrent Clients

  9. NON-PROBLEMS Problem Solution performance optimized user-level threading restrictive control flow complicated patterns not used expensive synchronisation cooperative threads inefficient state management stack-shrinking compiler uninformed scheduling magic?

  10. SPECTRUM Threads Events

  11. DISCUSSION • events obfuscate control flow: Should you worry? • state lifetime: garbage collection • compilers can help event systems: closures • Fixing problems with threads turns them into events? • Are desktop apps like servers? Or do they exhibit the complicated fan-in/fan-out patters the authors dismiss?

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend