• v3.3.98 121eac5f14

    Administrator released this 2026-06-21 17:56:49 +02:00 | 11 commits to master since this release

    v3.3.98 — 1MB read-ahead to absorb read-bursts + config-persist/load instrumentation

    v3.3.97 (UV_THREADPOOL_SIZE 64→8) was a decisive win: mean event-loop-delay at ~70 simultaneous uploads dropped 200 ms → ~11 ms (18×) and rss fell from 577 MB to ~287 MB, with the renderer healthy in 14 of 15 sampled windows. This release chases the residual roughness with a single behavioral change plus measurement.

    Localized residual (two separate, measured spike sources):

    1. Read-bursts. In the tail windows the file-read histogram inverts — file reads in flight climb to 66–70 against the 8-slot threadpool while socket writes collapse, and mean delay rises to 30–42 ms. GC is ruled out (max GC pause ≤27 ms in every window).
    2. A suspected synchronous config-persist stall — instrumented this build rather than asserted, because it rests on a single confounded sample.

    Changes:

    • highWaterMark 256 KB → 1 MB in all five streaming upload read loops (the 16 MB clouddrop chunked protocol size is untouched). UV_THREADPOOL_SIZE stays 8. This deepens each stream's read-ahead cushion from ~0.43 s to ~1.7 s, so a stream tolerates the threadpool queue without starving its socket write, and cuts read-completion callbacks and per-chunk buffer allocations ~4×. Upload byte-correctness is unaffected (Content-Length and multipart boundaries are independent of chunk size). Fully reversible.
    • Config-store instrumentation: the synchronous config load (full reparse) and serialize paths now log their wall-time, byte size, history length and queue length when they exceed 20 ms, to confirm or rule out a periodic persist stall in the next real-load measurement.

    No upload behavior changed beyond the read-ahead size.

    Downloads