You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Talon uses io_uring/Monoio for accept, framing, and scheduling, but cached bulk GET uses libc sendfile in a per-ring blocking pool (uring_conn.rs, sendfile.rs). This is a stable baseline, but every bulk response still crosses a scheduler boundary and a finite helper queue.
DESIGN.md lists fd registration, double-buffered splice, IORING_OP_SPLICE, and send-zero-copy as benchmark-driven future work (DESIGN.md). We need controlled evidence before adopting more complex kernel paths.
Proposed experiments
Build capability-probed alternatives without changing the default:
ring-native file-to-pipe-to-socket IORING_OP_SPLICE versus libc sendfile;
multishot accept/recv and provided-buffer rings for framed requests;
registered files/buffers after the relevant operation runs on the ring;
SEND_ZC for unavoidable in-memory responses;
optional SQPOLL where privileges and a reserved polling CPU are acceptable.
Test partial progress, EAGAIN, cancellation, slow/disconnected clients, short files, eviction/unlink, kernel fallback, and shutdown. Retain the current sendfile implementation as compatibility fallback.
Acceptance criteria
Every experiment has a runtime/kernel probe and transparent protocol-compatible fallback.
Identical payloads and admission limits are compared on representative kernels, CPUs, NICs, and NVMe.
Results report throughput, p50/p99/p999/max, user/system CPU, context switches, ring submissions/completions, helper queueing, and SQPOLL CPU/power cost.
Problem / motivation
Talon uses io_uring/Monoio for accept, framing, and scheduling, but cached bulk GET uses libc
sendfilein a per-ring blocking pool (uring_conn.rs,sendfile.rs). This is a stable baseline, but every bulk response still crosses a scheduler boundary and a finite helper queue.DESIGN.mdlists fd registration, double-buffered splice,IORING_OP_SPLICE, and send-zero-copy as benchmark-driven future work (DESIGN.md). We need controlled evidence before adopting more complex kernel paths.Proposed experiments
Build capability-probed alternatives without changing the default:
IORING_OP_SPLICEversus libcsendfile;SEND_ZCfor unavoidable in-memory responses;Test partial progress,
EAGAIN, cancellation, slow/disconnected clients, short files, eviction/unlink, kernel fallback, and shutdown. Retain the current sendfile implementation as compatibility fallback.Acceptance criteria
Related: #9, #10, #11, #273, #285, #291, #570, #572, #574, #575