Report timing info for stakes cache updates from txs (backport #20856) (#20883)

* Report timing info for stakes cache updates from txs (#20856)

(cherry picked from commit 735016661b)

# Conflicts:
#	runtime/src/bank.rs

* resolve conflicts

Co-authored-by: Justin Starry <justin@solana.com>
This commit is contained in:
mergify[bot]
2021-10-22 15:51:20 -04:00
committed by GitHub
parent d890aa93a5
commit c597a6c828
2 changed files with 13 additions and 3 deletions

View File

@ -63,6 +63,11 @@ impl ReplaySlotStats {
("load_us", self.execute_timings.load_us, i64), ("load_us", self.execute_timings.load_us, i64),
("execute_us", self.execute_timings.execute_us, i64), ("execute_us", self.execute_timings.execute_us, i64),
("store_us", self.execute_timings.store_us, i64), ("store_us", self.execute_timings.store_us, i64),
(
"update_stakes_cache_us",
self.execute_timings.update_stakes_cache_us,
i64
),
( (
"total_batches_len", "total_batches_len",
self.execute_timings.total_batches_len, self.execute_timings.total_batches_len,

View File

@ -167,6 +167,7 @@ pub struct ExecuteTimings {
pub load_us: u64, pub load_us: u64,
pub execute_us: u64, pub execute_us: u64,
pub store_us: u64, pub store_us: u64,
pub update_stakes_cache_us: u64,
pub total_batches_len: usize, pub total_batches_len: usize,
pub num_execute_batches: u64, pub num_execute_batches: u64,
pub details: ExecuteDetailsTimings, pub details: ExecuteDetailsTimings,
@ -178,6 +179,7 @@ impl ExecuteTimings {
self.load_us += other.load_us; self.load_us += other.load_us;
self.execute_us += other.execute_us; self.execute_us += other.execute_us;
self.store_us += other.store_us; self.store_us += other.store_us;
self.update_stakes_cache_us += other.update_stakes_cache_us;
self.total_batches_len += other.total_batches_len; self.total_batches_len += other.total_batches_len;
self.num_execute_batches += other.num_execute_batches; self.num_execute_batches += other.num_execute_batches;
self.details.accumulate(&other.details); self.details.accumulate(&other.details);
@ -3917,8 +3919,10 @@ impl Bank {
); );
let rent_debits = self.collect_rent(executed, loaded_txs); let rent_debits = self.collect_rent(executed, loaded_txs);
let mut update_stakes_cache_time = Measure::start("update_stakes_cache_time");
let overwritten_vote_accounts = let overwritten_vote_accounts =
self.update_cached_accounts(hashed_txs.as_transactions_iter(), executed, loaded_txs); self.update_stakes_cache(hashed_txs.as_transactions_iter(), executed, loaded_txs);
update_stakes_cache_time.stop();
// once committed there is no way to unroll // once committed there is no way to unroll
write_time.stop(); write_time.stop();
@ -3928,6 +3932,7 @@ impl Bank {
hashed_txs.len() hashed_txs.len()
); );
timings.store_us += write_time.as_us(); timings.store_us += write_time.as_us();
timings.update_stakes_cache_us += update_stakes_cache_time.as_us();
self.update_transaction_statuses(hashed_txs, executed); self.update_transaction_statuses(hashed_txs, executed);
let fee_collection_results = let fee_collection_results =
self.filter_program_errors_and_collect_fee(hashed_txs.as_transactions_iter(), executed); self.filter_program_errors_and_collect_fee(hashed_txs.as_transactions_iter(), executed);
@ -5301,8 +5306,8 @@ impl Bank {
self.epoch_schedule.get_leader_schedule_epoch(slot) self.epoch_schedule.get_leader_schedule_epoch(slot)
} }
/// a bank-level cache of vote accounts /// a bank-level cache of vote accounts and stake delegation info
fn update_cached_accounts<'a>( fn update_stakes_cache<'a>(
&self, &self,
txs: impl Iterator<Item = &'a Transaction>, txs: impl Iterator<Item = &'a Transaction>,
res: &[TransactionExecutionResult], res: &[TransactionExecutionResult],