use serde::Serialize;
pub(crate) mod factory;
#[doc(hidden)]
pub mod local_parquet;
pub(crate) mod residency;
#[cfg(feature = "cugraph")]
#[doc(hidden)]
pub mod resident_graph;
pub(crate) use factory::DeviceCacheAllocationFactory;
pub(crate) use residency::{
CacheResidency, CacheResidencyChargeTransaction, CacheResidencyDestruction, CacheResidencyPin, CacheResidencyState,
};
#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
pub struct CacheSourceEventSnapshot {
pub(crate) sequence: u64,
pub(crate) device_ordinal: usize,
pub(crate) allocation_domain_id: u64,
pub(crate) correlation_fingerprint: Option<String>,
pub(crate) cache_key_fingerprint: String,
pub(crate) action: &'static str,
pub(crate) retained_device_bytes: u64,
}
pub fn cache_observation_fingerprint(value: &str) -> String {
format!("b3:{}", blake3::hash(value.as_bytes()).to_hex())
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
pub struct DeviceCacheReport {
pub device_ordinal: usize,
pub allocation_domain_id: u64,
pub cache_cap_bytes: u64,
pub ledger_sequence: u64,
pub ledger_evictable_resident_bytes: u64,
pub ledger_pinned_in_use_bytes: u64,
pub(crate) allocation_limit_bytes: u64,
pub physical_current_bytes: u64,
pub(crate) physical_current_aligned_bytes: u64,
pub physical_peak_bytes: u64,
pub(crate) physical_total_bytes: u64,
pub(crate) physical_total_allocations: u64,
pub(crate) source: CacheSourceActivity,
pub graph: CacheGraphActivity,
}
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize)]
pub struct CacheSourceActivity {
pub(crate) entry_count: usize,
pub(crate) promotions_in_progress: usize,
pub(crate) lookup_hits: u64,
pub(crate) lookup_misses: u64,
pub(crate) promotions_inserted: u64,
pub(crate) promotions_coalesced: u64,
pub(crate) promotions_capacity_skipped: u64,
pub(crate) promotions_allocation_failed: u64,
pub(crate) promoted_device_bytes: u64,
pub(crate) eviction_batches: u64,
pub(crate) evicted_device_bytes: u64,
}
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize)]
pub struct CacheGraphActivity {
pub available_entries: usize,
pub checked_out_entries: usize,
pub preparation_pins: usize,
pub lookup_hits: u64,
pub(crate) lookup_misses: u64,
pub insertions: u64,
pub(crate) duplicate_inserts: u64,
}