Fix benchmarking banking_stage
This commit is contained in:
committed by
sakridge
parent
3bb9d5eb50
commit
1ee5c81267
@ -16,5 +16,6 @@ export RUST_LOG=solana=info
|
|||||||
rsync -v -e ssh "$LEADER/leader.json" .
|
rsync -v -e ssh "$LEADER/leader.json" .
|
||||||
rsync -v -e ssh "$LEADER/mint-demo.json" .
|
rsync -v -e ssh "$LEADER/mint-demo.json" .
|
||||||
|
|
||||||
cargo run --release --bin solana-client-demo -- \
|
#cargo run --release --bin solana-client-demo -- \
|
||||||
-l leader.json -n $COUNT -d < mint-demo.json 2>&1 | tee client.log
|
../target/release/solana-client-demo \
|
||||||
|
-n $COUNT -l leader.json -d < mint-demo.json 2>&1 | tee client.log
|
||||||
|
@ -271,8 +271,9 @@ mod bench {
|
|||||||
use self::test::Bencher;
|
use self::test::Bencher;
|
||||||
use bank::*;
|
use bank::*;
|
||||||
use banking_stage::BankingStage;
|
use banking_stage::BankingStage;
|
||||||
|
use logger;
|
||||||
use mint::Mint;
|
use mint::Mint;
|
||||||
use packet::{to_packets, PacketRecycler};
|
use packet::{to_packets_chunked, PacketRecycler};
|
||||||
use record_stage::Signal;
|
use record_stage::Signal;
|
||||||
use signature::{KeyPair, KeyPairUtil};
|
use signature::{KeyPair, KeyPairUtil};
|
||||||
use std::iter;
|
use std::iter;
|
||||||
@ -282,18 +283,30 @@ mod bench {
|
|||||||
|
|
||||||
#[bench]
|
#[bench]
|
||||||
fn bench_stage(bencher: &mut Bencher) {
|
fn bench_stage(bencher: &mut Bencher) {
|
||||||
let tx = 100_usize;
|
logger::setup();
|
||||||
let mint = Mint::new(1_000_000_000);
|
let tx = 20_000_usize;
|
||||||
let pubkey = KeyPair::new().pubkey();
|
let mint = Mint::new(1_000_000_000_000);
|
||||||
|
let mut pubkeys = Vec::new();
|
||||||
|
let num_keys = 8;
|
||||||
|
for _ in 0..num_keys {
|
||||||
|
pubkeys.push(KeyPair::new().pubkey());
|
||||||
|
}
|
||||||
|
|
||||||
let transactions: Vec<_> = (0..tx)
|
let transactions: Vec<_> = (0..tx)
|
||||||
.map(|i| Transaction::new(&mint.keypair(), pubkey, i as i64, mint.last_id()))
|
.map(|i| {
|
||||||
|
Transaction::new(
|
||||||
|
&mint.keypair(),
|
||||||
|
pubkeys[i % num_keys],
|
||||||
|
i as i64,
|
||||||
|
mint.last_id(),
|
||||||
|
)
|
||||||
|
})
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
let (verified_sender, verified_receiver) = channel();
|
let (verified_sender, verified_receiver) = channel();
|
||||||
let (signal_sender, signal_receiver) = channel();
|
let (signal_sender, signal_receiver) = channel();
|
||||||
let packet_recycler = PacketRecycler::default();
|
let packet_recycler = PacketRecycler::default();
|
||||||
let verified: Vec<_> = to_packets(&packet_recycler, transactions)
|
let verified: Vec<_> = to_packets_chunked(&packet_recycler, transactions, tx)
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|x| {
|
.map(|x| {
|
||||||
let len = (*x).read().unwrap().packets.len();
|
let len = (*x).read().unwrap().packets.len();
|
||||||
@ -310,12 +323,16 @@ mod bench {
|
|||||||
&signal_sender,
|
&signal_sender,
|
||||||
&packet_recycler,
|
&packet_recycler,
|
||||||
).unwrap();
|
).unwrap();
|
||||||
let signal = signal_receiver.recv().unwrap();
|
let mut total = 0;
|
||||||
if let Signal::Transactions(transactions) = signal {
|
for _ in 0..verified.len() {
|
||||||
assert_eq!(transactions.len(), tx);
|
let signal = signal_receiver.recv().unwrap();
|
||||||
} else {
|
if let Signal::Transactions(transactions) = signal {
|
||||||
assert!(false);
|
total += transactions.len();
|
||||||
|
} else {
|
||||||
|
assert!(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
assert_eq!(total, tx);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -224,9 +224,13 @@ impl Packets {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn to_packets<T: Serialize>(r: &PacketRecycler, xs: Vec<T>) -> Vec<SharedPackets> {
|
pub fn to_packets_chunked<T: Serialize>(
|
||||||
|
r: &PacketRecycler,
|
||||||
|
xs: Vec<T>,
|
||||||
|
chunks: usize,
|
||||||
|
) -> Vec<SharedPackets> {
|
||||||
let mut out = vec![];
|
let mut out = vec![];
|
||||||
for x in xs.chunks(NUM_PACKETS) {
|
for x in xs.chunks(chunks) {
|
||||||
let p = r.allocate();
|
let p = r.allocate();
|
||||||
p.write()
|
p.write()
|
||||||
.unwrap()
|
.unwrap()
|
||||||
@ -243,6 +247,10 @@ pub fn to_packets<T: Serialize>(r: &PacketRecycler, xs: Vec<T>) -> Vec<SharedPac
|
|||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn to_packets<T: Serialize>(r: &PacketRecycler, xs: Vec<T>) -> Vec<SharedPackets> {
|
||||||
|
to_packets_chunked(r, xs, NUM_PACKETS)
|
||||||
|
}
|
||||||
|
|
||||||
pub fn to_blob<T: Serialize>(
|
pub fn to_blob<T: Serialize>(
|
||||||
resp: T,
|
resp: T,
|
||||||
rsp_addr: SocketAddr,
|
rsp_addr: SocketAddr,
|
||||||
|
Reference in New Issue
Block a user