pub struct StorageConfiguration {
pub iops: u64,
pub bandwidth: u64,
pub read_latency: Range<Duration>,
pub write_latency: Range<Duration>,
pub sync_latency: Range<Duration>,
pub read_fault_probability: f64,
pub write_fault_probability: f64,
pub crash_fault_probability: f64,
pub misdirect_write_probability: f64,
pub misdirect_read_probability: f64,
pub phantom_write_probability: f64,
pub sync_failure_probability: f64,
}Expand description
Configuration for storage simulation parameters.
This struct contains all settings related to storage simulation including performance characteristics and fault injection probabilities.
Fields§
§iops: u64I/O operations per second limit.
Typical values:
- NVMe SSD: 100,000-500,000 IOPS
- SATA SSD: 25,000-100,000 IOPS
- HDD: 100-200 IOPS
bandwidth: u64Maximum bandwidth in bytes per second.
Typical values:
- NVMe SSD: 3,000-7,000 MB/s
- SATA SSD: 500-600 MB/s
- HDD: 100-200 MB/s
read_latency: Range<Duration>Latency range for read operations.
Typical values:
- NVMe SSD: 20-100µs
- SATA SSD: 50-200µs
- HDD: 2-10ms
write_latency: Range<Duration>Latency range for write operations.
Typical values:
- NVMe SSD: 20-100µs
- SATA SSD: 100-500µs
- HDD: 2-10ms
sync_latency: Range<Duration>Latency range for sync/flush operations.
Sync operations ensure data durability and typically take longer than regular read/write operations.
read_fault_probability: f64Probability of read operation failing (0.0 - 1.0).
§Real-World Scenario
Simulates disk read errors, ECC failures, or media degradation.
write_fault_probability: f64Probability of write operation failing (0.0 - 1.0).
§Real-World Scenario
Simulates write failures due to disk full, bad sectors, or media errors.
crash_fault_probability: f64Probability of crash fault during operation (0.0 - 1.0).
§Real-World Scenario
Simulates sudden power loss or system crash during I/O. Tests crash consistency and recovery logic.
misdirect_write_probability: f64Probability of write landing at wrong location (0.0 - 1.0).
§Real-World Scenario
Simulates misdirected writes where data is written to a different block than intended. Tests checksum validation and corruption detection. TigerBeetle ref: storage fault injection
misdirect_read_probability: f64Probability of read returning data from wrong location (0.0 - 1.0).
§Real-World Scenario
Simulates misdirected reads where data is read from a different block than intended. Tests checksum validation. TigerBeetle ref: storage fault injection
phantom_write_probability: f64Probability of write appearing to succeed but not persisting (0.0 - 1.0).
§Real-World Scenario
Simulates phantom writes where the write reports success but data is lost before reaching stable storage. Tests durability guarantees.
sync_failure_probability: f64Probability of sync/flush operation failing (0.0 - 1.0).
§Real-World Scenario
Simulates fsync failures which can indicate serious storage issues. Tests error handling in durability-critical code paths.
Implementations§
Source§impl StorageConfiguration
impl StorageConfiguration
Sourcepub fn random_for_seed() -> Self
pub fn random_for_seed() -> Self
Create a randomized storage configuration for chaos testing.
Uses deterministic random values based on the simulation seed to create varied configurations across test runs.
Sourcepub fn fast_local() -> Self
pub fn fast_local() -> Self
Create a configuration optimized for fast local testing.
Minimal latencies and no fault injection for predictable, fast test execution.
Trait Implementations§
Source§impl Clone for StorageConfiguration
impl Clone for StorageConfiguration
Source§fn clone(&self) -> StorageConfiguration
fn clone(&self) -> StorageConfiguration
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more