test(arq): instrument the io_uring RX drop (timeout theory refuted) #160
No reviewers
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
femboy/yip!160
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/arq-rx-idle-timeout"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What (repurposed)
The original timeout-bump theory was refuted by its own diagnostic: the next uring CI run printed
stop=idle idle_gap=30.0at 80.1% delivery — the receiver waited the full 30s and the packets never came. So it is not receiver patience; the io_uring RX path itself drops datagrams under the container's load, while poll delivers 99.3% in the same run.This PR is now a diagnostic, not a fix:
RX_IDLE30→10 (kept overridable; keptudp_rx.pystop=/idle_gap=which refuted the theory)./proc/net/snmpUdpRcvbufErrorsdeltas around the blast. A largeRcvbufErrorson arqA under uring, ~0 under poll, localizes the loss to the underlay socket overflowing because uring drains too slowly (UDP_RECV_DEPTH=16single-shot recvs vs poll's batched recvmmsg).The next CI run reads this out. The real fix (deeper recv depth / multishot recv / force rmem) follows once the counter confirms the mechanism. Not reproducible on bare metal (RcvbufErrors=0, ≥99.2% both drivers, even under load).
fix(test): cover arq-uring CI flake (outlast retransmit tail)to test(arq): instrument the io_uring RX drop (timeout theory refuted)Superseded by #161 (merged). This branch started as a receiver-timeout fix, which its own diagnostic (
udp_rx.pystop=/idle_gap=) then refuted (idle_gap=30.0at 80.1% delivery = the receiver waited the full timeout, packets never came). #161 carries this branch's instrumentation (UdpRcvbufErrorsdeltas + theudp_rx.pydiagnostic) plus the actual fix (io_uringUDP_RECV_DEPTH16→256). Closing in favor of #161.Pull request closed