diff --git a/accounts-db/src/accounts_db/stats.rs b/accounts-db/src/accounts_db/stats.rs index 00e64b070836b4..75129d846598fe 100644 --- a/accounts-db/src/accounts_db/stats.rs +++ b/accounts-db/src/accounts_db/stats.rs @@ -1,11 +1,5 @@ use { - crate::{ - accounts_index::AccountsIndexRootsStats, - append_vec::{ - APPEND_VEC_MMAPPED_FILES_DIRTY, APPEND_VEC_MMAPPED_FILES_OPEN, - APPEND_VEC_OPEN_AS_FILE_IO, - }, - }, + crate::{accounts_index::AccountsIndexRootsStats, append_vec::APPEND_VEC_STATS}, solana_sdk::timing::AtomicInterval, std::{ num::Saturating, @@ -244,17 +238,17 @@ impl LatestAccountsIndexRootsStats { ), ( "append_vecs_open", - APPEND_VEC_MMAPPED_FILES_OPEN.load(Ordering::Relaxed), + APPEND_VEC_STATS.mmap_files_open.load(Ordering::Relaxed), i64 ), ( "append_vecs_dirty", - APPEND_VEC_MMAPPED_FILES_DIRTY.load(Ordering::Relaxed), + APPEND_VEC_STATS.mmap_files_dirty.load(Ordering::Relaxed), i64 ), ( "append_vecs_open_as_file_io", - APPEND_VEC_OPEN_AS_FILE_IO.load(Ordering::Relaxed), + APPEND_VEC_STATS.open_as_file_io.load(Ordering::Relaxed), i64 ) ); diff --git a/accounts-db/src/append_vec.rs b/accounts-db/src/append_vec.rs index e24b18412a7d82..2cab588282f306 100644 --- a/accounts-db/src/append_vec.rs +++ b/accounts-db/src/append_vec.rs @@ -294,23 +294,37 @@ const fn page_align(size: u64) -> u64 { #[cfg_attr(feature = "dev-context-only-utils", qualifier_attr::qualifiers(pub))] const SCAN_BUFFER_SIZE_WITHOUT_DATA: usize = 1 << 16; +pub struct AppendVecStat { + pub mmap_files_open: AtomicU64, + pub mmap_files_dirty: AtomicU64, + pub open_as_file_io: AtomicU64, +} + lazy_static! { - pub static ref APPEND_VEC_MMAPPED_FILES_OPEN: AtomicU64 = AtomicU64::default(); - pub static ref APPEND_VEC_MMAPPED_FILES_DIRTY: AtomicU64 = AtomicU64::default(); - pub static ref APPEND_VEC_OPEN_AS_FILE_IO: AtomicU64 = AtomicU64::default(); + pub static ref APPEND_VEC_STATS: AppendVecStat = AppendVecStat { + mmap_files_open: AtomicU64::new(0), + mmap_files_dirty: AtomicU64::new(0), + open_as_file_io: AtomicU64::new(0), + }; } impl Drop for AppendVec { fn drop(&mut self) { - APPEND_VEC_MMAPPED_FILES_OPEN.fetch_sub(1, Ordering::Relaxed); + APPEND_VEC_STATS + .mmap_files_open + .fetch_sub(1, Ordering::Relaxed); match &self.backing { AppendVecFileBacking::Mmap(mmap_only) => { if mmap_only.is_dirty.load(Ordering::Acquire) { - APPEND_VEC_MMAPPED_FILES_DIRTY.fetch_sub(1, Ordering::Relaxed); + APPEND_VEC_STATS + .mmap_files_dirty + .fetch_sub(1, Ordering::Relaxed); } } AppendVecFileBacking::File(_) => { - APPEND_VEC_OPEN_AS_FILE_IO.fetch_sub(1, Ordering::Relaxed); + APPEND_VEC_STATS + .open_as_file_io + .fetch_sub(1, Ordering::Relaxed); } } if self.remove_file_on_drop.load(Ordering::Acquire) { @@ -371,7 +385,9 @@ impl AppendVec { ); std::process::exit(1); }); - APPEND_VEC_MMAPPED_FILES_OPEN.fetch_add(1, Ordering::Relaxed); + APPEND_VEC_STATS + .mmap_files_open + .fetch_add(1, Ordering::Relaxed); AppendVec { path: file, @@ -420,7 +436,9 @@ impl AppendVec { let should_flush = mmap_only.is_dirty.swap(false, Ordering::AcqRel); if should_flush { mmap_only.mmap.flush()?; - APPEND_VEC_MMAPPED_FILES_DIRTY.fetch_sub(1, Ordering::Relaxed); + APPEND_VEC_STATS + .mmap_files_dirty + .fetch_sub(1, Ordering::Relaxed); } Ok(()) } @@ -523,8 +541,12 @@ impl AppendVec { #[cfg(unix)] // we must use mmap on non-linux if storage_access == StorageAccess::File { - APPEND_VEC_MMAPPED_FILES_OPEN.fetch_add(1, Ordering::Relaxed); - APPEND_VEC_OPEN_AS_FILE_IO.fetch_add(1, Ordering::Relaxed); + APPEND_VEC_STATS + .mmap_files_open + .fetch_add(1, Ordering::Relaxed); + APPEND_VEC_STATS + .open_as_file_io + .fetch_add(1, Ordering::Relaxed); return Ok(AppendVec { path, @@ -544,7 +566,9 @@ impl AppendVec { } result? }; - APPEND_VEC_MMAPPED_FILES_OPEN.fetch_add(1, Ordering::Relaxed); + APPEND_VEC_STATS + .mmap_files_open + .fetch_add(1, Ordering::Relaxed); Ok(AppendVec { path, @@ -1165,7 +1189,9 @@ impl AppendVec { // (This also ensures the 'dirty counter' datapoint is correct.) if !mmap_only.is_dirty.load(Ordering::Acquire) { mmap_only.is_dirty.store(true, Ordering::Release); - APPEND_VEC_MMAPPED_FILES_DIRTY.fetch_add(1, Ordering::Relaxed); + APPEND_VEC_STATS + .mmap_files_dirty + .fetch_add(1, Ordering::Relaxed); } } }