More configurable rocksdb compaction (#15213)
rocksdb compaction can cause long stalls, so make it more configurable to try and reduce those stalls and also to coordinate between multiple nodes to not induce stall at the same time.
This commit is contained in:
@ -1235,6 +1235,20 @@ pub fn main() {
|
||||
.takes_value(false)
|
||||
.help("Disable manual compaction of the ledger database. May increase storage requirements.")
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("rocksdb_compaction_interval")
|
||||
.long("rocksdb-compaction-interval-slots")
|
||||
.value_name("ROCKSDB_COMPACTION_INTERVAL_SLOTS")
|
||||
.takes_value(true)
|
||||
.help("Number of slots between compacting ledger"),
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("rocksdb_max_compaction_jitter")
|
||||
.long("rocksdb-max-compaction-jitter-slots")
|
||||
.value_name("ROCKSDB_MAX_COMPACTION_JITTER_SLOTS")
|
||||
.takes_value(true)
|
||||
.help("Introduce jitter into the compaction to offset compaction operation"),
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("bind_address")
|
||||
.long("bind-address")
|
||||
@ -1486,6 +1500,9 @@ pub fn main() {
|
||||
let private_rpc = matches.is_present("private_rpc");
|
||||
let no_port_check = matches.is_present("no_port_check");
|
||||
let no_rocksdb_compaction = matches.is_present("no_rocksdb_compaction");
|
||||
let rocksdb_compaction_interval = value_t!(matches, "rocksdb_compaction_interval", u64).ok();
|
||||
let rocksdb_max_compaction_jitter =
|
||||
value_t!(matches, "rocksdb_max_compaction_jitter", u64).ok();
|
||||
let wal_recovery_mode = matches
|
||||
.value_of("wal_recovery_mode")
|
||||
.map(BlockstoreRecoveryMode::from);
|
||||
@ -1620,6 +1637,8 @@ pub fn main() {
|
||||
gossip_validators,
|
||||
frozen_accounts: values_t!(matches, "frozen_accounts", Pubkey).unwrap_or_default(),
|
||||
no_rocksdb_compaction,
|
||||
rocksdb_compaction_interval,
|
||||
rocksdb_max_compaction_jitter,
|
||||
wal_recovery_mode,
|
||||
poh_verify: !matches.is_present("skip_poh_verify"),
|
||||
debug_keys,
|
||||
|
Reference in New Issue
Block a user