Skip to content

Commit 95ee9c1

Browse files
authored
svm: introduce filter_executable_us metric (#3472) (#3482)
Split the time taken by filter_executable_accounts() outside of program_cache_us. Filtering takes a considerable amount of time because account_matches_owners is pretty slow.
1 parent dd1a22f commit 95ee9c1

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

svm/src/transaction_processor.rs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -278,13 +278,15 @@ impl<FG: ForkGraph> TransactionBatchProcessor<FG> {
278278
&mut error_metrics
279279
));
280280

281-
let (mut program_cache_for_tx_batch, program_cache_us) = measure_us!({
282-
let mut program_accounts_map = Self::filter_executable_program_accounts(
281+
let (mut program_accounts_map, filter_executable_us) =
282+
measure_us!(Self::filter_executable_program_accounts(
283283
callbacks,
284284
sanitized_txs,
285285
&validation_results,
286-
PROGRAM_OWNERS,
287-
);
286+
PROGRAM_OWNERS
287+
));
288+
289+
let (mut program_cache_for_tx_batch, program_cache_us) = measure_us!({
288290
for builtin_program in self.builtin_program_ids.read().unwrap().iter() {
289291
program_accounts_map.insert(*builtin_program, 0);
290292
}
@@ -384,6 +386,8 @@ impl<FG: ForkGraph> TransactionBatchProcessor<FG> {
384386

385387
execute_timings
386388
.saturating_add_in_place(ExecuteTimingType::ValidateFeesUs, validate_fees_us);
389+
execute_timings
390+
.saturating_add_in_place(ExecuteTimingType::FilterExecutableUs, filter_executable_us);
387391
execute_timings
388392
.saturating_add_in_place(ExecuteTimingType::ProgramCacheUs, program_cache_us);
389393
execute_timings.saturating_add_in_place(ExecuteTimingType::LoadUs, load_accounts_us);

timings/src/lib.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ pub enum ExecuteTimingType {
5757
UpdateTransactionStatuses,
5858
ProgramCacheUs,
5959
CheckBlockLimitsUs,
60+
FilterExecutableUs,
6061
}
6162

6263
pub struct Metrics([u64; ExecuteTimingType::CARDINALITY]);
@@ -107,6 +108,13 @@ eager_macro_rules! { $eager_1
107108
.index(ExecuteTimingType::ValidateFeesUs),
108109
i64
109110
),
111+
(
112+
"filter_executable_us",
113+
*$self
114+
.metrics
115+
.index(ExecuteTimingType::FilterExecutableUs),
116+
i64
117+
),
110118
(
111119
"program_cache_us",
112120
*$self

0 commit comments

Comments
 (0)