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

* 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-26 20:04:32 +00:00
committed by GitHub
parent 9e81798d6d
commit 7e7f8ef5f0
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),
("execute_us", self.execute_timings.execute_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",
self.execute_timings.total_batches_len,

View File

@ -172,6 +172,7 @@ pub struct ExecuteTimings {
pub load_us: u64,
pub execute_us: u64,
pub store_us: u64,
pub update_stakes_cache_us: u64,
pub total_batches_len: usize,
pub num_execute_batches: u64,
pub details: ExecuteDetailsTimings,
@ -183,6 +184,7 @@ impl ExecuteTimings {
self.load_us += other.load_us;
self.execute_us += other.execute_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.num_execute_batches += other.num_execute_batches;
self.details.accumulate(&other.details);
@ -3978,8 +3980,10 @@ impl Bank {
);
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 =
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
write_time.stop();
@ -3989,6 +3993,7 @@ impl Bank {
hashed_txs.len()
);
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);
let fee_collection_results =
self.filter_program_errors_and_collect_fee(hashed_txs.as_transactions_iter(), executed);
@ -5380,8 +5385,8 @@ impl Bank {
self.epoch_schedule.get_leader_schedule_epoch(slot)
}
/// a bank-level cache of vote accounts
fn update_cached_accounts<'a>(
/// a bank-level cache of vote accounts and stake delegation info
fn update_stakes_cache<'a>(
&self,
txs: impl Iterator<Item = &'a Transaction>,
res: &[TransactionExecutionResult],