mito2/compaction/
memory_manager.rs1use common_memory_manager::{MemoryGuard, MemoryManager, MemoryMetrics};
16
17use crate::metrics::{
18 COMPACTION_MEMORY_IN_USE, COMPACTION_MEMORY_LIMIT, COMPACTION_MEMORY_REJECTED,
19};
20
21#[derive(Clone, Copy, Debug, Default)]
23pub struct CompactionMemoryMetrics;
24
25impl MemoryMetrics for CompactionMemoryMetrics {
26 fn set_limit(&self, bytes: i64) {
27 COMPACTION_MEMORY_LIMIT.set(bytes);
28 }
29
30 fn set_in_use(&self, bytes: i64) {
31 COMPACTION_MEMORY_IN_USE.set(bytes);
32 }
33
34 fn inc_rejected(&self, reason: &str) {
35 COMPACTION_MEMORY_REJECTED
36 .with_label_values(&[reason])
37 .inc();
38 }
39}
40
41pub type CompactionMemoryManager = MemoryManager<CompactionMemoryMetrics>;
43
44pub type CompactionMemoryGuard = MemoryGuard<CompactionMemoryMetrics>;
46
47pub fn new_compaction_memory_manager(limit_bytes: u64) -> CompactionMemoryManager {
49 CompactionMemoryManager::new(limit_bytes, CompactionMemoryMetrics)
50}