chore/fair-queueing-ck-spike#4352
Conversation
Baseline reproduces production age-order starvation; a fair discipline fixes it end-to-end through the real CK-dequeue Lua and concurrency gating.
At the concurrency-key grain the production age-order baseline starves keys (worst contention share 0.000 on skew); SFQ/stride/DRR fix it driving the real CK-dequeue Lua via ckIndex rescoring. Confirms the base-queue spike's ranking at the real #2617 seam.
Blind two-model review found the ckSkew/ckBalanced baseline starvation was a Redis lexicographic tie-break on equal enqueue timestamps, not age order. Redesigned scenarios so the backlog key keeps a genuinely old head and other keys arrive via poisson, so the baseline now exercises real age-order starvation (ckSkew baseline 0.187, worst key waits 1321ms; SFQ cuts it to 16ms). FINDINGS corrected: lead with per-key wait (contention share is volume-confounded for low-volume keys), and add the key fidelity limit the review surfaced: the harness serves one key per Lua call, while production batches and re-scores a served key mid-call, so this proves the ordering fix only at maxCount=1 and a production fix must advance per-key state inside the batched Lua. Softened 'viable' to 'worth a design spike'.
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
This is part 2 of 3 in a stack made with GitButler: