From 1560d5e3c389191de175f438e72958895fb68b8e Mon Sep 17 00:00:00 2001 From: "Jeff Washington (jwash)" <75863576+jeffwashington@users.noreply.github.com> Date: Tue, 7 Sep 2021 11:51:59 -0500 Subject: [PATCH] collect rent in parallel for partitions (#19478) * collect rent in parallel for partitions * combine use * use fg accounts db thread pool --- runtime/src/bank.rs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/runtime/src/bank.rs b/runtime/src/bank.rs index cecddf24ea..0e040612da 100644 --- a/runtime/src/bank.rs +++ b/runtime/src/bank.rs @@ -65,7 +65,10 @@ use crate::{ use byteorder::{ByteOrder, LittleEndian}; use itertools::Itertools; use log::*; -use rayon::ThreadPool; +use rayon::{ + iter::{IntoParallelIterator, ParallelIterator}, + ThreadPool, +}; use solana_measure::measure::Measure; use solana_metrics::{datapoint_debug, inc_new_counter_debug, inc_new_counter_info}; use solana_program_runtime::{ExecuteDetailsTimings, Executors}; @@ -3858,9 +3861,13 @@ impl Bank { } let mut measure = Measure::start("collect_rent_eagerly-ms"); - for partition in self.rent_collection_partitions() { - self.collect_rent_in_partition(partition); - } + self.rc.accounts.accounts_db.thread_pool.install(|| { + self.rent_collection_partitions() + .into_par_iter() + .for_each(|partition| { + self.collect_rent_in_partition(partition); + }); + }); measure.stop(); inc_new_counter_info!("collect_rent_eagerly-ms", measure.as_ms() as usize); }