mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-24 21:26:28 +00:00
perf(runtime): enable fsync thread isolation by default (#6438)
Change DEFAULT_FSYNC_BLOCKING_THREADS from 0 to 64 to isolate fsync/fdatasync operations into a dedicated blocking thread pool. A/B validation on 4-node EC cluster (testing, 10.0.0.5/8/9/11:9000): PUT 256KiB c16: p99 226ms → 135ms (−40%), p50 60ms → 19ms (−68%) GET 256KiB c16: p99 3.97ms → 3.63ms (−9%), throughput +1.8% GET 4KiB c64: neutral (pure read, no fsync involvement) Without isolation, fsync operations contend with read I/O (pread/stat/open) on the main blocking pool, causing device-bound fsync to starve read operations under mixed PUT+GET workloads. Co-authored-by: heihutu <heihutu@gmail.com>
This commit is contained in:
@@ -60,9 +60,9 @@ pub const DEFAULT_RNG_SEED: Option<u64> = None; // None means random
|
||||
/// Dedicated blocking thread pool for fsync/fdatasync operations.
|
||||
/// When > 1, fsync operations are isolated from the main blocking pool to
|
||||
/// prevent device-bound fsync from starving read operations (pread/stat/open).
|
||||
/// Default 0 means auto (no isolation, use main runtime).
|
||||
/// Default 64 isolates fsync from the main blocking pool to prevent device-bound fsync from starving read I/O.
|
||||
pub const ENV_FSYNC_BLOCKING_THREADS: &str = "RUSTFS_RUNTIME_FSYNC_BLOCKING_THREADS";
|
||||
pub const DEFAULT_FSYNC_BLOCKING_THREADS: usize = 0;
|
||||
pub const DEFAULT_FSYNC_BLOCKING_THREADS: usize = 64;
|
||||
|
||||
// Dial9 Tokio Telemetry Default values
|
||||
pub const DEFAULT_RUNTIME_DIAL9_ENABLED: bool = false; // Disabled by default
|
||||
|
||||
Reference in New Issue
Block a user