Skip to main content

Module resource

Module resource 

Source
Expand description

Resource guard module for preventing system overload.

This module provides safeguards to prevent out-of-memory conditions during large-scale operations.

§Example

use ringkernel_core::resource::{ResourceGuard, MemoryEstimate};

let guard = ResourceGuard::new();
let estimate = MemoryEstimate::new()
    .with_primary(1024 * 1024)  // 1 MB
    .with_auxiliary(512 * 1024); // 512 KB

if !guard.can_allocate(estimate.total_bytes()) {
    panic!("Insufficient memory");
}

// Or use the trait-based estimator
struct MyWorkload { elements: usize }
impl ringkernel_core::resource::MemoryEstimator for MyWorkload {
    fn estimate(&self) -> MemoryEstimate {
        MemoryEstimate::new().with_primary((self.elements * 64) as u64)
    }
    fn name(&self) -> &str { "MyWorkload" }
}

Structs§

LinearEstimator
A linear memory estimator (bytes_per_element * count + overhead).
MemoryEstimate
Memory estimate for a workload.
ReservationGuard
RAII guard for memory reservations.
ResourceGuard
Resource guard for preventing system overload.

Enums§

ResourceError
Resource-related errors.

Constants§

DEFAULT_MAX_MEMORY_BYTES
Default maximum memory usage (4 GB).
SYSTEM_MEMORY_MARGIN
Safety margin for system memory (leave 1 GB free).

Traits§

MemoryEstimator
Trait for types that can estimate their memory requirements.

Functions§

get_available_memory
Gets available system memory in bytes.
get_total_memory
Gets total system memory in bytes.
global_guard
Gets the global resource guard.

Type Aliases§

ResourceResult
Result type for resource operations.