State cache tweaks (#7095)

Backport of:

- https://github.com/sigp/lighthouse/pull/7067

For:

- https://github.com/sigp/lighthouse/issues/7039


  - Prevent writing to state cache when migrating the database
- Add `state-cache-headroom` flag to control pruning
- Prune old epoch boundary states ahead of mid-epoch states
- Never prune head block's state
- Avoid caching ancestor states unless they are on an epoch boundary
- Log when states enter/exit the cache

Co-authored-by: Eitan Seri-Levi <eserilev@ucsc.edu>
This commit is contained in:
Michael Sproul
2025-03-18 13:10:21 +11:00
committed by GitHub
parent 8ce9edc584
commit 4de062626b
29 changed files with 358 additions and 114 deletions

View File

@@ -776,6 +776,15 @@ pub fn cli_app() -> Command {
.action(ArgAction::Set)
.display_order(0)
)
.arg(
Arg::new("state-cache-headroom")
.long("state-cache-headroom")
.value_name("N")
.help("Minimum number of states to cull from the state cache when it gets full")
.default_value("1")
.action(ArgAction::Set)
.display_order(0)
)
.arg(
Arg::new("block-cache-size")
.long("block-cache-size")

View File

@@ -463,6 +463,12 @@ pub fn get_config<E: EthSpec>(
client_config.chain.epochs_per_migration = epochs_per_migration;
}
if let Some(state_cache_headroom) =
clap_utils::parse_optional(cli_args, "state-cache-headroom")?
{
client_config.store.state_cache_headroom = state_cache_headroom;
}
if let Some(prune_blobs) = clap_utils::parse_optional(cli_args, "prune-blobs")? {
client_config.store.prune_blobs = prune_blobs;
}