Move PohService and PohRecorder out of banking_stage and into fullnode (#2852)

* Move PohService out of banking_stage and into fullnode.

* 10 second slots
This commit is contained in:
anatoly yakovenko
2019-02-26 10:48:18 -08:00
committed by GitHub
parent 9420ba52e9
commit 6dcb97af9e
9 changed files with 185 additions and 76 deletions

View File

@@ -7,7 +7,8 @@ use rayon::prelude::*;
use solana::banking_stage::BankingStage;
use solana::entry::Entry;
use solana::packet::to_packets_chunked;
use solana::poh_service::PohServiceConfig;
use solana::poh_recorder::PohRecorder;
use solana::poh_service::{PohService, PohServiceConfig};
use solana_runtime::bank::Bank;
use solana_sdk::genesis_block::GenesisBlock;
use solana_sdk::hash::hash;
@@ -16,8 +17,9 @@ use solana_sdk::signature::{KeypairUtil, Signature};
use solana_sdk::system_transaction::SystemTransaction;
use solana_sdk::timing::MAX_ENTRY_IDS;
use std::iter;
use std::sync::atomic::AtomicBool;
use std::sync::mpsc::{channel, Receiver};
use std::sync::Arc;
use std::sync::{Arc, Mutex};
use std::time::Duration;
use test::Bencher;
@@ -39,6 +41,20 @@ fn check_txs(receiver: &Receiver<Vec<(Entry, u64)>>, ref_tx_count: usize) {
assert_eq!(total, ref_tx_count);
}
fn create_test_recorder(bank: &Arc<Bank>) -> (Arc<Mutex<PohRecorder>>, PohService) {
let exit = Arc::new(AtomicBool::new(false));
let poh_recorder = Arc::new(Mutex::new(PohRecorder::new(
bank.tick_height(),
bank.last_id(),
)));
let poh_service = PohService::new(
poh_recorder.clone(),
&PohServiceConfig::default(),
exit.clone(),
);
(poh_recorder, poh_service)
}
#[bench]
#[ignore]
fn bench_banking_stage_multi_accounts(bencher: &mut Bencher) {
@@ -101,11 +117,11 @@ fn bench_banking_stage_multi_accounts(bencher: &mut Bencher) {
(x, iter::repeat(1).take(len).collect())
})
.collect();
let (poh_recorder, poh_service) = create_test_recorder(&bank);
let (_stage, signal_receiver) = BankingStage::new(
&bank,
&poh_recorder,
verified_receiver,
PohServiceConfig::default(),
&genesis_block.last_id(),
std::u64::MAX,
genesis_block.bootstrap_leader_id,
);
@@ -129,6 +145,7 @@ fn bench_banking_stage_multi_accounts(bencher: &mut Bencher) {
start += half_len;
start %= verified.len();
});
poh_service.close().unwrap();
}
#[bench]
@@ -209,11 +226,11 @@ fn bench_banking_stage_multi_programs(bencher: &mut Bencher) {
(x, iter::repeat(1).take(len).collect())
})
.collect();
let (poh_recorder, poh_service) = create_test_recorder(&bank);
let (_stage, signal_receiver) = BankingStage::new(
&bank,
&poh_recorder,
verified_receiver,
PohServiceConfig::default(),
&genesis_block.last_id(),
std::u64::MAX,
genesis_block.bootstrap_leader_id,
);
@@ -237,4 +254,5 @@ fn bench_banking_stage_multi_programs(bencher: &mut Bencher) {
start += half_len;
start %= verified.len();
});
poh_service.close().unwrap();
}