add execute detail timings (#15638)
This commit is contained in:
committed by
GitHub
parent
9bbe015a05
commit
be35c1c1b7
1
programs/bpf/Cargo.lock
generated
1
programs/bpf/Cargo.lock
generated
@ -2598,6 +2598,7 @@ dependencies = [
|
||||
"num-derive 0.3.0",
|
||||
"num-traits",
|
||||
"rand_core 0.6.2",
|
||||
"solana-measure",
|
||||
"solana-runtime",
|
||||
"solana-sdk",
|
||||
"solana_rbpf",
|
||||
|
@ -16,6 +16,7 @@ log = "0.4.11"
|
||||
num-derive = "0.3"
|
||||
num-traits = "0.2"
|
||||
rand_core = "0.6.2"
|
||||
solana-measure = { path = "../../measure", version = "1.6.0" }
|
||||
solana-runtime = { path = "../../runtime", version = "1.6.0" }
|
||||
solana-sdk = { path = "../../sdk", version = "1.6.0" }
|
||||
solana_rbpf = "=0.2.5"
|
||||
|
@ -15,6 +15,7 @@ use crate::{
|
||||
syscalls::SyscallError,
|
||||
};
|
||||
use log::{log_enabled, trace, Level::Trace};
|
||||
use solana_measure::measure::Measure;
|
||||
use solana_rbpf::{
|
||||
ebpf::MM_HEAP_START,
|
||||
error::{EbpfError, UserDefinedError},
|
||||
@ -770,8 +771,12 @@ impl Executor for BpfExecutor {
|
||||
let mut keyed_accounts_iter = keyed_accounts.iter();
|
||||
let _ = next_keyed_account(&mut keyed_accounts_iter)?;
|
||||
let parameter_accounts = keyed_accounts_iter.as_slice();
|
||||
let mut serialize_time = Measure::start("serialize");
|
||||
let mut parameter_bytes =
|
||||
serialize_parameters(loader_id, program_id, parameter_accounts, &instruction_data)?;
|
||||
serialize_time.stop();
|
||||
let mut create_vm_time = Measure::start("create_vm");
|
||||
let mut execute_time;
|
||||
{
|
||||
let compute_meter = invoke_context.get_compute_meter();
|
||||
let mut vm = match create_vm(
|
||||
@ -787,7 +792,9 @@ impl Executor for BpfExecutor {
|
||||
return Err(InstructionError::ProgramEnvironmentSetupFailure);
|
||||
}
|
||||
};
|
||||
create_vm_time.stop();
|
||||
|
||||
execute_time = Measure::start("execute");
|
||||
stable_log::program_invoke(&logger, program_id, invoke_depth);
|
||||
let mut instruction_meter = ThisInstructionMeter::new(compute_meter.clone());
|
||||
let before = compute_meter.borrow().get_remaining();
|
||||
@ -833,8 +840,17 @@ impl Executor for BpfExecutor {
|
||||
return Err(error);
|
||||
}
|
||||
}
|
||||
execute_time.stop();
|
||||
}
|
||||
let mut deserialize_time = Measure::start("deserialize");
|
||||
deserialize_parameters(loader_id, parameter_accounts, ¶meter_bytes)?;
|
||||
deserialize_time.stop();
|
||||
invoke_context.update_timing(
|
||||
serialize_time.as_us(),
|
||||
create_vm_time.as_us(),
|
||||
execute_time.as_us(),
|
||||
deserialize_time.as_us(),
|
||||
);
|
||||
stable_log::program_success(&logger, program_id);
|
||||
Ok(())
|
||||
}
|
||||
|
Reference in New Issue
Block a user