A lone ask waits the full coalescing window with nothing to coalesce, so the quiet-room case pays 25s of dead time #1098

Open
opened 2026-08-22 21:21:45 +00:00 by coilyco-ops · 0 comments
Member

Filed by Darren (director seat), 2026-08-22. The second of two findings that lived only in a comment on #995. That issue is being worked now as the slot pool and will be retitled or closed around that work, so this needed a home of its own.

The finding, in the reporting seat's words

Olaf (ops seat), reading internal/coalesce on 2026-08-19:

The window taxes a lone asker. A single ask with no follow-up waits the full Window before its turn starts, because the window closes on batch size, elapsed window, or age cap, and only the middle one applies. At the packaged 25s that is 25s of dead time on every isolated question, which is most questions in a quiet room. An early close when the queue is empty and the pool has a free worker would cost no coalescing that was going to happen anyway.

Why this is worth fixing rather than tuning

The cost lands on the common case. A quiet room is the normal state of this lane, so the ask with no follow-up is most asks, and each one pays the full window before any work starts. Against turn times already measured at p50 40.9s and p95 180.1s on community.turn, a flat 25s of dead time in front is a large fraction of what a member experiences, and it is time in which nothing is happening rather than time spent answering.

Shortening the window is the wrong lever. It would trade the coalescing this lane exists for against latency in the quiet case, and coalescing is what turns six messages from one member into two turns. The condition to look at is not the window's length but whether there is anything to wait for.

Shape to consider

Close the window early when the queue holds nothing else for that tenant and the pool has a free worker. Neither term alone is enough: an empty queue with every worker busy still gains nothing from starting early, and a free worker with a filling queue is exactly the case the window is for.

Done when

A lone ask into a quiet room starts its turn without waiting the full window, and a burst from one member still coalesces exactly as it does today, both demonstrated rather than argued.

  • #995 - the slot pool, where this was found. Deliberately not carried there.
  • #1097 - the other finding rescued from the same comment.
  • #1082 - measure the coalescing lane, which is where a before-and-after number for this would come from.
**Filed by Darren (director seat), 2026-08-22.** The second of two findings that lived only in a comment on #995. That issue is being worked now as the slot pool and will be retitled or closed around that work, so this needed a home of its own. ## The finding, in the reporting seat's words Olaf (ops seat), reading `internal/coalesce` on 2026-08-19: > **The window taxes a lone asker.** A single ask with no follow-up waits the full `Window` before its turn starts, because the window closes on batch size, elapsed window, or age cap, and only the middle one applies. At the packaged 25s that is 25s of dead time on every isolated question, which is most questions in a quiet room. An early close when the queue is empty and the pool has a free worker would cost no coalescing that was going to happen anyway. ## Why this is worth fixing rather than tuning **The cost lands on the common case.** A quiet room is the normal state of this lane, so the ask with no follow-up is most asks, and each one pays the full window before any work starts. Against turn times already measured at p50 40.9s and p95 180.1s on `community.turn`, a flat 25s of dead time in front is a large fraction of what a member experiences, and it is time in which nothing is happening rather than time spent answering. **Shortening the window is the wrong lever.** It would trade the coalescing this lane exists for against latency in the quiet case, and coalescing is what turns six messages from one member into two turns. The condition to look at is not the window's length but whether there is anything to wait for. ## Shape to consider Close the window early when the queue holds nothing else for that tenant and the pool has a free worker. Neither term alone is enough: an empty queue with every worker busy still gains nothing from starting early, and a free worker with a filling queue is exactly the case the window is for. ## Done when A lone ask into a quiet room starts its turn without waiting the full window, and a burst from one member still coalesces exactly as it does today, both demonstrated rather than argued. ## Related * #995 - the slot pool, where this was found. Deliberately not carried there. * #1097 - the other finding rescued from the same comment. * #1082 - measure the coalescing lane, which is where a before-and-after number for this would come from.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-gaming/sirens-echo#1098
No description provided.