From 9e85499d4c6ee93aeea836af1ff1bede551b1461 Mon Sep 17 00:00:00 2001 From: "Jeff Washington (jwash)" <75863576+jeffwashington@users.noreply.github.com> Date: Mon, 25 Oct 2021 14:37:50 -0500 Subject: [PATCH] fix hash calc # storages, # slots (#20832) --- runtime/src/accounts_db.rs | 3 ++- runtime/src/accounts_hash.rs | 2 ++ runtime/src/sorted_storages.rs | 11 ++++++++++- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/runtime/src/accounts_db.rs b/runtime/src/accounts_db.rs index bb0eed9700..9c5f009aa0 100644 --- a/runtime/src/accounts_db.rs +++ b/runtime/src/accounts_db.rs @@ -5538,7 +5538,8 @@ impl AccountsDb { let bin_calculator = PubkeyBinCalculator24::new(bins); assert!(bin_range.start < bins && bin_range.end <= bins && bin_range.start < bin_range.end); let mut time = Measure::start("scan all accounts"); - stats.num_snapshot_storage = storage.slot_count(); + stats.num_snapshot_storage = storage.storage_count(); + stats.num_slots = storage.slot_count(); let mismatch_found = AtomicU64::new(0); let range = bin_range.end - bin_range.start; let sort_time = AtomicU64::new(0); diff --git a/runtime/src/accounts_hash.rs b/runtime/src/accounts_hash.rs index d0c1af08eb..e4f5046f5f 100644 --- a/runtime/src/accounts_hash.rs +++ b/runtime/src/accounts_hash.rs @@ -27,6 +27,7 @@ pub struct HashStats { pub hash_total: usize, pub unreduced_entries: usize, pub num_snapshot_storage: usize, + pub num_slots: usize, pub collect_snapshots_us: u64, pub storage_sort_us: u64, pub min_bin_size: usize, @@ -59,6 +60,7 @@ impl HashStats { self.num_snapshot_storage as i64, i64 ), + ("num_slots", self.num_slots as i64, i64), ("min_bin_size", self.min_bin_size as i64, i64), ("max_bin_size", self.max_bin_size as i64, i64), ("total", total_time_us as i64, i64), diff --git a/runtime/src/sorted_storages.rs b/runtime/src/sorted_storages.rs index cb87cad55a..362742007b 100644 --- a/runtime/src/sorted_storages.rs +++ b/runtime/src/sorted_storages.rs @@ -8,6 +8,7 @@ pub struct SortedStorages<'a> { range: Range, storages: Vec>, slot_count: usize, + storage_count: usize, } impl<'a> SortedStorages<'a> { @@ -32,6 +33,10 @@ impl<'a> SortedStorages<'a> { self.slot_count } + pub fn storage_count(&self) -> usize { + self.storage_count + } + // assumptions: // 1. each SnapshotStorage.!is_empty() // 2. SnapshotStorage.first().unwrap().get_slot() is unique from all other SnapshotStorage items. @@ -79,7 +84,9 @@ impl<'a> SortedStorages<'a> { let mut slot_count = 0; let mut time = Measure::start("get slot"); let source_ = source.clone(); - source_.for_each(|(_, slot)| { + let mut storage_count = 0; + source_.for_each(|(storages, slot)| { + storage_count += storages.len(); slot_count += 1; adjust_min_max(*slot); }); @@ -109,6 +116,7 @@ impl<'a> SortedStorages<'a> { range, storages, slot_count, + storage_count, } } } @@ -132,6 +140,7 @@ pub mod tests { range, storages, slot_count, + storage_count: 0, } } }