diff options
Diffstat (limited to 'src/simtest/bench.rs')
| -rw-r--r-- | src/simtest/bench.rs | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/src/simtest/bench.rs b/src/simtest/bench.rs index 6e216a9..da8e322 100644 --- a/src/simtest/bench.rs +++ b/src/simtest/bench.rs @@ -666,23 +666,31 @@ async fn trees(out: &mut String, nodes: &[AppState], net: &crate::transport::sim /// How many changes each session counts as sent to its peer (`SyncSession::sent_hashes_len`), /// after the workload: the most, and on average. Kept until the peer's next message /// says it has them; a session whose peer never sends one (along a tree, with one -/// writer) keeps all. +/// writer) keeps all. And of those, how many because another parent brings them +/// (`SyncSession::known_to_peer`): a session with a neighbour we count as covered. async fn sent_kept(out: &mut String, nodes: &[AppState]) { - let mut most = 0; - let mut sum = 0; + let (mut most, mut sum) = (0, 0); + let (mut most_elsewhere, mut sum_elsewhere) = (0, 0); let mut sessions = 0; for node in nodes { for (_, peer_state) in node.peers_snapshot().await { - let kept = peer_state.lock().await.sync.sent_hashes_len(); + let peer_state = peer_state.lock().await; + let kept = peer_state.sync.sent_hashes_len(); + let elsewhere = peer_state.sync.sent_known_elsewhere_len(); most = most.max(kept); sum += kept; + most_elsewhere = most_elsewhere.max(elsewhere); + sum_elsewhere += elsewhere; sessions += 1; } } + let sessions = f64::from(sessions.max(1)); let _ = writeln!( out, - " changes counted as sent, per session: {most} at most, {:.1} on average", - sum as f64 / f64::from(sessions.max(1)), + " changes counted as sent, per session: {most} at most, {:.1} on average; \ + of those, because another parent brings them: {most_elsewhere} at most, {:.1} on average", + sum as f64 / sessions, + sum_elsewhere as f64 / sessions, ); } |
