1use std::sync::atomic::AtomicU64;
2use std::sync::atomic::Ordering::Relaxed;
3use std::sync::Arc;
4
5#[rustfmt::skip]
6#[derive(Default)]
7pub(crate) struct Inner {
8 pub(crate) delete_op_count: AtomicU64,
10
11 pub(crate) read_op_count: AtomicU64,
12 pub(crate) read_op_bytes_sent: AtomicU64,
13 pub(crate) read_op_bytes_discarded: AtomicU64, pub(crate) write_op_count: AtomicU64,
16 pub(crate) write_op_bytes_persisted: AtomicU64,
17 pub(crate) write_op_bytes_padding: AtomicU64, pub(crate) allocated_bytes: AtomicU64,
21 pub(crate) heap_object_data_bytes: AtomicU64, pub(crate) object_count: AtomicU64, pub(crate) log_buffer_write_entry_count: AtomicU64,
25 pub(crate) log_buffer_write_entry_data_bytes: AtomicU64,
26 pub(crate) log_buffer_delete_entry_count: AtomicU64,
27 pub(crate) log_buffer_virtual_head: AtomicU64,
28 pub(crate) log_buffer_virtual_tail: AtomicU64,
29
30 pub(crate) log_buffer_commit_count: AtomicU64,
31 pub(crate) log_buffer_commit_entry_count: AtomicU64,
32 pub(crate) log_buffer_commit_object_grouping_us: AtomicU64, pub(crate) log_buffer_commit_object_heap_move_count: AtomicU64, pub(crate) log_buffer_commit_object_heap_move_bytes: AtomicU64,
35 pub(crate) log_buffer_commit_object_heap_move_write_us: AtomicU64, pub(crate) log_buffer_commit_bundle_committed_count: AtomicU64, pub(crate) log_buffer_commit_bundle_count: AtomicU64,
38 pub(crate) log_buffer_commit_bundle_read_us: AtomicU64, pub(crate) log_buffer_commit_bundle_write_us: AtomicU64, pub(crate) log_buffer_commit_bundles_update_us: AtomicU64,
41
42 pub(crate) log_buffer_flush_entry_count: AtomicU64, pub(crate) log_buffer_flush_count: AtomicU64, pub(crate) log_buffer_flush_4k_count: AtomicU64, pub(crate) log_buffer_flush_64k_count: AtomicU64, pub(crate) log_buffer_flush_1m_count: AtomicU64, pub(crate) log_buffer_flush_8m_count: AtomicU64, pub(crate) log_buffer_flush_data_bytes: AtomicU64,
49 pub(crate) log_buffer_flush_padding_bytes: AtomicU64,
50 pub(crate) log_buffer_flush_write_us: AtomicU64, pub(crate) log_buffer_flush_total_us: AtomicU64, pub(crate) log_buffer_flush_state_count: AtomicU64, pub(crate) uring_submission_count: AtomicU64,
55 pub(crate) uring_read_request_count: AtomicU64,
56 pub(crate) uring_read_request_bytes: AtomicU64,
57 pub(crate) uring_read_request_us: AtomicU64,
58 pub(crate) uring_write_request_count: AtomicU64,
59 pub(crate) uring_write_request_bytes: AtomicU64,
60 pub(crate) uring_write_request_us: AtomicU64,
61 pub(crate) uring_sync_request_count: AtomicU64,
62 pub(crate) uring_sync_request_us: AtomicU64,
63}
64
65#[derive(Clone, Default)]
66pub struct BlobdMetrics(pub(crate) Arc<Inner>);
67
68#[rustfmt::skip]
69impl BlobdMetrics {
70 pub fn delete_op_count(&self) -> u64 { self.0.delete_op_count.load(Relaxed) }
71
72 pub fn read_op_count(&self) -> u64 { self.0.read_op_count.load(Relaxed) }
73 pub fn read_op_bytes_sent(&self) -> u64 { self.0.read_op_bytes_sent.load(Relaxed) }
74 pub fn read_op_bytes_discarded(&self) -> u64 { self.0.read_op_bytes_discarded.load(Relaxed) }
75
76 pub fn write_op_count(&self) -> u64 { self.0.write_op_count.load(Relaxed) }
77 pub fn write_op_bytes_persisted(&self) -> u64 { self.0.write_op_bytes_persisted.load(Relaxed) }
78 pub fn write_op_bytes_padding(&self) -> u64 { self.0.write_op_bytes_padding.load(Relaxed) }
79
80 pub fn allocated_bytes(&self) -> u64 { self.0.allocated_bytes.load(Relaxed) }
81 pub fn heap_object_data_bytes(&self) -> u64 { self.0.heap_object_data_bytes.load(Relaxed) }
82 pub fn object_count(&self) -> u64 { self.0.object_count.load(Relaxed) }
83
84 pub fn log_buffer_write_entry_count(&self) -> u64 { self.0.log_buffer_write_entry_count.load(Relaxed) }
85 pub fn log_buffer_write_entry_data_bytes(&self) -> u64 { self.0.log_buffer_write_entry_data_bytes.load(Relaxed) }
86 pub fn log_buffer_delete_entry_count(&self) -> u64 { self.0.log_buffer_delete_entry_count.load(Relaxed) }
87 pub fn log_buffer_virtual_head(&self) -> u64 { self.0.log_buffer_virtual_head.load(Relaxed) }
88 pub fn log_buffer_virtual_tail(&self) -> u64 { self.0.log_buffer_virtual_tail.load(Relaxed) }
89
90 pub fn log_buffer_commit_count(&self) -> u64 { self.0.log_buffer_commit_count.load(Relaxed) }
91 pub fn log_buffer_commit_entry_count(&self) -> u64 { self.0.log_buffer_commit_entry_count.load(Relaxed) }
92 pub fn log_buffer_commit_object_grouping_us(&self) -> u64 { self.0.log_buffer_commit_object_grouping_us.load(Relaxed) }
93 pub fn log_buffer_commit_object_heap_move_count(&self) -> u64 { self.0.log_buffer_commit_object_heap_move_count.load(Relaxed) }
94 pub fn log_buffer_commit_object_heap_move_bytes(&self) -> u64 { self.0.log_buffer_commit_object_heap_move_bytes.load(Relaxed) }
95 pub fn log_buffer_commit_object_heap_move_write_us(&self) -> u64 { self.0.log_buffer_commit_object_heap_move_write_us.load(Relaxed) }
96 pub fn log_buffer_commit_bundle_committed_count(&self) -> u64 { self.0.log_buffer_commit_bundle_committed_count.load(Relaxed) }
97 pub fn log_buffer_commit_bundle_count(&self) -> u64 { self.0.log_buffer_commit_bundle_count.load(Relaxed) }
98 pub fn log_buffer_commit_bundle_read_us(&self) -> u64 { self.0.log_buffer_commit_bundle_read_us.load(Relaxed) }
99 pub fn log_buffer_commit_bundle_write_us(&self) -> u64 { self.0.log_buffer_commit_bundle_write_us.load(Relaxed) }
100 pub fn log_buffer_commit_bundles_update_us(&self) -> u64 { self.0.log_buffer_commit_bundles_update_us.load(Relaxed) }
101
102 pub fn log_buffer_flush_entry_count(&self) -> u64 { self.0.log_buffer_flush_entry_count.load(Relaxed) }
103 pub fn log_buffer_flush_count(&self) -> u64 { self.0.log_buffer_flush_count.load(Relaxed) }
104 pub fn log_buffer_flush_4k_count(&self) -> u64 { self.0.log_buffer_flush_4k_count.load(Relaxed) }
105 pub fn log_buffer_flush_64k_count(&self) -> u64 { self.0.log_buffer_flush_64k_count.load(Relaxed) }
106 pub fn log_buffer_flush_1m_count(&self) -> u64 { self.0.log_buffer_flush_1m_count.load(Relaxed) }
107 pub fn log_buffer_flush_8m_count(&self) -> u64 { self.0.log_buffer_flush_8m_count.load(Relaxed) }
108 pub fn log_buffer_flush_data_bytes(&self) -> u64 { self.0.log_buffer_flush_data_bytes.load(Relaxed) }
109 pub fn log_buffer_flush_padding_bytes(&self) -> u64 { self.0.log_buffer_flush_padding_bytes.load(Relaxed) }
110 pub fn log_buffer_flush_write_us(&self) -> u64 { self.0.log_buffer_flush_write_us.load(Relaxed) }
111 pub fn log_buffer_flush_total_us(&self) -> u64 { self.0.log_buffer_flush_total_us.load(Relaxed) }
112 pub fn log_buffer_flush_state_count(&self) -> u64 { self.0.log_buffer_flush_state_count.load(Relaxed) }
113
114 pub fn uring_submission_count(&self) -> u64 { self.0.uring_submission_count.load(Relaxed) }
115 pub fn uring_read_request_count(&self) -> u64 { self.0.uring_read_request_count.load(Relaxed) }
116 pub fn uring_read_request_bytes(&self) -> u64 { self.0.uring_read_request_bytes.load(Relaxed) }
117 pub fn uring_read_request_us(&self) -> u64 { self.0.uring_read_request_us.load(Relaxed) }
118 pub fn uring_write_request_count(&self) -> u64 { self.0.uring_write_request_count.load(Relaxed) }
119 pub fn uring_write_request_bytes(&self) -> u64 { self.0.uring_write_request_bytes.load(Relaxed) }
120 pub fn uring_write_request_us(&self) -> u64 { self.0.uring_write_request_us.load(Relaxed) }
121 pub fn uring_sync_request_count(&self) -> u64 { self.0.uring_sync_request_count.load(Relaxed) }
122 pub fn uring_sync_request_us(&self) -> u64 { self.0.uring_sync_request_us.load(Relaxed) }
123}