diff options
| author | Luke Hoersten <[email protected]> | 2026-06-20 11:40:26 -0500 |
|---|---|---|
| committer | Luke Hoersten <[email protected]> | 2026-06-20 11:40:26 -0500 |
| commit | 6e0e0270e2cb9c54b1b7e63d9e67d8ac16792cef (patch) | |
| tree | 3cc4d87048351ea8ebfb214e2d279238c5f4a916 /CMakeLists.txt | |
| parent | 431a3268802df15781a52ae47dcaf5081b3f98f4 (diff) | |
phase 6: performance review playbook in TESTING.md + UDP-vs-TCP rationale in stream_server
Two pieces of documentation, neither changes behavior:
1. TESTING.md gains a "Performance review playbook" section: per-
session capture commands for firmware serial + /state poll +
Scrypted console, an annotated walkthrough of what each log
shape means, an investigation-threshold table mapping
user-facing symptoms to likely causes and the first thing to
check, and a one-line tools list. Replaces the implicit "ask the
maintainer how to debug" loop with a reproducible workflow.
2. stream_server.c gains a "Why TCP and not UDP" header comment
documenting the analysis from the design phase. JPEGs are ~123
IP datagrams at 1500 MTU; on hardwired Gigabit LAN switch-fabric
loss is < 1e-9/packet → per-frame corruption ≈ 1.2e-7. UDP's
theoretical wins (no Nagle, latest-wins semantics) don't apply
because TCP_NODELAY is on, socket.write p50 < 1ms, and the
FIONREAD trick already implements latest-wins on the receive
side. UDP's costs (200-400 LOC of app-layer fragmentation, loss
of nc/curl debug, FIONREAD trick stops working under
fragmentation) are real. Documented as reference so a future
contributor doesn't re-derive the analysis from scratch.
Diffstat (limited to 'CMakeLists.txt')
0 files changed, 0 insertions, 0 deletions
