halve memory usage from state caches

This commit is contained in:
Dustin Brody 2020-07-08 10:56:25 +02:00 committed by tersec
parent f53425873c
commit fc8502c54e
2 changed files with 5 additions and 2 deletions

View File

@ -356,11 +356,14 @@ func putStateCache(
# with the concomitant memory allocator and GC load. Instead, use a # with the concomitant memory allocator and GC load. Instead, use a
# more memory-intensive (but more conceptually straightforward, and # more memory-intensive (but more conceptually straightforward, and
# faster) strategy to just store, for the most recent slots. # faster) strategy to just store, for the most recent slots.
if state.data.slot mod 2 != 0:
return
let stateCacheIndex = dag.getStateCacheIndex(blck.root, state.data.slot) let stateCacheIndex = dag.getStateCacheIndex(blck.root, state.data.slot)
if stateCacheIndex == -1: if stateCacheIndex == -1:
# Could use a deque or similar, but want simpler structure, and the data # Could use a deque or similar, but want simpler structure, and the data
# items are small and few. # items are small and few.
const MAX_CACHE_SIZE = 32 const MAX_CACHE_SIZE = 16
let cacheLen = dag.cachedStates.len let cacheLen = dag.cachedStates.len
doAssert cacheLen <= MAX_CACHE_SIZE doAssert cacheLen <= MAX_CACHE_SIZE

View File

@ -174,12 +174,12 @@ proc slash_validator*(state: var BeaconState, slashed_index: ValidatorIndex,
validator.effective_balance div MIN_SLASHING_PENALTY_QUOTIENT) validator.effective_balance div MIN_SLASHING_PENALTY_QUOTIENT)
# The rest doesn't make sense without there being any proposer index, so skip # The rest doesn't make sense without there being any proposer index, so skip
# Apply proposer and whistleblower rewards
let proposer_index = get_beacon_proposer_index(state, cache) let proposer_index = get_beacon_proposer_index(state, cache)
if proposer_index.isNone: if proposer_index.isNone:
debug "No beacon proposer index and probably no active validators" debug "No beacon proposer index and probably no active validators"
return return
# Apply proposer and whistleblower rewards
let let
# Spec has whistleblower_index as optional param, but it's never used. # Spec has whistleblower_index as optional param, but it's never used.
whistleblower_index = proposer_index.get whistleblower_index = proposer_index.get