Fix bench compilation (#1311)
This commit is contained in:
@ -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);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -46,4 +46,5 @@ fn main() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
metrics::flush();
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user