The Need for Async
summary
Explains why async reduces tail latency by avoiding blocking on shared thread pools, traces causes from kernel socket selector behavior and the C10K problem through to CPU/thread utilization tradeoffs, and compares IO models (blocking, NIO, sendfile/“zero copy”). Demonstrates measurement tools and methodology: HDR Histogram for tails, JMH for microbenchmarks, perf and flame graphs for hotspots. Shows a sorting benchmark that produced ~2 GB/s allocation pressure, and describes an immutable public API backed by mutable, lock-free internals (Akka Streams) that actually achieves the promised performance.
AI-written summary · about
chapters (16)
- 0:00Introduction
- 2:08Agenda
- 9:39Latency
- 12:00Trick questions
- 13:53HDR histogram
- 18:29Concurrent data structure
- 21:20Lockfree
- 23:33Spin
- 25:34Mutating
- 27:26Reference Retransfer
- 28:35User Mode vs Kernel Mode
- 30:41Synchronous IO
- 31:26Zero Copy
- 32:30Lessons Learned
- 36:29JMH
- 43:31Benchmarking
related talks
49mNeed for ASYNC: in pursuit of scalable internet-scale applications
43mAsync vs Sync Programming
01h 31mHistory of Time: Asynchronous C++
01h 03mBuilding responsive and scalable applications
26mTackling Contention: The Monsters Inside the 'sync.Locker'
48m“Is Parallel Programming still hard? PART 2 of 2”
27mThe Mutability Matrix of Pain
36mThe Good, The Bad, and the Ugly: A Journey from this synchronized to Asynchronous Code
