فهرست منبع

Extract timings crate (#2026)

* extract solana-timings crate

* update timings dependents

* remove now-unused deps

* fmt
Kevin Heavey 1 سال پیش
والد
کامیت
78ae6c7df9

+ 18 - 3
Cargo.lock

@@ -5707,6 +5707,7 @@ dependencies = [
  "solana-poseidon",
  "solana-program-runtime",
  "solana-sdk",
+ "solana-timings",
  "solana-type-overrides",
  "solana-vote",
  "solana_rbpf",
@@ -6098,6 +6099,7 @@ dependencies = [
  "solana-stake-program",
  "solana-streamer",
  "solana-svm",
+ "solana-timings",
  "solana-tpu-client",
  "solana-transaction-status",
  "solana-turbine",
@@ -6485,6 +6487,7 @@ dependencies = [
  "solana-storage-bigtable",
  "solana-storage-proto",
  "solana-svm",
+ "solana-timings",
  "solana-transaction-status",
  "solana-vote",
  "solana-vote-program",
@@ -6838,7 +6841,6 @@ dependencies = [
  "assert_matches",
  "base64 0.22.1",
  "bincode",
- "eager",
  "enum-iterator",
  "itertools 0.12.1",
  "libc",
@@ -6857,6 +6859,7 @@ dependencies = [
  "solana-measure",
  "solana-metrics",
  "solana-sdk",
+ "solana-timings",
  "solana-type-overrides",
  "solana-vote",
  "solana_rbpf",
@@ -6890,6 +6893,7 @@ dependencies = [
  "solana-sdk",
  "solana-stake-program",
  "solana-svm",
+ "solana-timings",
  "solana-vote-program",
  "solana_rbpf",
  "test-case",
@@ -7202,6 +7206,7 @@ dependencies = [
  "solana-stake-program",
  "solana-svm",
  "solana-system-program",
+ "solana-timings",
  "solana-transaction-status",
  "solana-version",
  "solana-vote",
@@ -7495,6 +7500,7 @@ dependencies = [
  "solana-svm",
  "solana-svm-conformance",
  "solana-system-program",
+ "solana-timings",
  "solana-type-overrides",
  "solana-vote",
 ]
@@ -7569,6 +7575,15 @@ dependencies = [
  "solana-sdk",
 ]
 
+[[package]]
+name = "solana-timings"
+version = "2.1.0"
+dependencies = [
+ "eager",
+ "enum-iterator",
+ "solana-sdk",
+]
+
 [[package]]
 name = "solana-tokens"
 version = "2.1.0"
@@ -7795,9 +7810,9 @@ dependencies = [
  "scopeguard",
  "solana-ledger",
  "solana-logger",
- "solana-program-runtime",
  "solana-runtime",
  "solana-sdk",
+ "solana-timings",
  "solana-unified-scheduler-logic",
  "vec_extract_if_polyfill",
 ]
@@ -7886,10 +7901,10 @@ dependencies = [
  "solana-ledger",
  "solana-logger",
  "solana-program",
- "solana-program-runtime",
  "solana-runtime",
  "solana-sdk",
  "solana-streamer",
+ "solana-timings",
  "solana-vote-program",
  "tempfile",
 ]

+ 2 - 0
Cargo.toml

@@ -114,6 +114,7 @@ members = [
     "svm-conformance",
     "test-validator",
     "thin-client",
+    "timings",
     "tokens",
     "tps-client",
     "tpu-client",
@@ -384,6 +385,7 @@ solana-quic-client = { path = "quic-client", version = "=2.1.0" }
 solana-rayon-threadlimit = { path = "rayon-threadlimit", version = "=2.1.0" }
 solana-remote-wallet = { path = "remote-wallet", version = "=2.1.0", default-features = false }
 solana-sanitize = { path = "sanitize", version = "=2.1.0" }
+solana-timings = { path = "timings", version = "=2.1.0" }
 solana-unified-scheduler-logic = { path = "unified-scheduler-logic", version = "=2.1.0" }
 solana-unified-scheduler-pool = { path = "unified-scheduler-pool", version = "=2.1.0" }
 solana-rpc = { path = "rpc", version = "=2.1.0" }

+ 1 - 1
core/Cargo.toml

@@ -60,7 +60,6 @@ solana-metrics = { workspace = true }
 solana-net-utils = { workspace = true }
 solana-perf = { workspace = true }
 solana-poh = { workspace = true }
-solana-program-runtime = { workspace = true }
 solana-quic-client = { workspace = true }
 solana-rayon-threadlimit = { workspace = true }
 solana-rpc = { workspace = true }
@@ -71,6 +70,7 @@ solana-sdk = { workspace = true }
 solana-send-transaction-service = { workspace = true }
 solana-streamer = { workspace = true }
 solana-svm = { workspace = true }
+solana-timings = { workspace = true }
 solana-tpu-client = { workspace = true }
 solana-transaction-status = { workspace = true }
 solana-turbine = { workspace = true }

+ 2 - 2
core/src/banking_stage/consumer.rs

@@ -16,7 +16,6 @@ use {
         BankStart, PohRecorderError, RecordTransactionsSummary, RecordTransactionsTimings,
         TransactionRecorder,
     },
-    solana_program_runtime::timings::ExecuteTimings,
     solana_runtime::{
         bank::{Bank, LoadAndExecuteTransactionsOutput},
         compute_budget_details::GetComputeBudgetDetails,
@@ -35,6 +34,7 @@ use {
         transaction_error_metrics::TransactionErrorMetrics,
         transaction_processor::{ExecutionRecordingConfig, TransactionProcessingConfig},
     },
+    solana_timings::ExecuteTimings,
     std::{
         sync::{atomic::Ordering, Arc},
         time::Instant,
@@ -849,7 +849,6 @@ mod tests {
         },
         solana_perf::packet::Packet,
         solana_poh::poh_recorder::{PohRecorder, Record, WorkingBankEntry},
-        solana_program_runtime::timings::ProgramTiming,
         solana_rpc::transaction_status_service::TransactionStatusService,
         solana_runtime::{bank_forks::BankForks, prioritization_fee_cache::PrioritizationFeeCache},
         solana_sdk::{
@@ -878,6 +877,7 @@ mod tests {
             transaction::{MessageHash, Transaction, VersionedTransaction},
         },
         solana_svm::account_loader::CheckedTransactionDetails,
+        solana_timings::ProgramTiming,
         solana_transaction_status::{TransactionStatusMeta, VersionedTransactionWithStatusMeta},
         std::{
             borrow::Cow,

+ 1 - 1
core/src/banking_stage/leader_slot_timing_metrics.rs

@@ -1,7 +1,7 @@
 use {
     solana_poh::poh_recorder::RecordTransactionsTimings,
-    solana_program_runtime::timings::ExecuteTimings,
     solana_sdk::{clock::Slot, saturating_add_assign},
+    solana_timings::ExecuteTimings,
     std::time::Instant,
 };
 

+ 1 - 1
core/src/replay_stage.rs

@@ -50,7 +50,6 @@ use {
     },
     solana_measure::measure::Measure,
     solana_poh::poh_recorder::{PohLeaderStatus, PohRecorder, GRACE_TICKS_FACTOR, MAX_GRACE_SLOTS},
-    solana_program_runtime::timings::ExecuteTimings,
     solana_rpc::{
         optimistically_confirmed_bank_tracker::{BankNotification, BankNotificationSenderConfig},
         rpc_subscriptions::RpcSubscriptions,
@@ -76,6 +75,7 @@ use {
         timing::timestamp,
         transaction::Transaction,
     },
+    solana_timings::ExecuteTimings,
     solana_vote_program::vote_state::{VoteState, VoteTransaction},
     std::{
         collections::{HashMap, HashSet},

+ 1 - 1
core/tests/unified_scheduler.rs

@@ -15,7 +15,6 @@ use {
         unfrozen_gossip_verified_vote_hashes::UnfrozenGossipVerifiedVoteHashes,
     },
     solana_ledger::genesis_utils::create_genesis_config,
-    solana_program_runtime::timings::ExecuteTimings,
     solana_runtime::{
         accounts_background_service::AbsRequestSender, bank::Bank, bank_forks::BankForks,
         genesis_utils::GenesisConfigInfo, prioritization_fee_cache::PrioritizationFeeCache,
@@ -26,6 +25,7 @@ use {
         system_transaction,
         transaction::{Result, SanitizedTransaction},
     },
+    solana_timings::ExecuteTimings,
     solana_unified_scheduler_pool::{
         DefaultTaskHandler, HandlerContext, PooledScheduler, SchedulerPool, TaskHandler,
     },

+ 1 - 0
ledger/Cargo.toml

@@ -57,6 +57,7 @@ solana-stake-program = { workspace = true }
 solana-storage-bigtable = { workspace = true }
 solana-storage-proto = { workspace = true }
 solana-svm = { workspace = true }
+solana-timings = { workspace = true }
 solana-transaction-status = { workspace = true }
 solana-vote = { workspace = true }
 solana-vote-program = { workspace = true }

+ 1 - 1
ledger/benches/blockstore_processor.rs

@@ -10,7 +10,6 @@ use {
         blockstore_processor::{execute_batch, TransactionBatchWithIndexes},
         genesis_utils::{create_genesis_config, GenesisConfigInfo},
     },
-    solana_program_runtime::timings::ExecuteTimings,
     solana_runtime::{
         bank::Bank, bank_forks::BankForks, prioritization_fee_cache::PrioritizationFeeCache,
         transaction_batch::TransactionBatch,
@@ -24,6 +23,7 @@ use {
         system_program, system_transaction,
         transaction::SanitizedTransaction,
     },
+    solana_timings::ExecuteTimings,
     std::{
         borrow::Cow,
         sync::{Arc, RwLock},

+ 1 - 4
ledger/src/blockstore_processor.rs

@@ -27,10 +27,6 @@ use {
     },
     solana_measure::{measure, measure::Measure},
     solana_metrics::datapoint_error,
-    solana_program_runtime::{
-        report_execute_timings,
-        timings::{ExecuteTimingType, ExecuteTimings},
-    },
     solana_rayon_threadlimit::{get_max_thread_count, get_thread_count},
     solana_runtime::{
         accounts_background_service::{AbsRequestSender, SnapshotRequestKind},
@@ -66,6 +62,7 @@ use {
             TransactionLoadedAccountsStats, TransactionResults,
         },
     },
+    solana_timings::{report_execute_timings, ExecuteTimingType, ExecuteTimings},
     solana_transaction_status::token_balances::TransactionTokenBalancesSet,
     solana_vote::vote_account::VoteAccountsHashMap,
     std::{

+ 1 - 1
program-runtime/Cargo.toml

@@ -12,7 +12,6 @@ edition = { workspace = true }
 [dependencies]
 base64 = { workspace = true }
 bincode = { workspace = true }
-eager = { workspace = true }
 enum-iterator = { workspace = true }
 itertools = { workspace = true }
 libc = { workspace = true }
@@ -29,6 +28,7 @@ solana-log-collector = { workspace = true }
 solana-measure = { workspace = true }
 solana-metrics = { workspace = true }
 solana-sdk = { workspace = true }
+solana-timings = { workspace = true }
 solana-type-overrides = { workspace = true }
 solana-vote = { workspace = true }
 solana_rbpf = { workspace = true }

+ 1 - 1
program-runtime/src/invoke_context.rs

@@ -6,7 +6,6 @@ use {
         },
         stable_log,
         sysvar_cache::SysvarCache,
-        timings::{ExecuteDetailsTimings, ExecuteTimings},
     },
     solana_compute_budget::compute_budget::ComputeBudget,
     solana_log_collector::{ic_msg, LogCollector},
@@ -35,6 +34,7 @@ use {
             IndexOfAccount, InstructionAccount, TransactionAccount, TransactionContext,
         },
     },
+    solana_timings::{ExecuteDetailsTimings, ExecuteTimings},
     solana_type_overrides::sync::{atomic::Ordering, Arc},
     solana_vote::vote_account::VoteAccountsHashMap,
     std::{

+ 0 - 4
program-runtime/src/lib.rs

@@ -2,9 +2,6 @@
 #![deny(clippy::arithmetic_side_effects)]
 #![deny(clippy::indexing_slicing)]
 
-#[macro_use]
-extern crate eager;
-
 #[macro_use]
 extern crate solana_metrics;
 
@@ -14,4 +11,3 @@ pub mod loaded_programs;
 pub mod mem_pool;
 pub mod stable_log;
 pub mod sysvar_cache;
-pub mod timings;

+ 2 - 4
program-runtime/src/loaded_programs.rs

@@ -1,8 +1,5 @@
 use {
-    crate::{
-        invoke_context::{BuiltinFunctionWithContext, InvokeContext},
-        timings::ExecuteDetailsTimings,
-    },
+    crate::invoke_context::{BuiltinFunctionWithContext, InvokeContext},
     log::{debug, error, log_enabled, trace},
     percentage::PercentageInteger,
     solana_measure::measure::Measure,
@@ -19,6 +16,7 @@ use {
         pubkey::Pubkey,
         saturating_add_assign,
     },
+    solana_timings::ExecuteDetailsTimings,
     solana_type_overrides::{
         rand::{thread_rng, Rng},
         sync::{

+ 1 - 0
program-test/Cargo.toml

@@ -30,6 +30,7 @@ solana-program-runtime = { workspace = true }
 solana-runtime = { workspace = true }
 solana-sdk = { workspace = true }
 solana-svm = { workspace = true }
+solana-timings = { workspace = true }
 solana-vote-program = { workspace = true }
 solana_rbpf = { workspace = true }
 thiserror = { workspace = true }

+ 1 - 1
program-test/src/lib.rs

@@ -19,7 +19,6 @@ use {
     solana_log_collector::ic_msg,
     solana_program_runtime::{
         invoke_context::BuiltinFunctionWithContext, loaded_programs::ProgramCacheEntry, stable_log,
-        timings::ExecuteTimings,
     },
     solana_runtime::{
         accounts_background_service::{AbsRequestSender, SnapshotRequestKind},
@@ -48,6 +47,7 @@ use {
         stable_layout::stable_instruction::StableInstruction,
         sysvar::{Sysvar, SysvarId},
     },
+    solana_timings::ExecuteTimings,
     solana_vote_program::vote_state::{self, VoteState, VoteStateVersions},
     std::{
         cell::RefCell,

+ 1 - 0
programs/bpf_loader/Cargo.toml

@@ -22,6 +22,7 @@ solana-measure = { workspace = true }
 solana-poseidon = { workspace = true }
 solana-program-runtime = { workspace = true }
 solana-sdk = { workspace = true }
+solana-timings = { workspace = true }
 solana-type-overrides = { workspace = true }
 solana_rbpf = { workspace = true }
 thiserror = { workspace = true }

+ 2 - 1
programs/bpf_loader/src/syscalls/mod.rs

@@ -15,7 +15,7 @@ use {
     solana_compute_budget::compute_budget::ComputeBudget,
     solana_log_collector::{ic_logger_msg, ic_msg},
     solana_poseidon as poseidon,
-    solana_program_runtime::{invoke_context::InvokeContext, stable_log, timings::ExecuteTimings},
+    solana_program_runtime::{invoke_context::InvokeContext, stable_log},
     solana_rbpf::{
         declare_builtin_function,
         memory_region::{AccessType, MemoryMapping},
@@ -56,6 +56,7 @@ use {
         sysvar::{Sysvar, SysvarId},
         transaction_context::{IndexOfAccount, InstructionAccount},
     },
+    solana_timings::ExecuteTimings,
     solana_type_overrides::sync::Arc,
     std::{
         alloc::Layout,

+ 19 - 4
programs/sbf/Cargo.lock

@@ -4651,6 +4651,7 @@ dependencies = [
  "solana-poseidon",
  "solana-program-runtime",
  "solana-sdk",
+ "solana-timings",
  "solana-type-overrides",
  "solana_rbpf",
  "thiserror",
@@ -4855,7 +4856,6 @@ dependencies = [
  "solana-net-utils",
  "solana-perf",
  "solana-poh",
- "solana-program-runtime",
  "solana-quic-client",
  "solana-rayon-threadlimit",
  "solana-rpc",
@@ -4866,6 +4866,7 @@ dependencies = [
  "solana-send-transaction-service",
  "solana-streamer",
  "solana-svm",
+ "solana-timings",
  "solana-tpu-client",
  "solana-transaction-status",
  "solana-turbine",
@@ -5116,6 +5117,7 @@ dependencies = [
  "solana-storage-bigtable",
  "solana-storage-proto",
  "solana-svm",
+ "solana-timings",
  "solana-transaction-status",
  "solana-vote",
  "solana-vote-program",
@@ -5319,7 +5321,6 @@ version = "2.1.0"
 dependencies = [
  "base64 0.22.1",
  "bincode",
- "eager",
  "enum-iterator",
  "itertools 0.12.1",
  "libc",
@@ -5335,6 +5336,7 @@ dependencies = [
  "solana-measure",
  "solana-metrics",
  "solana-sdk",
+ "solana-timings",
  "solana-type-overrides",
  "solana-vote",
  "solana_rbpf",
@@ -5366,6 +5368,7 @@ dependencies = [
  "solana-runtime",
  "solana-sdk",
  "solana-svm",
+ "solana-timings",
  "solana-vote-program",
  "solana_rbpf",
  "thiserror",
@@ -5619,6 +5622,7 @@ dependencies = [
  "solana-stake-program",
  "solana-svm",
  "solana-system-program",
+ "solana-timings",
  "solana-transaction-status",
  "solana-version",
  "solana-vote",
@@ -5673,6 +5677,7 @@ dependencies = [
  "solana-sbf-rust-realloc-invoke-dep",
  "solana-sdk",
  "solana-svm",
+ "solana-timings",
  "solana-transaction-status",
  "solana-type-overrides",
  "solana_rbpf",
@@ -6294,6 +6299,7 @@ dependencies = [
  "solana-program-runtime",
  "solana-sdk",
  "solana-system-program",
+ "solana-timings",
  "solana-type-overrides",
  "solana-vote",
 ]
@@ -6355,6 +6361,15 @@ dependencies = [
  "solana-sdk",
 ]
 
+[[package]]
+name = "solana-timings"
+version = "2.1.0"
+dependencies = [
+ "eager",
+ "enum-iterator",
+ "solana-sdk",
+]
+
 [[package]]
 name = "solana-tpu-client"
 version = "2.1.0"
@@ -6492,9 +6507,9 @@ dependencies = [
  "qualifier_attr",
  "scopeguard",
  "solana-ledger",
- "solana-program-runtime",
  "solana-runtime",
  "solana-sdk",
+ "solana-timings",
  "solana-unified-scheduler-logic",
  "vec_extract_if_polyfill",
 ]
@@ -6559,9 +6574,9 @@ dependencies = [
  "solana-gossip",
  "solana-ledger",
  "solana-program",
- "solana-program-runtime",
  "solana-runtime",
  "solana-sdk",
+ "solana-timings",
  "solana-vote-program",
 ]
 

+ 2 - 0
programs/sbf/Cargo.toml

@@ -49,6 +49,7 @@ solana-sbf-rust-realloc-dep = { path = "rust/realloc_dep", version = "=2.1.0" }
 solana-sbf-rust-realloc-invoke-dep = { path = "rust/realloc_invoke_dep", version = "=2.1.0" }
 solana-sdk = { path = "../../sdk", version = "=2.1.0" }
 solana-svm = { path = "../../svm", version = "=2.1.0" }
+solana-timings = { path = "../../timings", version = "=2.1.0" }
 solana-transaction-status = { path = "../../transaction-status", version = "=2.1.0" }
 solana-type-overrides = { path = "../../type-overrides", version = "=2.1.0" }
 agave-validator = { path = "../../validator", version = "=2.1.0" }
@@ -105,6 +106,7 @@ solana-sbf-rust-realloc-dep = { workspace = true }
 solana-sbf-rust-realloc-invoke-dep = { workspace = true }
 solana-sdk = { workspace = true, features = ["dev-context-only-utils"] }
 solana-svm = { workspace = true }
+solana-timings = { workspace = true }
 solana-transaction-status = { workspace = true }
 solana-type-overrides = { workspace = true }
 solana_rbpf = { workspace = true }

+ 2 - 1
programs/sbf/tests/programs.rs

@@ -18,7 +18,7 @@ use {
         compute_budget_processor::process_compute_budget_instructions,
     },
     solana_ledger::token_balances::collect_token_balances,
-    solana_program_runtime::{invoke_context::mock_process_instruction, timings::ExecuteTimings},
+    solana_program_runtime::invoke_context::mock_process_instruction,
     solana_rbpf::vm::ContextObject,
     solana_runtime::{
         bank::{Bank, TransactionBalancesSet},
@@ -69,6 +69,7 @@ use {
             TransactionResults,
         },
     },
+    solana_timings::ExecuteTimings,
     solana_transaction_status::{
         map_inner_instructions, ConfirmedTransactionWithStatusMeta, TransactionStatusMeta,
         TransactionWithStatusMeta, VersionedTransactionWithStatusMeta,

+ 1 - 0
runtime/Cargo.toml

@@ -67,6 +67,7 @@ solana-sdk = { workspace = true }
 solana-stake-program = { workspace = true }
 solana-svm = { workspace = true }
 solana-system-program = { workspace = true }
+solana-timings = { workspace = true }
 solana-transaction-status = { workspace = true }
 solana-version = { workspace = true }
 solana-vote = { workspace = true }

+ 2 - 3
runtime/src/bank.rs

@@ -95,9 +95,7 @@ use {
     solana_measure::{measure, measure::Measure, measure_us},
     solana_perf::perf_libs,
     solana_program_runtime::{
-        invoke_context::BuiltinFunctionWithContext,
-        loaded_programs::ProgramCacheEntry,
-        timings::{ExecuteTimingType, ExecuteTimings},
+        invoke_context::BuiltinFunctionWithContext, loaded_programs::ProgramCacheEntry,
     },
     solana_sdk::{
         account::{
@@ -175,6 +173,7 @@ use {
             TransactionLoadedAccountsStats, TransactionResults,
         },
     },
+    solana_timings::{ExecuteTimingType, ExecuteTimings},
     solana_vote::vote_account::{VoteAccount, VoteAccountsHashMap},
     solana_vote_program::vote_state::VoteState,
     std::{

+ 1 - 1
runtime/src/bank/tests.rs

@@ -42,7 +42,6 @@ use {
     solana_program_runtime::{
         declare_process_instruction,
         loaded_programs::{ProgramCacheEntry, ProgramCacheEntryType},
-        timings::ExecuteTimings,
     },
     solana_sdk::{
         account::{
@@ -102,6 +101,7 @@ use {
     },
     solana_stake_program::stake_state::{self, StakeStateV2},
     solana_svm::nonce_info::NoncePartial,
+    solana_timings::ExecuteTimings,
     solana_vote_program::{
         vote_instruction,
         vote_state::{

+ 1 - 1
runtime/src/installed_scheduler_pool.rs

@@ -23,12 +23,12 @@
 use {
     crate::bank::Bank,
     log::*,
-    solana_program_runtime::timings::ExecuteTimings,
     solana_sdk::{
         clock::Slot,
         hash::Hash,
         transaction::{Result, SanitizedTransaction, TransactionError},
     },
+    solana_timings::ExecuteTimings,
     std::{
         fmt::{self, Debug},
         mem,

+ 1 - 0
svm/Cargo.toml

@@ -26,6 +26,7 @@ solana-metrics = { workspace = true }
 solana-program-runtime = { workspace = true }
 solana-sdk = { workspace = true }
 solana-system-program = { workspace = true }
+solana-timings = { workspace = true }
 solana-type-overrides = { workspace = true }
 solana-vote = { workspace = true }
 

+ 2 - 4
svm/src/message_processor.rs

@@ -1,9 +1,6 @@
 use {
     solana_measure::measure::Measure,
-    solana_program_runtime::{
-        invoke_context::InvokeContext,
-        timings::{ExecuteDetailsTimings, ExecuteTimings},
-    },
+    solana_program_runtime::invoke_context::InvokeContext,
     solana_sdk::{
         account::WritableAccount,
         message::SanitizedMessage,
@@ -13,6 +10,7 @@ use {
         transaction::TransactionError,
         transaction_context::{IndexOfAccount, InstructionAccount},
     },
+    solana_timings::{ExecuteDetailsTimings, ExecuteTimings},
 };
 
 #[derive(Debug, Default, Clone, serde_derive::Deserialize, serde_derive::Serialize)]

+ 4 - 6
svm/src/program_loader.rs

@@ -1,11 +1,8 @@
 use {
     crate::transaction_processing_callback::TransactionProcessingCallback,
-    solana_program_runtime::{
-        loaded_programs::{
-            LoadProgramMetrics, ProgramCacheEntry, ProgramCacheEntryOwner, ProgramCacheEntryType,
-            ProgramRuntimeEnvironment, ProgramRuntimeEnvironments, DELAY_VISIBILITY_SLOT_OFFSET,
-        },
-        timings::ExecuteDetailsTimings,
+    solana_program_runtime::loaded_programs::{
+        LoadProgramMetrics, ProgramCacheEntry, ProgramCacheEntryOwner, ProgramCacheEntryType,
+        ProgramRuntimeEnvironment, ProgramRuntimeEnvironments, DELAY_VISIBILITY_SLOT_OFFSET,
     },
     solana_sdk::{
         account::{AccountSharedData, ReadableAccount},
@@ -18,6 +15,7 @@ use {
         pubkey::Pubkey,
         transaction::{self, TransactionError},
     },
+    solana_timings::ExecuteDetailsTimings,
     solana_type_overrides::sync::Arc,
 };
 

+ 1 - 1
svm/src/transaction_processor.rs

@@ -31,7 +31,6 @@ use {
             ProgramCacheMatchCriteria,
         },
         sysvar_cache::SysvarCache,
-        timings::{ExecuteTimingType, ExecuteTimings},
     },
     solana_sdk::{
         account::{AccountSharedData, ReadableAccount, PROGRAM_OWNERS},
@@ -51,6 +50,7 @@ use {
         transaction::{self, SanitizedTransaction, TransactionError},
         transaction_context::{ExecutionRecord, TransactionContext},
     },
+    solana_timings::{ExecuteTimingType, ExecuteTimings},
     solana_type_overrides::sync::{atomic::Ordering, Arc, RwLock, RwLockReadGuard},
     solana_vote::vote_account::VoteAccountsHashMap,
     std::{

+ 1 - 1
svm/tests/conformance.rs

@@ -15,7 +15,6 @@ use {
             program::{BuiltinProgram, FunctionRegistry},
             vm::Config,
         },
-        timings::ExecuteTimings,
     },
     solana_sdk::{
         account::{AccountSharedData, ReadableAccount, WritableAccount},
@@ -43,6 +42,7 @@ use {
         },
     },
     solana_svm_conformance::proto::{InstrEffects, InstrFixture},
+    solana_timings::ExecuteTimings,
     std::{
         collections::{HashMap, HashSet},
         env,

+ 18 - 0
timings/Cargo.toml

@@ -0,0 +1,18 @@
+[package]
+name = "solana-timings"
+description = "Solana Message Sanitization"
+documentation = "https://docs.rs/solana-sanitize"
+version = { workspace = true }
+authors = { workspace = true }
+repository = { workspace = true }
+homepage = { workspace = true }
+license = { workspace = true }
+edition = { workspace = true }
+
+[dependencies]
+eager = { workspace = true }
+enum-iterator = { workspace = true }
+solana-sdk = { workspace = true }
+
+[package.metadata.docs.rs]
+targets = ["x86_64-unknown-linux-gnu"]

+ 2 - 0
program-runtime/src/timings.rs → timings/src/lib.rs

@@ -1,3 +1,5 @@
+#[macro_use]
+extern crate eager;
 use {
     core::fmt,
     enum_iterator::Sequence,

+ 1 - 1
unified-scheduler-pool/Cargo.toml

@@ -18,9 +18,9 @@ log = { workspace = true }
 qualifier_attr = { workspace = true }
 scopeguard = { workspace = true }
 solana-ledger = { workspace = true }
-solana-program-runtime = { workspace = true }
 solana-runtime = { workspace = true }
 solana-sdk = { workspace = true }
+solana-timings = { workspace = true }
 solana-unified-scheduler-logic = { workspace = true }
 vec_extract_if_polyfill = { workspace = true }
 

+ 2 - 2
unified-scheduler-pool/src/lib.rs

@@ -20,7 +20,6 @@ use {
     solana_ledger::blockstore_processor::{
         execute_batch, TransactionBatchWithIndexes, TransactionStatusSender,
     },
-    solana_program_runtime::timings::ExecuteTimings,
     solana_runtime::{
         bank::Bank,
         installed_scheduler_pool::{
@@ -36,6 +35,7 @@ use {
         pubkey::Pubkey,
         transaction::{Result, SanitizedTransaction, TransactionError},
     },
+    solana_timings::ExecuteTimings,
     solana_unified_scheduler_logic::{SchedulingStateMachine, Task, UsageQueue},
     std::{
         fmt::Debug,
@@ -1462,7 +1462,6 @@ mod tests {
         super::*,
         crate::sleepless_testing,
         assert_matches::assert_matches,
-        solana_program_runtime::timings::ExecuteTimingType,
         solana_runtime::{
             bank::Bank,
             bank_forks::BankForks,
@@ -1477,6 +1476,7 @@ mod tests {
             system_transaction,
             transaction::{SanitizedTransaction, TransactionError},
         },
+        solana_timings::ExecuteTimingType,
         std::{
             sync::{Arc, RwLock},
             thread::JoinHandle,

+ 1 - 1
wen-restart/Cargo.toml

@@ -20,9 +20,9 @@ solana-entry = { workspace = true }
 solana-gossip = { workspace = true }
 solana-ledger = { workspace = true }
 solana-program = { workspace = true }
-solana-program-runtime = { workspace = true }
 solana-runtime = { workspace = true }
 solana-sdk = { workspace = true }
+solana-timings = { workspace = true }
 solana-vote-program = { workspace = true }
 
 [dev-dependencies]

+ 1 - 1
wen-restart/src/wen_restart.rs

@@ -28,7 +28,6 @@ use {
         leader_schedule_cache::LeaderScheduleCache,
     },
     solana_program::{clock::Slot, hash::Hash},
-    solana_program_runtime::timings::ExecuteTimings,
     solana_runtime::{
         accounts_background_service::AbsRequestSender,
         bank::Bank,
@@ -42,6 +41,7 @@ use {
         },
     },
     solana_sdk::{shred_version::compute_shred_version, timing::timestamp},
+    solana_timings::ExecuteTimings,
     solana_vote_program::vote_state::VoteTransaction,
     std::{
         collections::{HashMap, HashSet},