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:
+10
-1
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user