pub struct MemoryBudget {
pub max_pages: usize,
pub high_watermark: usize,
pub low_watermark: usize,
pub reserved_pages: HashSet<u64>,
}Expand description
Memory budget enforcement (Heijunka principle)
Fields§
§max_pages: usizeMaximum pages in memory
high_watermark: usizeHigh watermark (start eviction)
low_watermark: usizeLow watermark (stop eviction)
reserved_pages: HashSet<u64>Reserved pages (never evict)
Implementations§
Source§impl MemoryBudget
impl MemoryBudget
Sourcepub fn with_watermarks(max_pages: usize, high_pct: f64, low_pct: f64) -> Self
pub fn with_watermarks(max_pages: usize, high_pct: f64, low_pct: f64) -> Self
Create with custom watermarks
Sourcepub fn reserve_page(&mut self, page_id: u64)
pub fn reserve_page(&mut self, page_id: u64)
Reserve a page (won’t be evicted)
Sourcepub fn release_page(&mut self, page_id: u64)
pub fn release_page(&mut self, page_id: u64)
Release a reserved page
Sourcepub fn needs_eviction(&self, current_pages: usize) -> bool
pub fn needs_eviction(&self, current_pages: usize) -> bool
Check if eviction is needed
Sourcepub fn can_stop_eviction(&self, current_pages: usize) -> bool
pub fn can_stop_eviction(&self, current_pages: usize) -> bool
Check if eviction can stop
Trait Implementations§
Source§impl Clone for MemoryBudget
impl Clone for MemoryBudget
Source§fn clone(&self) -> MemoryBudget
fn clone(&self) -> MemoryBudget
Returns a duplicate of the value. Read more
1.0.0 · 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 MemoryBudget
impl RefUnwindSafe for MemoryBudget
impl Send for MemoryBudget
impl Sync for MemoryBudget
impl Unpin for MemoryBudget
impl UnwindSafe for MemoryBudget
Blanket Implementations§
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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