struct AncientSlotInfos {
all_infos: Vec<SlotInfo>,
shrink_indexes: Vec<usize>,
total_alive_bytes_shrink: u64,
total_alive_bytes: u64,
}
Expand description
info for all storages in ancient slots ‘all_infos’ contains all slots and storages that are ancient
Fields§
§all_infos: Vec<SlotInfo>
info on all ancient storages
shrink_indexes: Vec<usize>
indexes to ‘all_info’ for storages that should be shrunk because alive ratio is too low. subset of all_infos
total_alive_bytes_shrink: u64
total alive bytes across contents of ‘shrink_indexes’
total_alive_bytes: u64
total alive bytes across all slots
Implementations§
source§impl AncientSlotInfos
impl AncientSlotInfos
sourcefn add(
&mut self,
slot: Slot,
storage: Arc<AccountStorageEntry>,
can_randomly_shrink: bool
)
fn add( &mut self, slot: Slot, storage: Arc<AccountStorageEntry>, can_randomly_shrink: bool )
add info for ‘storage’
sourcefn filter_ancient_slots(&mut self, tuning: &PackedAncientStorageTuning)
fn filter_ancient_slots(&mut self, tuning: &PackedAncientStorageTuning)
modify ‘self’ to contain only the slot infos for the slots that should be combined (and in this process effectively shrunk)
fn sort_shrink_indexes_by_bytes_saved(&mut self)
sourcefn clear_should_shrink_after_cutoff(
&mut self,
percent_of_alive_shrunk_data: u64
)
fn clear_should_shrink_after_cutoff( &mut self, percent_of_alive_shrunk_data: u64 )
clear ‘should_shrink’ for storages after a cutoff to limit how many storages we shrink
sourcefn choose_storages_to_shrink(&mut self, percent_of_alive_shrunk_data: u64)
fn choose_storages_to_shrink(&mut self, percent_of_alive_shrunk_data: u64)
after this function, only slots that were chosen to shrink are marked with ‘should_shrink’ There are likely more candidates to shrink than will be chosen.
sourcefn truncate_to_max_storages(
&mut self,
max_storages: usize,
ideal_storage_size: NonZeroU64
)
fn truncate_to_max_storages( &mut self, max_storages: usize, ideal_storage_size: NonZeroU64 )
truncate ‘all_infos’ such that when the remaining entries in ‘all_infos’ are combined, the total number of storages <= ‘max_storages’ The idea is that ‘all_infos’ is sorted from smallest capacity to largest, but that isn’t required for this function to be ‘correct’.
sourcefn filter_by_smallest_capacity(
&mut self,
max_storages: usize,
ideal_storage_size: NonZeroU64
)
fn filter_by_smallest_capacity( &mut self, max_storages: usize, ideal_storage_size: NonZeroU64 )
remove entries from ‘all_infos’ such that combining the remaining entries into storages of ‘ideal_storage_size’ will get us below ‘max_storages’ The entires that are removed will be reconsidered the next time around. Combining too many storages costs i/o and cpu so the goal is to find the sweet spot so that we make progress in cleaning/shrinking/combining but that we don’t cause unnecessary churn.