@@ -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