bench should update leader schedule cache (#22991) (#22998)

(cherry picked from commit e52e48076e)

Co-authored-by: Tao Zhu <82401714+taozhu-chicago@users.noreply.github.com>
This commit is contained in:
mergify[bot]
2022-02-08 15:05:57 +00:00
committed by GitHub
parent 432eafd730
commit df16a37ab5
5 changed files with 24 additions and 12 deletions

View File

@ -11,6 +11,7 @@ use {
blockstore::Blockstore, blockstore::Blockstore,
genesis_utils::{create_genesis_config, GenesisConfigInfo}, genesis_utils::{create_genesis_config, GenesisConfigInfo},
get_tmp_ledger_path, get_tmp_ledger_path,
leader_schedule_cache::LeaderScheduleCache,
}, },
solana_measure::measure::Measure, solana_measure::measure::Measure,
solana_perf::packet::to_packet_batches, solana_perf::packet::to_packet_batches,
@ -218,8 +219,13 @@ fn main() {
let blockstore = Arc::new( let blockstore = Arc::new(
Blockstore::open(&ledger_path).expect("Expected to be able to open database ledger"), Blockstore::open(&ledger_path).expect("Expected to be able to open database ledger"),
); );
let (exit, poh_recorder, poh_service, signal_receiver) = let leader_schedule_cache = Arc::new(LeaderScheduleCache::new_from_bank(&bank));
create_test_recorder(&bank, &blockstore, None); let (exit, poh_recorder, poh_service, signal_receiver) = create_test_recorder(
&bank,
&blockstore,
None,
Some(leader_schedule_cache.clone()),
);
let cluster_info = ClusterInfo::new( let cluster_info = ClusterInfo::new(
Node::new_localhost().info, Node::new_localhost().info,
Arc::new(Keypair::new()), Arc::new(Keypair::new()),
@ -332,6 +338,7 @@ fn main() {
poh_recorder.lock().unwrap().set_bank(&bank); poh_recorder.lock().unwrap().set_bank(&bank);
assert!(poh_recorder.lock().unwrap().bank().is_some()); assert!(poh_recorder.lock().unwrap().bank().is_some());
if bank.slot() > 32 { if bank.slot() > 32 {
leader_schedule_cache.set_root(&bank);
bank_forks.set_root(root, &AbsRequestSender::default(), None); bank_forks.set_root(root, &AbsRequestSender::default(), None);
root += 1; root += 1;
} }

View File

@ -70,7 +70,7 @@ fn bench_consume_buffered(bencher: &mut Bencher) {
Blockstore::open(&ledger_path).expect("Expected to be able to open database ledger"), Blockstore::open(&ledger_path).expect("Expected to be able to open database ledger"),
); );
let (exit, poh_recorder, poh_service, _signal_receiver) = let (exit, poh_recorder, poh_service, _signal_receiver) =
create_test_recorder(&bank, &blockstore, None); create_test_recorder(&bank, &blockstore, None, None);
let recorder = poh_recorder.lock().unwrap().recorder(); let recorder = poh_recorder.lock().unwrap().recorder();
@ -213,7 +213,7 @@ fn bench_banking(bencher: &mut Bencher, tx_type: TransactionType) {
Blockstore::open(&ledger_path).expect("Expected to be able to open database ledger"), Blockstore::open(&ledger_path).expect("Expected to be able to open database ledger"),
); );
let (exit, poh_recorder, poh_service, signal_receiver) = let (exit, poh_recorder, poh_service, signal_receiver) =
create_test_recorder(&bank, &blockstore, None); create_test_recorder(&bank, &blockstore, None, None);
let cluster_info = ClusterInfo::new( let cluster_info = ClusterInfo::new(
Node::new_localhost().info, Node::new_localhost().info,
Arc::new(Keypair::new()), Arc::new(Keypair::new()),

View File

@ -1802,7 +1802,7 @@ mod tests {
.expect("Expected to be able to open database ledger"), .expect("Expected to be able to open database ledger"),
); );
let (exit, poh_recorder, poh_service, _entry_receiever) = let (exit, poh_recorder, poh_service, _entry_receiever) =
create_test_recorder(&bank, &blockstore, None); create_test_recorder(&bank, &blockstore, None, None);
let cluster_info = new_test_cluster_info(Node::new_localhost().info); let cluster_info = new_test_cluster_info(Node::new_localhost().info);
let cluster_info = Arc::new(cluster_info); let cluster_info = Arc::new(cluster_info);
let (gossip_vote_sender, _gossip_vote_receiver) = unbounded(); let (gossip_vote_sender, _gossip_vote_receiver) = unbounded();
@ -1850,7 +1850,7 @@ mod tests {
..PohConfig::default() ..PohConfig::default()
}; };
let (exit, poh_recorder, poh_service, entry_receiver) = let (exit, poh_recorder, poh_service, entry_receiver) =
create_test_recorder(&bank, &blockstore, Some(poh_config)); create_test_recorder(&bank, &blockstore, Some(poh_config), None);
let cluster_info = new_test_cluster_info(Node::new_localhost().info); let cluster_info = new_test_cluster_info(Node::new_localhost().info);
let cluster_info = Arc::new(cluster_info); let cluster_info = Arc::new(cluster_info);
let (verified_gossip_vote_sender, verified_gossip_vote_receiver) = unbounded(); let (verified_gossip_vote_sender, verified_gossip_vote_receiver) = unbounded();
@ -1926,7 +1926,7 @@ mod tests {
..PohConfig::default() ..PohConfig::default()
}; };
let (exit, poh_recorder, poh_service, entry_receiver) = let (exit, poh_recorder, poh_service, entry_receiver) =
create_test_recorder(&bank, &blockstore, Some(poh_config)); create_test_recorder(&bank, &blockstore, Some(poh_config), None);
let cluster_info = new_test_cluster_info(Node::new_localhost().info); let cluster_info = new_test_cluster_info(Node::new_localhost().info);
let cluster_info = Arc::new(cluster_info); let cluster_info = Arc::new(cluster_info);
let (gossip_vote_sender, _gossip_vote_receiver) = unbounded(); let (gossip_vote_sender, _gossip_vote_receiver) = unbounded();
@ -2078,7 +2078,7 @@ mod tests {
..PohConfig::default() ..PohConfig::default()
}; };
let (exit, poh_recorder, poh_service, entry_receiver) = let (exit, poh_recorder, poh_service, entry_receiver) =
create_test_recorder(&bank, &blockstore, Some(poh_config)); create_test_recorder(&bank, &blockstore, Some(poh_config), None);
let cluster_info = new_test_cluster_info(Node::new_localhost().info); let cluster_info = new_test_cluster_info(Node::new_localhost().info);
let cluster_info = Arc::new(cluster_info); let cluster_info = Arc::new(cluster_info);
let _banking_stage = BankingStage::new_num_threads( let _banking_stage = BankingStage::new_num_threads(
@ -3272,7 +3272,7 @@ mod tests {
}; };
let (exit, poh_recorder, poh_service, _entry_receiver) = let (exit, poh_recorder, poh_service, _entry_receiver) =
create_test_recorder(&bank, &blockstore, Some(poh_config)); create_test_recorder(&bank, &blockstore, Some(poh_config), None);
let local_node = Node::new_localhost_with_pubkey(validator_pubkey); let local_node = Node::new_localhost_with_pubkey(validator_pubkey);
let cluster_info = new_test_cluster_info(local_node.info); let cluster_info = new_test_cluster_info(local_node.info);
@ -3355,7 +3355,7 @@ mod tests {
}; };
let (exit, poh_recorder, poh_service, _entry_receiver) = let (exit, poh_recorder, poh_service, _entry_receiver) =
create_test_recorder(&bank, &blockstore, Some(poh_config)); create_test_recorder(&bank, &blockstore, Some(poh_config), None);
let local_node = Node::new_localhost_with_pubkey(validator_pubkey); let local_node = Node::new_localhost_with_pubkey(validator_pubkey);
let cluster_info = new_test_cluster_info(local_node.info); let cluster_info = new_test_cluster_info(local_node.info);

