Add squashing metrics (#3573)
This commit is contained in:
parent
f886b3b12b
commit
8660c3581e
|
@ -1,9 +1,12 @@
|
||||||
//! The `bank_forks` module implments BankForks a DAG of checkpointed Banks
|
//! The `bank_forks` module implments BankForks a DAG of checkpointed Banks
|
||||||
|
|
||||||
use hashbrown::{HashMap, HashSet};
|
use hashbrown::{HashMap, HashSet};
|
||||||
|
use solana_metrics::counter::Counter;
|
||||||
use solana_runtime::bank::Bank;
|
use solana_runtime::bank::Bank;
|
||||||
|
use solana_sdk::timing;
|
||||||
use std::ops::Index;
|
use std::ops::Index;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
use std::time::Instant;
|
||||||
|
|
||||||
pub struct BankForks {
|
pub struct BankForks {
|
||||||
banks: HashMap<u64, Arc<Bank>>,
|
banks: HashMap<u64, Arc<Bank>>,
|
||||||
|
@ -99,12 +102,17 @@ impl BankForks {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_root(&mut self, root: u64) {
|
pub fn set_root(&mut self, root: u64) {
|
||||||
|
let set_root_start = Instant::now();
|
||||||
let root_bank = self
|
let root_bank = self
|
||||||
.banks
|
.banks
|
||||||
.get(&root)
|
.get(&root)
|
||||||
.expect("root bank didn't exist in bank_forks");
|
.expect("root bank didn't exist in bank_forks");
|
||||||
root_bank.squash();
|
root_bank.squash();
|
||||||
self.prune_non_root(root);
|
self.prune_non_root(root);
|
||||||
|
inc_new_counter_info!(
|
||||||
|
"bank-forks_set_root_ms",
|
||||||
|
timing::duration_as_ms(&set_root_start.elapsed()) as usize
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn prune_non_root(&mut self, root: u64) {
|
fn prune_non_root(&mut self, root: u64) {
|
||||||
|
|
|
@ -11,6 +11,7 @@ use bincode::serialize;
|
||||||
use hashbrown::HashMap;
|
use hashbrown::HashMap;
|
||||||
use log::*;
|
use log::*;
|
||||||
use solana_metrics::counter::Counter;
|
use solana_metrics::counter::Counter;
|
||||||
|
use solana_metrics::influxdb;
|
||||||
use solana_sdk::account::Account;
|
use solana_sdk::account::Account;
|
||||||
use solana_sdk::fee_calculator::FeeCalculator;
|
use solana_sdk::fee_calculator::FeeCalculator;
|
||||||
use solana_sdk::genesis_block::GenesisBlock;
|
use solana_sdk::genesis_block::GenesisBlock;
|
||||||
|
@ -19,7 +20,7 @@ use solana_sdk::native_loader;
|
||||||
use solana_sdk::pubkey::Pubkey;
|
use solana_sdk::pubkey::Pubkey;
|
||||||
use solana_sdk::signature::{Keypair, Signature};
|
use solana_sdk::signature::{Keypair, Signature};
|
||||||
use solana_sdk::system_transaction::SystemTransaction;
|
use solana_sdk::system_transaction::SystemTransaction;
|
||||||
use solana_sdk::timing::{duration_as_us, MAX_RECENT_BLOCKHASHES};
|
use solana_sdk::timing::{duration_as_ms, duration_as_us, MAX_RECENT_BLOCKHASHES};
|
||||||
use solana_sdk::transaction::{Transaction, TransactionError};
|
use solana_sdk::transaction::{Transaction, TransactionError};
|
||||||
use solana_vote_api::vote_instruction::Vote;
|
use solana_vote_api::vote_instruction::Vote;
|
||||||
use solana_vote_api::vote_state::{Lockout, VoteState};
|
use solana_vote_api::vote_state::{Lockout, VoteState};
|
||||||
|
@ -260,11 +261,28 @@ impl Bank {
|
||||||
let parents = self.parents();
|
let parents = self.parents();
|
||||||
*self.parent.write().unwrap() = None;
|
*self.parent.write().unwrap() = None;
|
||||||
|
|
||||||
|
let squash_accounts_start = Instant::now();
|
||||||
self.accounts.squash(self.accounts_id);
|
self.accounts.squash(self.accounts_id);
|
||||||
|
let squash_accounts_ms = duration_as_ms(&squash_accounts_start.elapsed());
|
||||||
|
|
||||||
|
let squash_cache_start = Instant::now();
|
||||||
parents
|
parents
|
||||||
.iter()
|
.iter()
|
||||||
.for_each(|p| self.status_cache.write().unwrap().add_root(p.slot()));
|
.for_each(|p| self.status_cache.write().unwrap().add_root(p.slot()));
|
||||||
|
let squash_cache_ms = duration_as_ms(&squash_cache_start.elapsed());
|
||||||
|
|
||||||
|
solana_metrics::submit(
|
||||||
|
influxdb::Point::new("counter-locktower-observed")
|
||||||
|
.add_field(
|
||||||
|
"squash_accounts_ms",
|
||||||
|
influxdb::Value::Integer(squash_accounts_ms as i64),
|
||||||
|
)
|
||||||
|
.add_field(
|
||||||
|
"squash_cache_ms",
|
||||||
|
influxdb::Value::Integer(squash_cache_ms as i64),
|
||||||
|
)
|
||||||
|
.to_owned(),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Return the more recent checkpoint of this bank instance.
|
/// Return the more recent checkpoint of this bank instance.
|
||||||
|
|
Loading…
Reference in New Issue