From e1939688c2d45baf62676f8210bb61ce5f6f9ddf Mon Sep 17 00:00:00 2001 From: "Jeff Washington (jwash)" <75863576+jeffwashington@users.noreply.github.com> Date: Tue, 31 Aug 2021 11:57:34 -0500 Subject: [PATCH] parallel shrink (#19507) --- runtime/src/accounts_db.rs | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/runtime/src/accounts_db.rs b/runtime/src/accounts_db.rs index 7d2e39d963..dd064b54b0 100644 --- a/runtime/src/accounts_db.rs +++ b/runtime/src/accounts_db.rs @@ -2607,14 +2607,18 @@ impl AccountsDb { let mut measure_shrink_all_candidates = Measure::start("shrink_all_candidate_slots-ms"); let num_candidates = shrink_slots.len(); - let mut shrink_candidates_count: usize = 0; - for (slot, slot_shrink_candidates) in shrink_slots { - shrink_candidates_count += slot_shrink_candidates.len(); - let mut measure = Measure::start("shrink_candidate_slots-ms"); - self.do_shrink_slot_stores(slot, slot_shrink_candidates.values(), false); - measure.stop(); - inc_new_counter_info!("shrink_candidate_slots-ms", measure.as_ms() as usize); - } + let shrink_candidates_count: usize = self.thread_pool.install(|| { + shrink_slots + .into_par_iter() + .map(|(slot, slot_shrink_candidates)| { + let mut measure = Measure::start("shrink_candidate_slots-ms"); + self.do_shrink_slot_stores(slot, slot_shrink_candidates.values(), false); + measure.stop(); + inc_new_counter_info!("shrink_candidate_slots-ms", measure.as_ms() as usize); + slot_shrink_candidates.len() + }) + .sum() + }); measure_shrink_all_candidates.stop(); inc_new_counter_info!( "shrink_all_candidate_slots-ms",