Decouple the control plane from the data plane on receive queues#8892
Decouple the control plane from the data plane on receive queues#8892GGraziadei wants to merge 1 commit into
Conversation
|
Thanks @reiabreu, your intuition was entirely correct. Using a streaming grouping driven by a feedback control loop is fundamental to decoupling the control plane from the data plane. In particular, enabling Here are the key takeaways from the performance scenarios:
In conclusion, it makes sense to keep the dedicated control queue (CQ) optional. It should not be enabled by default. Jitter-Aware Stream Grouping_ Decoupling the Control Queue.pdf Evaluating the Effect of the Control Queue in a Backpressured Scenario.pdf Evaluating the cost of a separate Control Queue.pdf Raw data: |
|
Thx for the PR. The overall design looks good to me: opt-in, default off and well tested. A few things I would like to see changed before merging:
The remaining behavioral risks (control tuples overtaking co-enqueued data, drop instead of block) are fine with me as long as they are documented as per point 2. |
What is the purpose of the change
Fixes #8816
A Storm executor multiplexes two fundamentally different kinds of traffic onto its single inbound JCQueue:
traffic that backpressure is meant to throttle.
This PR introduces an optional control receive queue. When enabled, this dedicated queue is prioritized and completely drained before the standard data queue is processed. This ensures that critical coordination traffic bypasses data plane bottlenecks.
For additional context and technical details, please refer to the discussion inside the issue thread.
How was the change tested