From 1d8eec3c449837100b5c3fc1079465d4505090f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20Frosteg=C3=A5rd?= Date: Wed, 25 Jan 2023 22:40:35 +0100 Subject: [PATCH 1/3] ws load test: use relaxed atomics --- aquatic_ws_load_test/src/main.rs | 14 +++++++------- aquatic_ws_load_test/src/network.rs | 12 ++++++------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/aquatic_ws_load_test/src/main.rs b/aquatic_ws_load_test/src/main.rs index 67a4a00..7ef2fbd 100644 --- a/aquatic_ws_load_test/src/main.rs +++ b/aquatic_ws_load_test/src/main.rs @@ -129,20 +129,20 @@ fn monitor_statistics(state: LoadTestState, config: &Config) { let statistics = state.statistics.as_ref(); let responses_announce = - statistics.responses_announce.fetch_and(0, Ordering::SeqCst) as f64; + statistics.responses_announce.fetch_and(0, Ordering::Relaxed) as f64; // let response_peers = statistics.response_peers - // .fetch_and(0, Ordering::SeqCst) as f64; + // .fetch_and(0, Ordering::Relaxed) as f64; let requests_per_second = - statistics.requests.fetch_and(0, Ordering::SeqCst) as f64 / interval_f64; + statistics.requests.fetch_and(0, Ordering::Relaxed) as f64 / interval_f64; let responses_offer_per_second = - statistics.responses_offer.fetch_and(0, Ordering::SeqCst) as f64 / interval_f64; + statistics.responses_offer.fetch_and(0, Ordering::Relaxed) as f64 / interval_f64; let responses_answer_per_second = - statistics.responses_answer.fetch_and(0, Ordering::SeqCst) as f64 / interval_f64; + statistics.responses_answer.fetch_and(0, Ordering::Relaxed) as f64 / interval_f64; let responses_scrape_per_second = - statistics.responses_scrape.fetch_and(0, Ordering::SeqCst) as f64 / interval_f64; + statistics.responses_scrape.fetch_and(0, Ordering::Relaxed) as f64 / interval_f64; let responses_error_per_second = - statistics.responses_error.fetch_and(0, Ordering::SeqCst) as f64 / interval_f64; + statistics.responses_error.fetch_and(0, Ordering::Relaxed) as f64 / interval_f64; let responses_announce_per_second = responses_announce / interval_f64; diff --git a/aquatic_ws_load_test/src/network.rs b/aquatic_ws_load_test/src/network.rs index b537eab..1c7f64c 100644 --- a/aquatic_ws_load_test/src/network.rs +++ b/aquatic_ws_load_test/src/network.rs @@ -149,7 +149,7 @@ impl Connection { self.load_test_state .statistics .requests - .fetch_add(1, Ordering::SeqCst); + .fetch_add(1, Ordering::Relaxed); self.can_send = false; } @@ -183,7 +183,7 @@ impl Connection { self.load_test_state .statistics .responses_offer - .fetch_add(1, Ordering::SeqCst); + .fetch_add(1, Ordering::Relaxed); self.send_answer = Some((offer.peer_id, offer.offer_id)); @@ -193,7 +193,7 @@ impl Connection { self.load_test_state .statistics .responses_answer - .fetch_add(1, Ordering::SeqCst); + .fetch_add(1, Ordering::Relaxed); self.can_send = true; } @@ -201,7 +201,7 @@ impl Connection { self.load_test_state .statistics .responses_announce - .fetch_add(1, Ordering::SeqCst); + .fetch_add(1, Ordering::Relaxed); self.can_send = true; } @@ -209,7 +209,7 @@ impl Connection { self.load_test_state .statistics .responses_scrape - .fetch_add(1, Ordering::SeqCst); + .fetch_add(1, Ordering::Relaxed); self.can_send = true; } @@ -217,7 +217,7 @@ impl Connection { self.load_test_state .statistics .responses_error - .fetch_add(1, Ordering::SeqCst); + .fetch_add(1, Ordering::Relaxed); ::log::warn!("received error response: {:?}", response.failure_reason); From 3d2ae26b13d73c5310bda5ac6fb3cb7d7fef9b94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20Frosteg=C3=A5rd?= Date: Wed, 25 Jan 2023 22:49:24 +0100 Subject: [PATCH 2/3] ws load test: provide stats on number of active connections --- aquatic_ws_load_test/src/common.rs | 1 + aquatic_ws_load_test/src/main.rs | 3 +++ aquatic_ws_load_test/src/network.rs | 4 ++++ 3 files changed, 8 insertions(+) diff --git a/aquatic_ws_load_test/src/common.rs b/aquatic_ws_load_test/src/common.rs index 288f484..ceecacb 100644 --- a/aquatic_ws_load_test/src/common.rs +++ b/aquatic_ws_load_test/src/common.rs @@ -13,6 +13,7 @@ pub struct Statistics { pub responses_answer: AtomicUsize, pub responses_scrape: AtomicUsize, pub responses_error: AtomicUsize, + pub connections: AtomicUsize, } #[derive(Clone)] diff --git a/aquatic_ws_load_test/src/main.rs b/aquatic_ws_load_test/src/main.rs index 7ef2fbd..1075dae 100644 --- a/aquatic_ws_load_test/src/main.rs +++ b/aquatic_ws_load_test/src/main.rs @@ -146,6 +146,8 @@ fn monitor_statistics(state: LoadTestState, config: &Config) { let responses_announce_per_second = responses_announce / interval_f64; + let connections = statistics.connections.load(Ordering::Relaxed); + let responses_per_second = responses_announce_per_second + responses_offer_per_second + responses_answer_per_second @@ -165,6 +167,7 @@ fn monitor_statistics(state: LoadTestState, config: &Config) { println!(" - Answer responses: {:.2}", responses_answer_per_second); println!(" - Scrape responses: {:.2}", responses_scrape_per_second); println!(" - Error responses: {:.2}", responses_error_per_second); + println!("Active connections: {}", connections); let time_elapsed = start_time.elapsed(); let duration = Duration::from_secs(config.duration as u64); diff --git a/aquatic_ws_load_test/src/network.rs b/aquatic_ws_load_test/src/network.rs index 1c7f64c..b8b4c8d 100644 --- a/aquatic_ws_load_test/src/network.rs +++ b/aquatic_ws_load_test/src/network.rs @@ -92,6 +92,8 @@ impl Connection { ); let (stream, _) = client_async(request, stream).await?; + let statistics = load_test_state.statistics.clone(); + let mut connection = Connection { config, load_test_state, @@ -103,12 +105,14 @@ impl Connection { }; *num_active_connections.borrow_mut() += 1; + statistics.connections.fetch_add(1, Ordering::Relaxed); if let Err(err) = connection.run_connection_loop().await { ::log::info!("connection error: {:#}", err); } *num_active_connections.borrow_mut() -= 1; + statistics.connections.fetch_sub(1, Ordering::Relaxed); Ok(()) } From b073d61bf38084015cb900d964e2cc6052d6c628 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20Frosteg=C3=A5rd?= Date: Wed, 25 Jan 2023 22:50:25 +0100 Subject: [PATCH 3/3] cargo fmt --- aquatic_ws_load_test/src/main.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/aquatic_ws_load_test/src/main.rs b/aquatic_ws_load_test/src/main.rs index 1075dae..aef8648 100644 --- a/aquatic_ws_load_test/src/main.rs +++ b/aquatic_ws_load_test/src/main.rs @@ -128,8 +128,9 @@ fn monitor_statistics(state: LoadTestState, config: &Config) { let statistics = state.statistics.as_ref(); - let responses_announce = - statistics.responses_announce.fetch_and(0, Ordering::Relaxed) as f64; + let responses_announce = statistics + .responses_announce + .fetch_and(0, Ordering::Relaxed) as f64; // let response_peers = statistics.response_peers // .fetch_and(0, Ordering::Relaxed) as f64;