iter9: 64 MiB chunks on top of iter8 (Phase 2.5 disabled)

iter8 (Phase 2.5 disabled, 32 MiB chunks) hit 28.7 MB/s mean
— 1.3 MB/s below R2 floor. Without Phase 2.5, WAIT_AFTER blocks the
mux thread directly once per chunk. Halving the WAIT_AFTER frequency
(32 → 64 MiB chunks) should raise the mean without changing the
underlying architecture.
This commit is contained in:
2026-05-17 08:52:51 -07:00
parent 41a251c5de
commit d615ac4a0e
+8 -3
View File
@@ -73,9 +73,14 @@ use std::path::Path;
use super::writeback::WritebackPipeline; use super::writeback::WritebackPipeline;
/// Granularity at which the Linux writeback pipeline issues /// Granularity at which the Linux writeback pipeline issues
/// `sync_file_range` / `posix_fadvise(DONTNEED)` pairs. 32 MiB /// `sync_file_range` / `posix_fadvise(DONTNEED)` pairs.
/// remains the best-tested value. ///
const WRITEBACK_CHUNK_BYTES: u64 = 32 * 1024 * 1024; /// iter9 (2026-05-17): 32 → 64 MiB on top of iter8 (Phase 2.5
/// disabled). Without Phase 2.5's writer thread, WAIT_AFTER blocks
/// the mux thread directly. Bigger chunks = fewer WAIT_AFTER calls
/// = less mux-thread blocking. iter8 mean was 28.7 with 32 MiB; aim
/// to clear the 30 floor by halving WAIT_AFTER frequency.
const WRITEBACK_CHUNK_BYTES: u64 = 64 * 1024 * 1024;
pub(crate) struct WritebackFile { pub(crate) struct WritebackFile {
file: File, file: File,