Skip to main content

laddu_memory/
report.rs

1use serde::{Deserialize, Serialize};
2
3use crate::{budget::MemoryBudget, resource::MemoryResource};
4
5/// Report for one resolved pool.
6#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
7pub struct MemoryPoolReport {
8    /// Stable resource identifier.
9    pub resource_id: String,
10    /// Requested budget.
11    pub requested: MemoryBudget,
12    /// Resolved capacity.
13    pub effective_bytes: u64,
14    /// Currently reserved bytes.
15    pub reserved_bytes: u64,
16    /// Remaining bytes.
17    pub remaining_bytes: u64,
18    /// Highest concurrent reservation.
19    pub high_water_bytes: u64,
20}
21
22/// Report for one physical resource.
23#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
24pub struct MemoryResourceReport {
25    /// Resource snapshot.
26    pub resource: MemoryResource,
27    /// Currently reserved by laddu.
28    pub laddu_reserved_bytes: u64,
29    /// Process-state high-water reservation.
30    pub laddu_high_water_bytes: u64,
31}
32
33/// Report covering all resources in a [`crate::MemoryState`].
34#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
35pub struct MemoryReport {
36    /// Current process memory sampled when the report was generated.
37    pub process: Option<ProcessMemoryReport>,
38    /// Physical resource reports.
39    pub resources: Vec<MemoryResourceReport>,
40}
41
42/// Sampled operating-system memory counters for the current process.
43#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
44pub struct ProcessMemoryReport {
45    /// Current resident-set size.
46    pub resident_bytes: u64,
47    /// Current virtual-memory size.
48    pub virtual_bytes: u64,
49    /// Largest resident-set size sampled by this state, not an OS lifetime peak.
50    pub sampled_high_water_bytes: u64,
51}