pub struct DeviceMemBudget { /* private fields */ }Expand description
Process-wide aggregate device-memory budget shared by every
DeviceMemRegistry.
Tracks the sum of live allocation sizes and the count of live allocations
across all instances. A registry charges this budget on insert (refusing
the allocation with AbiError::QuotaExceeded when it would push the
shared total over MAX_PROCESS_DEVICE_BYTES / MAX_PROCESS_DEVICE_ALLOCS)
and credits it back on free / drop. All arithmetic is checked /
saturating so a bookkeeping slip can never wrap the counters.
This is the device-memory analogue of the shared
crate::async_dispatch::BackPressure cap: one process-wide ceiling shared
by every instance. Unlike BackPressure, the default registry constructor
attaches to the process_device_budget singleton automatically, so the
ceiling holds even if an embedder constructs contexts without explicitly
threading shared state.
Implementations§
Source§impl DeviceMemBudget
impl DeviceMemBudget
Sourcepub fn new() -> Self
pub fn new() -> Self
Construct an empty budget. Most callers want the shared
process_device_budget singleton instead; this is for tests that
need an isolated budget.
Sourcepub fn total_bytes(&self) -> u64
pub fn total_bytes(&self) -> u64
Aggregate live device bytes across every attached registry. Visible for metrics and tests.
Sourcepub fn total_allocs(&self) -> u64
pub fn total_allocs(&self) -> u64
Aggregate live allocation count across every attached registry. Visible for metrics and tests.
Trait Implementations§
Source§impl Debug for DeviceMemBudget
impl Debug for DeviceMemBudget
Source§impl Default for DeviceMemBudget
impl Default for DeviceMemBudget
Source§fn default() -> DeviceMemBudget
fn default() -> DeviceMemBudget
Auto Trait Implementations§
impl !Freeze for DeviceMemBudget
impl RefUnwindSafe for DeviceMemBudget
impl Send for DeviceMemBudget
impl Sync for DeviceMemBudget
impl Unpin for DeviceMemBudget
impl UnsafeUnpin for DeviceMemBudget
impl UnwindSafe for DeviceMemBudget
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
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>
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>
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