Fix bench compilation (#1311)

This commit is contained in:
sakridge
2018-09-24 10:40:42 -07:00
committed by GitHub
parent f5a30615c1
commit 3e76efe97e
3 changed files with 51 additions and 24 deletions

View File

@ -7,14 +7,16 @@ extern crate test;
use rayon::prelude::*; use rayon::prelude::*;
use solana::bank::Bank; use solana::bank::Bank;
use solana::banking_stage::BankingStage; use solana::banking_stage::BankingStage;
use solana::entry::Entry;
use solana::mint::Mint; use solana::mint::Mint;
use solana::packet::{to_packets_chunked, PacketRecycler}; use solana::packet::{to_packets_chunked, PacketRecycler};
use solana::record_stage::Signal; use solana::poh_service::PohService;
use solana::signature::{Keypair, KeypairUtil}; use solana::signature::{Keypair, KeypairUtil};
use solana::transaction::Transaction; use solana::transaction::Transaction;
use std::iter; use std::iter;
use std::sync::mpsc::{channel, Receiver}; use std::sync::mpsc::{channel, Receiver};
use std::sync::Arc; use std::sync::Arc;
use std::time::Duration;
use test::Bencher; use test::Bencher;
// use self::test::Bencher; // use self::test::Bencher;
@ -79,17 +81,19 @@ use test::Bencher;
// println!("{} tps", tps); // println!("{} tps", tps);
// } // }
fn check_txs(receiver: &Receiver<Signal>, ref_tx_count: usize) { fn check_txs(receiver: &Receiver<Vec<Entry>>, ref_tx_count: usize) {
let mut total = 0; let mut total = 0;
loop { loop {
let signal = receiver.recv().unwrap(); let entries = receiver.recv_timeout(Duration::new(1, 0));
if let Signal::Transactions(transactions) = signal { if let Ok(entries) = entries {
total += transactions.len(); for entry in &entries {
if total >= ref_tx_count { total += entry.transactions.len();
break;
} }
} else { } else {
assert!(false); break;
}
if total >= ref_tx_count {
break;
} }
} }
assert_eq!(total, ref_tx_count); assert_eq!(total, ref_tx_count);
@ -119,7 +123,7 @@ fn bench_banking_stage_multi_accounts(bencher: &mut Bencher) {
}).collect(); }).collect();
let (verified_sender, verified_receiver) = channel(); let (verified_sender, verified_receiver) = channel();
let (signal_sender, signal_receiver) = channel(); let (entry_sender, entry_receiver) = channel();
let packet_recycler = PacketRecycler::default(); let packet_recycler = PacketRecycler::default();
let setup_transactions: Vec<_> = (0..num_src_accounts) let setup_transactions: Vec<_> = (0..num_src_accounts)
@ -135,32 +139,45 @@ fn bench_banking_stage_multi_accounts(bencher: &mut Bencher) {
bencher.iter(move || { bencher.iter(move || {
let bank = Arc::new(Bank::new(&mint)); let bank = Arc::new(Bank::new(&mint));
let (hash_sender, hash_receiver) = channel();
let (_poh_service, poh_receiver) = PohService::new(bank.last_id(), hash_receiver, None);
let verified_setup: Vec<_> = let verified_setup: Vec<_> =
to_packets_chunked(&packet_recycler, &setup_transactions.clone(), tx) to_packets_chunked(&packet_recycler, &setup_transactions.clone(), tx)
.into_iter() .into_iter()
.map(|x| { .map(|x| {
let len = (*x).read().unwrap().packets.len(); let len = (x).read().packets.len();
(x, iter::repeat(1).take(len).collect()) (x, iter::repeat(1).take(len).collect())
}).collect(); }).collect();
verified_sender.send(verified_setup).unwrap(); verified_sender.send(verified_setup).unwrap();
BankingStage::process_packets(&bank, &verified_receiver, &signal_sender, &packet_recycler) BankingStage::process_packets(
.unwrap(); &bank,
&hash_sender,
&poh_receiver,
&verified_receiver,
&entry_sender,
).unwrap();
check_txs(&signal_receiver, num_src_accounts); check_txs(&entry_receiver, num_src_accounts);
let verified: Vec<_> = to_packets_chunked(&packet_recycler, &transactions.clone(), 192) let verified: Vec<_> = to_packets_chunked(&packet_recycler, &transactions.clone(), 192)
.into_iter() .into_iter()
.map(|x| { .map(|x| {
let len = (*x).read().unwrap().packets.len(); let len = (x).read().packets.len();
(x, iter::repeat(1).take(len).collect()) (x, iter::repeat(1).take(len).collect())
}).collect(); }).collect();
verified_sender.send(verified).unwrap(); verified_sender.send(verified).unwrap();
BankingStage::process_packets(&bank, &verified_receiver, &signal_sender, &packet_recycler) BankingStage::process_packets(
.unwrap(); &bank,
&hash_sender,
&poh_receiver,
&verified_receiver,
&entry_sender,
).unwrap();
check_txs(&signal_receiver, tx); check_txs(&entry_receiver, tx);
}); });
} }
@ -186,21 +203,30 @@ fn bench_banking_stage_single_from(bencher: &mut Bencher) {
}).collect(); }).collect();
let (verified_sender, verified_receiver) = channel(); let (verified_sender, verified_receiver) = channel();
let (signal_sender, signal_receiver) = channel(); let (entry_sender, entry_receiver) = channel();
let packet_recycler = PacketRecycler::default(); let packet_recycler = PacketRecycler::default();
bencher.iter(move || { bencher.iter(move || {
let bank = Arc::new(Bank::new(&mint)); let bank = Arc::new(Bank::new(&mint));
let (hash_sender, hash_receiver) = channel();
let (_poh_service, poh_receiver) = PohService::new(bank.last_id(), hash_receiver, None);
let verified: Vec<_> = to_packets_chunked(&packet_recycler, &transactions.clone(), tx) let verified: Vec<_> = to_packets_chunked(&packet_recycler, &transactions.clone(), tx)
.into_iter() .into_iter()
.map(|x| { .map(|x| {
let len = (*x).read().unwrap().packets.len(); let len = (x).read().packets.len();
(x, iter::repeat(1).take(len).collect()) (x, iter::repeat(1).take(len).collect())
}).collect(); }).collect();
verified_sender.send(verified).unwrap(); verified_sender.send(verified).unwrap();
BankingStage::process_packets(&bank, &verified_receiver, &signal_sender, &packet_recycler) BankingStage::process_packets(
.unwrap(); &bank,
&hash_sender,
&poh_receiver,
&verified_receiver,
&entry_sender,
).unwrap();
check_txs(&signal_receiver, tx); check_txs(&entry_receiver, tx);
}); });
} }

View File

@ -11,5 +11,5 @@ _() {
} }
BENCH_FILE=bench_output.log BENCH_FILE=bench_output.log
_ cargo +nightly bench --features=unstable --verbose -- -Z unstable-options --format=json | tee $BENCH_FILE _ cargo bench --features=unstable --verbose -- -Z unstable-options --format=json | tee $BENCH_FILE
_ cargo run --bin solana-upload-perf -- $BENCH_FILE _ cargo run --release --bin solana-upload-perf -- $BENCH_FILE

View File

@ -46,4 +46,5 @@ fn main() {
} }
} }
} }
metrics::flush();
} }