* 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:
@ -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,
|
||||||
|
@ -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],
|
||||||
|
Reference in New Issue
Block a user