implement per-thread, per-batch sleep in ms (throttling allows easier UI dev) (#2293)
* implement per-thread, per-batch sleep in ms (throttling allows easier UI development) * tidy up sleep() call with Duration::from_millis() instead of Duration::new() * fixup indentation style * removing multinode-demo/client-throttled.sh (same functionality available via arguments)
This commit is contained in:
parent
8116fe8def
commit
a448c0b81e
|
@ -233,9 +233,13 @@ pub fn do_tx_transfers(
|
||||||
leader: &NodeInfo,
|
leader: &NodeInfo,
|
||||||
shared_tx_thread_count: &Arc<AtomicIsize>,
|
shared_tx_thread_count: &Arc<AtomicIsize>,
|
||||||
total_tx_sent_count: &Arc<AtomicUsize>,
|
total_tx_sent_count: &Arc<AtomicUsize>,
|
||||||
|
thread_batch_sleep_ms: usize,
|
||||||
) {
|
) {
|
||||||
let client = mk_client(&leader);
|
let client = mk_client(&leader);
|
||||||
loop {
|
loop {
|
||||||
|
if thread_batch_sleep_ms > 0 {
|
||||||
|
sleep(Duration::from_millis(thread_batch_sleep_ms as u64));
|
||||||
|
}
|
||||||
let txs;
|
let txs;
|
||||||
{
|
{
|
||||||
let mut shared_txs_wl = shared_txs.write().unwrap();
|
let mut shared_txs_wl = shared_txs.write().unwrap();
|
||||||
|
|
|
@ -15,6 +15,7 @@ pub struct Config {
|
||||||
pub num_nodes: usize,
|
pub num_nodes: usize,
|
||||||
pub duration: Duration,
|
pub duration: Duration,
|
||||||
pub tx_count: usize,
|
pub tx_count: usize,
|
||||||
|
pub thread_batch_sleep_ms: usize,
|
||||||
pub sustained: bool,
|
pub sustained: bool,
|
||||||
pub reject_extra_nodes: bool,
|
pub reject_extra_nodes: bool,
|
||||||
pub converge_only: bool,
|
pub converge_only: bool,
|
||||||
|
@ -30,6 +31,7 @@ impl Default for Config {
|
||||||
num_nodes: 1,
|
num_nodes: 1,
|
||||||
duration: Duration::new(std::u64::MAX, 0),
|
duration: Duration::new(std::u64::MAX, 0),
|
||||||
tx_count: 500_000,
|
tx_count: 500_000,
|
||||||
|
thread_batch_sleep_ms: 0,
|
||||||
sustained: false,
|
sustained: false,
|
||||||
reject_extra_nodes: false,
|
reject_extra_nodes: false,
|
||||||
converge_only: false,
|
converge_only: false,
|
||||||
|
@ -110,6 +112,14 @@ pub fn build_args<'a, 'b>() -> App<'a, 'b> {
|
||||||
.takes_value(true)
|
.takes_value(true)
|
||||||
.help("Number of transactions to send per batch")
|
.help("Number of transactions to send per batch")
|
||||||
)
|
)
|
||||||
|
.arg(
|
||||||
|
Arg::with_name("thread-batch-sleep-ms")
|
||||||
|
.short("z")
|
||||||
|
.long("thread-batch-sleep-ms")
|
||||||
|
.value_name("NUM")
|
||||||
|
.takes_value(true)
|
||||||
|
.help("Per-thread-per-iteration sleep in ms"),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Parses a clap `ArgMatches` structure into a `Config`
|
/// Parses a clap `ArgMatches` structure into a `Config`
|
||||||
|
@ -158,6 +168,13 @@ pub fn extract_args<'a>(matches: &ArgMatches<'a>) -> Config {
|
||||||
args.tx_count = s.to_string().parse().expect("can't parse tx_account");
|
args.tx_count = s.to_string().parse().expect("can't parse tx_account");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if let Some(t) = matches.value_of("thread-batch-sleep-ms") {
|
||||||
|
args.thread_batch_sleep_ms = t
|
||||||
|
.to_string()
|
||||||
|
.parse()
|
||||||
|
.expect("can't parse thread-batch-sleep-ms");
|
||||||
|
}
|
||||||
|
|
||||||
args.sustained = matches.is_present("sustained");
|
args.sustained = matches.is_present("sustained");
|
||||||
args.converge_only = matches.is_present("converge-only");
|
args.converge_only = matches.is_present("converge-only");
|
||||||
args.reject_extra_nodes = matches.is_present("reject-extra-nodes");
|
args.reject_extra_nodes = matches.is_present("reject-extra-nodes");
|
||||||
|
|
|
@ -82,6 +82,7 @@ fn main() {
|
||||||
drone_addr,
|
drone_addr,
|
||||||
id,
|
id,
|
||||||
threads,
|
threads,
|
||||||
|
thread_batch_sleep_ms,
|
||||||
num_nodes,
|
num_nodes,
|
||||||
duration,
|
duration,
|
||||||
tx_count,
|
tx_count,
|
||||||
|
@ -207,6 +208,7 @@ fn main() {
|
||||||
&leader,
|
&leader,
|
||||||
&shared_tx_active_thread_count,
|
&shared_tx_active_thread_count,
|
||||||
&total_tx_sent_count,
|
&total_tx_sent_count,
|
||||||
|
thread_batch_sleep_ms,
|
||||||
);
|
);
|
||||||
})
|
})
|
||||||
.unwrap()
|
.unwrap()
|
||||||
|
|
Loading…
Reference in New Issue