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); }