View File

@ -459,7 +459,7 @@ pub mod tests {
let blockstore = Arc::new(blockstore); let blockstore = Arc::new(blockstore);
let bank = bank_forks.working_bank(); let bank = bank_forks.working_bank();
let (exit, poh_recorder, poh_service, _entry_receiver) = let (exit, poh_recorder, poh_service, _entry_receiver) =
create_test_recorder(&bank, &blockstore, None); create_test_recorder(&bank, &blockstore, None, None);
let vote_keypair = Keypair::new(); let vote_keypair = Keypair::new();
let leader_schedule_cache = Arc::new(LeaderScheduleCache::new_from_bank(&bank)); let leader_schedule_cache = Arc::new(LeaderScheduleCache::new_from_bank(&bank));
let block_commitment_cache = Arc::new(RwLock::new(BlockCommitmentCache::default())); let block_commitment_cache = Arc::new(RwLock::new(BlockCommitmentCache::default()));

View File

@ -825,12 +825,17 @@ pub fn create_test_recorder(
bank: &Arc<Bank>, bank: &Arc<Bank>,
blockstore: &Arc<Blockstore>, blockstore: &Arc<Blockstore>,
poh_config: Option<PohConfig>, poh_config: Option<PohConfig>,
leader_schedule_cache: Option<Arc<LeaderScheduleCache>>,
) -> ( ) -> (
Arc<AtomicBool>, Arc<AtomicBool>,
Arc<Mutex<PohRecorder>>, Arc<Mutex<PohRecorder>>,
PohService, PohService,
Receiver<WorkingBankEntry>, Receiver<WorkingBankEntry>,
) { ) {
let leader_schedule_cache = match leader_schedule_cache {
Some(provided_cache) => provided_cache,
None => Arc::new(LeaderScheduleCache::new_from_bank(bank)),
};
let exit = Arc::new(AtomicBool::new(false)); let exit = Arc::new(AtomicBool::new(false));
let poh_config = Arc::new(poh_config.unwrap_or_default()); let poh_config = Arc::new(poh_config.unwrap_or_default());
let (mut poh_recorder, entry_receiver, record_receiver) = PohRecorder::new( let (mut poh_recorder, entry_receiver, record_receiver) = PohRecorder::new(
@ -841,7 +846,7 @@ pub fn create_test_recorder(
bank.ticks_per_slot(), bank.ticks_per_slot(),
&Pubkey::default(), &Pubkey::default(),
blockstore, blockstore,
&Arc::new(LeaderScheduleCache::new_from_bank(bank)), &leader_schedule_cache,
&poh_config, &poh_config,
exit.clone(), exit.clone(),
); );