Extend the zero-repair FEC-encode bypass beyond Bulk (Realtime/Default pay ~24µs even on clean links) #29

Closed
opened 2026-07-03 19:11:11 +00:00 by vxfemboy · 1 comment
vxfemboy commented 2026-07-03 19:11:11 +00:00 (Migrated from github.com)

The repair == 0 bypass (skip Encoder::new) fires only for Bulk flows whose adaptive repair ratio has decayed to 0. Realtime/Default flows keep a proactive repair floor (repair > 0) even on a clean link, so they pay the full ~24 µs FEC-encode per packet with no loss to recover.

Investigate whether the floor can be smarter: e.g. decay Realtime/Default repair toward 0 on a measured-clean link too (still snapping back on loss, like Bulk), or a cheaper proactive-repair path. This is a direct clean-link CPU/throughput win for non-Bulk traffic (latency-sensitive Realtime especially), complementary to FEC object batching (which only helps the repair>0 case). Must not regress loss recovery — gate on the netns loss + arq suites.

The `repair == 0` bypass (skip `Encoder::new`) fires only for **Bulk** flows whose adaptive repair ratio has decayed to 0. **Realtime/Default** flows keep a proactive repair floor (`repair > 0`) even on a clean link, so they pay the full ~24 µs FEC-encode per packet with no loss to recover. Investigate whether the floor can be smarter: e.g. decay Realtime/Default repair toward 0 on a *measured-clean* link too (still snapping back on loss, like Bulk), or a cheaper proactive-repair path. This is a direct clean-link CPU/throughput win for non-Bulk traffic (latency-sensitive Realtime especially), complementary to FEC object batching (which only helps the repair>0 case). Must not regress loss recovery — gate on the netns loss + arq suites.
vxfemboy commented 2026-07-12 23:49:37 +00:00 (Migrated from github.com)

Obsolete after the FEC codec swap in #50: RaptorQ was replaced by a small-K systematic Reed–Solomon codec (encode ~26 µs → ~1.33 µs). The ~24 µs RaptorQ per-object setup this issue targets no longer exists, so the motivation is gone. Closing.

Obsolete after the FEC codec swap in #50: RaptorQ was replaced by a small-K systematic Reed–Solomon codec (encode ~26 µs → ~1.33 µs). The ~24 µs RaptorQ per-object setup this issue targets no longer exists, so the motivation is gone. Closing.
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
femboy/yip#29
No description provided.