diff --git a/core/src/progress_map.rs b/core/src/progress_map.rs index 5b6038d173..bc68443bf0 100644 --- a/core/src/progress_map.rs +++ b/core/src/progress_map.rs @@ -178,24 +178,35 @@ impl ReplaySlotStats { i64 ), ( - "execute_accessories_process_instruction_verify_caller_us", + "execute_accessories_process_instructions_total_us", self.execute_timings .execute_accessories - .process_instruction_verify_caller_us, + .process_instructions + .total_us, i64 ), ( - "execute_accessories_process_instruction_process_executable_chain_us", + "execute_accessories_process_instructions_verify_caller_us", self.execute_timings .execute_accessories - .process_instruction_process_executable_chain_us, + .process_instructions + .verify_caller_us, i64 ), ( - "execute_accessories_process_instruction_verify_callee_us", + "execute_accessories_process_instructions_process_executable_chain_us", self.execute_timings .execute_accessories - .process_instruction_verify_callee_us, + .process_instructions + .process_executable_chain_us, + i64 + ), + ( + "execute_accessories_process_instructions_verify_callee_us", + self.execute_timings + .execute_accessories + .process_instructions + .verify_callee_us, i64 ), ); diff --git a/program-runtime/src/invoke_context.rs b/program-runtime/src/invoke_context.rs index 0b555efc55..f5af1eb3fe 100644 --- a/program-runtime/src/invoke_context.rs +++ b/program-runtime/src/invoke_context.rs @@ -804,7 +804,8 @@ impl<'a> InvokeContext<'a> { saturating_add_assign!( timings .execute_accessories - .process_instruction_verify_caller_us, + .process_instructions + .verify_caller_us, verify_caller_time.as_us() ); verify_caller_result?; @@ -855,13 +856,15 @@ impl<'a> InvokeContext<'a> { saturating_add_assign!( timings .execute_accessories - .process_instruction_process_executable_chain_us, + .process_instructions + .process_executable_chain_us, process_executable_chain_time.as_us() ); saturating_add_assign!( timings .execute_accessories - .process_instruction_verify_callee_us, + .process_instructions + .verify_callee_us, verify_callee_time.as_us() ); diff --git a/program-runtime/src/timings.rs b/program-runtime/src/timings.rs index 41799696ff..40e6dc9753 100644 --- a/program-runtime/src/timings.rs +++ b/program-runtime/src/timings.rs @@ -64,6 +64,26 @@ impl ExecuteTimings { } } +#[derive(Default, Debug)] +pub struct ExecuteProcessInstructionTimings { + pub total_us: u64, + pub verify_caller_us: u64, + pub process_executable_chain_us: u64, + pub verify_callee_us: u64, +} + +impl ExecuteProcessInstructionTimings { + pub fn accumulate(&mut self, other: &ExecuteProcessInstructionTimings) { + saturating_add_assign!(self.total_us, other.total_us); + saturating_add_assign!(self.verify_caller_us, other.verify_caller_us); + saturating_add_assign!( + self.process_executable_chain_us, + other.process_executable_chain_us + ); + saturating_add_assign!(self.verify_callee_us, other.verify_callee_us); + } +} + #[derive(Default, Debug)] pub struct ExecuteAccessoryTimings { pub feature_set_clone_us: u64, @@ -71,10 +91,7 @@ pub struct ExecuteAccessoryTimings { pub get_executors_us: u64, pub process_message_us: u64, pub update_executors_us: u64, - pub process_instructions_us: u64, - pub process_instruction_verify_caller_us: u64, - pub process_instruction_process_executable_chain_us: u64, - pub process_instruction_verify_callee_us: u64, + pub process_instructions: ExecuteProcessInstructionTimings, } impl ExecuteAccessoryTimings { @@ -90,19 +107,8 @@ impl ExecuteAccessoryTimings { saturating_add_assign!(self.get_executors_us, other.get_executors_us); saturating_add_assign!(self.process_message_us, other.process_message_us); saturating_add_assign!(self.update_executors_us, other.update_executors_us); - saturating_add_assign!(self.process_instructions_us, other.process_instructions_us); - saturating_add_assign!( - self.process_instruction_verify_caller_us, - other.process_instruction_verify_caller_us - ); - saturating_add_assign!( - self.process_instruction_process_executable_chain_us, - other.process_instruction_process_executable_chain_us - ); - saturating_add_assign!( - self.process_instruction_verify_callee_us, - other.process_instruction_verify_callee_us - ); + self.process_instructions + .accumulate(&other.process_instructions); } } diff --git a/runtime/src/message_processor.rs b/runtime/src/message_processor.rs index 92a8315ed8..4253e1a920 100644 --- a/runtime/src/message_processor.rs +++ b/runtime/src/message_processor.rs @@ -146,7 +146,7 @@ impl MessageProcessor { ); timings.details.accumulate(&invoke_context.timings); saturating_add_assign!( - timings.execute_accessories.process_instructions_us, + timings.execute_accessories.process_instructions.total_us, time.as_us() ); result