From b3bb4357bb674dda5aba2782d0e081fcd53f3de2 Mon Sep 17 00:00:00 2001 From: Brennan Date: Fri, 7 Apr 2023 13:19:14 -0700 Subject: [PATCH] Add snapshot download metrics (#31111) * Add snapshot download metrics --- validator/src/bootstrap.rs | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/validator/src/bootstrap.rs b/validator/src/bootstrap.rs index a732023109..b5a2cbaf73 100644 --- a/validator/src/bootstrap.rs +++ b/validator/src/bootstrap.rs @@ -11,6 +11,7 @@ use { gossip_service::GossipService, legacy_contact_info::LegacyContactInfo as ContactInfo, }, + solana_metrics::datapoint_info, solana_rpc_client::rpc_client::RpcClient, solana_runtime::{ snapshot_archive_info::SnapshotArchiveInfoGetter, @@ -593,6 +594,9 @@ pub fn rpc_bootstrap( return; } + let total_snapshot_download_time = Instant::now(); + let mut get_rpc_nodes_time = Duration::new(0, 0); + let mut snapshot_download_time = Duration::new(0, 0); let mut blacklisted_rpc_nodes = HashSet::new(); let mut gossip = None; let mut vetted_rpc_nodes = vec![]; @@ -617,6 +621,7 @@ pub fn rpc_bootstrap( )); } + let get_rpc_nodes_start = Instant::now(); get_vetted_rpc_nodes( &mut vetted_rpc_nodes, &gossip.as_ref().unwrap().0, @@ -626,8 +631,10 @@ pub fn rpc_bootstrap( &bootstrap_config, ); let (rpc_contact_info, snapshot_hash, rpc_client) = vetted_rpc_nodes.pop().unwrap(); + get_rpc_nodes_time += get_rpc_nodes_start.elapsed(); - match attempt_download_genesis_and_snapshot( + let snapshot_download_start = Instant::now(); + let download_result = attempt_download_genesis_and_snapshot( &rpc_contact_info, ledger_path, validator_config, @@ -646,7 +653,9 @@ pub fn rpc_bootstrap( identity_keypair, vote_account, authorized_voter_keypairs.clone(), - ) { + ); + snapshot_download_time += snapshot_download_start.elapsed(); + match download_result { Ok(()) => break, Err(err) => { fail_rpc_node( @@ -662,6 +671,23 @@ pub fn rpc_bootstrap( if let Some(gossip) = gossip.take() { shutdown_gossip_service(gossip); } + + datapoint_info!( + "bootstrap-snapshot-download", + ( + "total_time_secs", + total_snapshot_download_time.elapsed().as_secs(), + i64 + ), + ("get_rpc_nodes_time_secs", get_rpc_nodes_time.as_secs(), i64), + ( + "snapshot_download_time_secs", + snapshot_download_time.as_secs(), + i64 + ), + ("download_abort_count", download_abort_count, i64), + ("blacklisted_nodes_count", blacklisted_rpc_nodes.len(), i64), + ); } /// Get RPC peer node candidates to download from.