Skip to content

Commit f1c91b5

Browse files
committed
sim-rs: log spatial efficiency
1 parent 0bc09d3 commit f1c91b5

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

sim-rs/sim-cli/src/events.rs

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ impl EventMonitor {
102102
let mut ib_txs: BTreeMap<InputBlockId, Vec<TransactionId>> = BTreeMap::new();
103103
let mut eb_ibs: BTreeMap<EndorserBlockId, Vec<InputBlockId>> = BTreeMap::new();
104104
let mut eb_ebs: BTreeMap<EndorserBlockId, Vec<EndorserBlockId>> = BTreeMap::new();
105+
let mut leios_tx_bytes: BTreeMap<TransactionId, u64> = BTreeMap::new();
105106

106107
let mut last_timestamp = Timestamp::zero();
107108
let mut total_slots = 0u64;
@@ -115,7 +116,7 @@ impl EventMonitor {
115116
let mut total_votes = 0u64;
116117
let mut leios_blocks_with_endorsements = 0u64;
117118
let mut leios_txs = 0u64;
118-
let mut unique_leios_txs = 0u64;
119+
let mut total_leios_bytes = 0u64;
119120
let mut tx_messages = MessageStats::default();
120121
let mut ib_messages = MessageStats::default();
121122
let mut eb_messages = MessageStats::default();
@@ -236,6 +237,7 @@ impl EventMonitor {
236237
);
237238
praos_txs += all_txs.len() as u64;
238239
if let Some(endorsement) = endorsement {
240+
total_leios_bytes += endorsement.size_bytes;
239241
leios_blocks_with_endorsements += 1;
240242
pending_ebs.retain(|eb| eb.slot != endorsement.eb.id.slot);
241243

@@ -257,8 +259,11 @@ impl EventMonitor {
257259
block_leios_txs.len(),
258260
unique_block_leios_txs.len()
259261
);
262+
for tx_id in &unique_block_leios_txs {
263+
let bytes = txs.get(tx_id).unwrap().bytes;
264+
leios_tx_bytes.insert(*tx_id, bytes);
265+
}
260266
leios_txs += block_leios_txs.len() as u64;
261-
unique_leios_txs += unique_block_leios_txs.len() as u64;
262267
all_txs.append(&mut unique_block_leios_txs);
263268
}
264269
if let Some((old_producer, old_vrf)) = blocks.get(&slot) {
@@ -293,6 +298,7 @@ impl EventMonitor {
293298
transactions,
294299
..
295300
} => {
301+
total_leios_bytes += size_bytes;
296302
generated_ibs += 1;
297303
if transactions.is_empty() {
298304
empty_ibs += 1;
@@ -332,8 +338,10 @@ impl EventMonitor {
332338
id,
333339
input_blocks,
334340
endorser_blocks,
341+
size_bytes,
335342
..
336343
} => {
344+
total_leios_bytes += size_bytes;
337345
generated_ebs += 1;
338346
pending_ebs.insert(id.clone());
339347
eb_ibs.insert(
@@ -391,6 +399,8 @@ impl EventMonitor {
391399

392400
output.flush().await?;
393401

402+
let unique_leios_txs = leios_tx_bytes.len() as u64;
403+
394404
info_span!("praos").in_scope(|| {
395405
info!("{} transactions(s) were generated in total.", txs.len());
396406
info!("{} naive praos block(s) were published.", blocks.len());
@@ -463,6 +473,8 @@ impl EventMonitor {
463473
let votes_per_pool = compute_stats(votes_per_pool.into_values());
464474
let votes_per_eb = compute_stats(eb_votes.into_values());
465475
let votes_per_bundle = compute_stats(votes_per_bundle.into_values());
476+
let total_leios_tx_bytes: u64 = leios_tx_bytes.values().copied().sum();
477+
let space_efficiency = total_leios_tx_bytes as f64 / total_leios_bytes as f64;
466478

467479
info!(
468480
"{generated_ibs} IB(s) were generated, on average {:.3} IB(s) per slot.",
@@ -489,7 +501,7 @@ impl EventMonitor {
489501
info!(
490502
"Each IB contained an average of {:.3} transaction(s) (stddev {:.3}) and an average of {} (stddev {:.3}). {} IB(s) were empty.",
491503
txs_per_ib.mean, txs_per_ib.std_dev,
492-
pretty_bytes(bytes_per_ib.mean.trunc() as u64, pbo.clone()), pretty_bytes(bytes_per_ib.std_dev.trunc() as u64, pbo),
504+
pretty_bytes(bytes_per_ib.mean.trunc() as u64, pbo.clone()), pretty_bytes(bytes_per_ib.std_dev.trunc() as u64, pbo.clone()),
493505
empty_ibs,
494506
);
495507
info!(
@@ -534,6 +546,7 @@ impl EventMonitor {
534546
info!("{} L1 block(s) had a Leios endorsement.", leios_blocks_with_endorsements);
535547
info!("{} tx(s) were referenced by a Leios endorsement.", unique_leios_txs);
536548
info!("{} tx(s) were included directly in a Praos block.", praos_txs);
549+
info!("Spatial efficiency: {}/{} ({:.3}%) of Leios bytes were transactions.", pretty_bytes(total_leios_tx_bytes, pbo.clone()), pretty_bytes(total_leios_bytes, pbo.clone()), space_efficiency * 100.);
537550
info!("{} tx(s) ({:.3}%) referenced by a Leios endorsement were redundant.", leios_txs - unique_leios_txs, (leios_txs - unique_leios_txs) as f64 / leios_txs as f64 * 100.);
538551
info!(
539552
"Each transaction took an average of {:.3}s (stddev {:.3}) to be included in an IB.",

0 commit comments

Comments
 (0)