iter5: READ_PIPELINE_DEPTH 32 -> 256 frames

iter4 measurement (Phase 2.5 + DONTNEED, no FileSectorSource buffer)
showed mean 24.0 MB/s but with dips to 2.8 MB/s. Channel at 32 frames
(~1.6 MiB at 50 KB/frame avg) drains in <100 ms on any producer pause,
starving the consumer.

256 frames = ~12 MiB ≈ 3-4 sec of consumer drain at the rolling-avg
floor we want to hit. Should coast through producer micro-stalls
without idle gaps.
This commit is contained in:
2026-05-17 07:53:41 -07:00
parent 6155628693
commit 940ed8c3b7
+10 -1
View File
@@ -90,7 +90,16 @@ pub const DEFAULT_PIPELINE_DEPTH: usize = 4;
/// Read pipeline depth. Larger buffer compensates for drive variability /// Read pipeline depth. Larger buffer compensates for drive variability
/// and NFS sync_file_range stalls; keeps ISO reader thread fed even when /// and NFS sync_file_range stalls; keeps ISO reader thread fed even when
/// consumer blocks on write. /// consumer blocks on write.
pub const READ_PIPELINE_DEPTH: usize = 32; ///
/// iter5 (2026-05-17): bumped 32 → 256 frames. autorip iter4 measured
/// dips to 2.8 MB/s with the previous 32-frame channel (~1.6 MiB at
/// ~50 KB/frame avg). When the producer thread hits any micro-stall
/// (UDF metadata cache miss, NFS RTT, decrypt key lookup), a 1.6 MiB
/// buffer drains in <100 ms and the consumer sits idle. 256 frames is
/// ~12 MiB — ~3-4 seconds of consumer drain at 4 MB/s worst-case
/// sustained output rate, enough to coast through any single-event
/// producer pause without starving the consumer.
pub const READ_PIPELINE_DEPTH: usize = 256;
/// Write pipeline depth. Smaller buffer reduces backpressure risk when /// Write pipeline depth. Smaller buffer reduces backpressure risk when
/// sync_file_range blocks; prevents producer from accumulating too much /// sync_file_range blocks; prevents producer from accumulating too much