BBQ: A Block-based Bounded Queue for Exchanging Data and Profiling
summary
BBQ implements a block-based ringbuffer that splits the buffer into blocks so producers and consumers avoid enq‑deq contention when they operate on different blocks, using per-block entry head/tail plus allocated/produced counters to allow out‑of‑order completion without blocking. It uses scalable atomics like fetch-and-add, moves the slower block-head update rarely, and is verified with model‑checking tools (gmc/Dartagnan), which uncovers three weak‑memory bugs during development. Microbenchmarks show 11.3x–42.4x and real workloads up to 1.5x/50.5x/11.1x improvements versus Linux/DPDK/io_uring/Disruptor.
AI-written summary · about
chapters (9)
- 0:00Intro
- 1:55Story 1: Tracing overhead and operation interference
- 3:59Interference sources - Existing work
- 6:24Story 2: Oversubscription and out-of-order operations
- 8:40Migrating from x86 to Arm
- 11:23How do people develop for WMM?
- 16:10Dealing with out-of-order operations
- 18:24Correctness on WMMs with practical verification
- 20:40DPDK Test Suite (DTS) - Multiprocess benchmark
related talks
01h 07mBuilding Robust Inter-Process Queues in C++
01h 05mAn Interesting Lock-free Queue - Part 2 of N
01h 02mIntro to Concurrent Programming 2/3: Modern Queues and Flat Combining
01h 32mLock-free programming with modern C++
15mBWoS: Formally Verified Block-based Work Stealing for Parallel Processing
51mDevelopment of Multi-threaded applications
01h 08mThinking Outside the Synchronisation Quadrant
25mTackling Contention : The Monster in sync.Locker
