2023-01-10 07:15:27 -08:00
|
|
|
use std::sync::{
|
|
|
|
atomic::{AtomicU64, Ordering},
|
|
|
|
Arc,
|
|
|
|
};
|
2021-09-17 13:11:27 -07:00
|
|
|
|
|
|
|
#[derive(Debug, Default)]
|
|
|
|
pub struct BucketStats {
|
|
|
|
pub resizes: AtomicU64,
|
2023-04-04 09:39:06 -07:00
|
|
|
pub failed_resizes: AtomicU64,
|
2023-01-10 07:15:27 -08:00
|
|
|
pub max_size: AtomicU64,
|
2021-09-17 13:11:27 -07:00
|
|
|
pub resize_us: AtomicU64,
|
|
|
|
pub new_file_us: AtomicU64,
|
|
|
|
pub flush_file_us: AtomicU64,
|
|
|
|
pub mmap_us: AtomicU64,
|
2023-03-29 06:54:03 -07:00
|
|
|
pub find_index_entry_mut_us: AtomicU64,
|
2023-03-20 08:22:31 -07:00
|
|
|
pub file_count: AtomicU64,
|
|
|
|
pub total_file_size: AtomicU64,
|
2021-09-17 13:11:27 -07:00
|
|
|
}
|
|
|
|
|
2023-01-07 07:25:04 -08:00
|
|
|
impl BucketStats {
|
|
|
|
pub fn update_max_size(&self, size: u64) {
|
2023-01-10 07:15:27 -08:00
|
|
|
self.max_size.fetch_max(size, Ordering::Relaxed);
|
2023-01-07 07:25:04 -08:00
|
|
|
}
|
2023-03-20 08:22:31 -07:00
|
|
|
|
|
|
|
pub fn resize_grow(&self, old_size: u64, new_size: u64) {
|
|
|
|
let size_change = new_size.saturating_sub(old_size);
|
|
|
|
self.total_file_size
|
|
|
|
.fetch_add(size_change, Ordering::Relaxed);
|
|
|
|
}
|
2023-01-07 07:25:04 -08:00
|
|
|
}
|
|
|
|
|
2021-10-08 11:58:38 -07:00
|
|
|
#[derive(Debug, Default)]
|
2021-09-17 13:11:27 -07:00
|
|
|
pub struct BucketMapStats {
|
|
|
|
pub index: Arc<BucketStats>,
|
|
|
|
pub data: Arc<BucketStats>,
|
|
|
|
}
|