pub struct StorageGCPlanner {
pub config: GCConfig,
}Expand description
Fields§
§config: GCConfigConfiguration controlling collection behaviour.
Implementations§
Source§impl StorageGCPlanner
impl StorageGCPlanner
Sourcepub fn plan(
&self,
candidates: &[GCCandidate],
now_secs: u64,
) -> (GCPlan, GCPlannerStats)
pub fn plan( &self, candidates: &[GCCandidate], now_secs: u64, ) -> (GCPlan, GCPlannerStats)
Analyse candidates and produce a deletion plan.
now_secs is the current Unix timestamp in seconds. Using a parameter
rather than reading the system clock keeps the function pure and
deterministic for testing.
§Algorithm
- Iterate over every candidate, classifying it as pinned, referenced, too young, or eligible.
- Sort eligible candidates by
last_accessed_secsascending. - Greedily add candidates to the plan until
estimated_freed_bytes >= target_free_bytesorcandidate_count >= max_candidates.
Sourcepub fn estimate_run_time_ms(&self, plan: &GCPlan) -> u64
pub fn estimate_run_time_ms(&self, plan: &GCPlan) -> u64
Estimate how long executing plan might take in milliseconds.
Simple linear model:
- 1 ms per candidate block.
- 1 ms per 10 MiB (10 485 760 bytes) of data (integer division, no floats).
Trait Implementations§
Source§impl Clone for StorageGCPlanner
impl Clone for StorageGCPlanner
Source§fn clone(&self) -> StorageGCPlanner
fn clone(&self) -> StorageGCPlanner
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for StorageGCPlanner
impl RefUnwindSafe for StorageGCPlanner
impl Send for StorageGCPlanner
impl Sync for StorageGCPlanner
impl Unpin for StorageGCPlanner
impl UnsafeUnpin for StorageGCPlanner
impl UnwindSafe for StorageGCPlanner
Blanket Implementations§
impl<T> Allocation for T
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more