• src/bench/zmodem/README.md

    From Rob Swindell (on Debian Linux)@1:103/705 to Git commit to main/sbbs/master on Thu Jul 23 23:03:46 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/1c8c59b14b74fa47a4e82be9
    Modified Files:
    src/bench/zmodem/README.md
    Log Message:
    bench/zmodem: record the confirmed bottleneck and the batching dead-ends

    Update the README with the results of the throughput-redesign attempt:

    - Confirmed the send bottleneck is the producer's per-byte RingBufWrite
    (~11 MB/s vs ~85 for ztx_buf doing the same escape/CRC without the ring);
    consumer-side coalescing of the output thread was tried and did nothing.
    - Three distinct producer-batching prototypes (Fix A, Fix B, and a third
    that flushes on a threshold inside send_byte with error propagation) each
    reached ~66-88 MB/s and each FAILED the 3x error-recovery gate that the
    per-byte sender passes 3/3.
    - Root cause: batching decouples what zmodem believes it has sent from what
    is actually on the wire; ZMODEM error recovery (ZRPOS -> seek -> resend)
    assumes those track, and the buffered-but-unsent bytes are not reconciled
    on a reposition. A correct fix needs an abort/reposition-aware transport
    (a zmodem.c hook to purge the pending output buffer on ZRPOS/abort), which
    is a coordinated zmodem.c + sexyz.c/term.c change, not a transport tweak.

    No source change ships; the robust per-byte sender is retained. GitLab #1195.

    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    --- SBBSecho 3.37-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)