Sfoglia il codice sorgente

turbine, bench: move remaining benches to merkle variant (#6747)

* move get_retransmit_peers_deterministic to merkle variant

* drop unused imports

* move imports to correct place

* use hash default instead of unique / not needed

* remove num_simulated_shreds entirely

* one iter less

* the possible arithmetics side effects is a lie / clippy override
puhtaytow 4 mesi fa
parent
commit
0f647dd4a6
1 ha cambiato i file con 24 aggiunte e 20 eliminazioni
  1. 24 20
      turbine/benches/cluster_nodes.rs

+ 24 - 20
turbine/benches/cluster_nodes.rs

@@ -7,7 +7,9 @@ use {
     solana_clock::Slot,
     solana_clock::Slot,
     solana_cluster_type::ClusterType,
     solana_cluster_type::ClusterType,
     solana_gossip::contact_info::ContactInfo,
     solana_gossip::contact_info::ContactInfo,
-    solana_ledger::shred::{Shred, ShredFlags},
+    solana_hash::Hash,
+    solana_keypair::Keypair,
+    solana_ledger::shred::{ProcessShredsStats, ReedSolomonCache, Shredder},
     solana_pubkey::Pubkey,
     solana_pubkey::Pubkey,
     solana_streamer::socket::SocketAddrSpace,
     solana_streamer::socket::SocketAddrSpace,
     solana_turbine::{
     solana_turbine::{
@@ -17,8 +19,6 @@ use {
     test::Bencher,
     test::Bencher,
 };
 };
 
 
-const NUM_SIMULATED_SHREDS: usize = 4;
-
 fn make_cluster_nodes<R: Rng>(
 fn make_cluster_nodes<R: Rng>(
     rng: &mut R,
     rng: &mut R,
     unstaked_ratio: Option<(u32, u32)>,
     unstaked_ratio: Option<(u32, u32)>,
@@ -29,25 +29,31 @@ fn make_cluster_nodes<R: Rng>(
     (nodes, cluster_nodes)
     (nodes, cluster_nodes)
 }
 }
 
 
+#[allow(clippy::arithmetic_side_effects)]
 fn get_retransmit_peers_deterministic(
 fn get_retransmit_peers_deterministic(
     cluster_nodes: &ClusterNodes<RetransmitStage>,
     cluster_nodes: &ClusterNodes<RetransmitStage>,
     slot: Slot,
     slot: Slot,
     slot_leader: &Pubkey,
     slot_leader: &Pubkey,
-    num_simulated_shreds: usize,
 ) {
 ) {
-    let parent_offset = u16::from(slot != 0);
-    for i in 0..num_simulated_shreds {
-        let index = i as u32;
-        let shred = Shred::new_from_data(
-            slot,
-            index,
-            parent_offset,
-            &[],
-            ShredFlags::empty(),
-            0,
-            0,
-            0,
-        );
+    let keypair = Keypair::new();
+    let merkle_root = Some(Hash::default());
+    let reed_solomon_cache = ReedSolomonCache::default();
+    let mut stats = ProcessShredsStats::default();
+    let parent_slot = if slot > 0 { slot - 1 } else { 0 };
+    let shredder = Shredder::new(slot, parent_slot, 0, 0).unwrap();
+
+    let shreds = shredder.make_merkle_shreds_from_entries(
+        &keypair,
+        &[],  // entries
+        true, // is_last_in_slot
+        merkle_root,
+        0, // next_shred_index
+        0, // next_code_index
+        &reed_solomon_cache,
+        &mut stats,
+    );
+
+    for shred in shreds {
         let _retransmit_peers = cluster_nodes.get_retransmit_addrs(
         let _retransmit_peers = cluster_nodes.get_retransmit_addrs(
             slot_leader,
             slot_leader,
             &shred.id(),
             &shred.id(),
@@ -62,9 +68,7 @@ fn get_retransmit_peers_deterministic_wrapper(b: &mut Bencher, unstaked_ratio: O
     let (nodes, cluster_nodes) = make_cluster_nodes(&mut rng, unstaked_ratio);
     let (nodes, cluster_nodes) = make_cluster_nodes(&mut rng, unstaked_ratio);
     let slot_leader = *nodes[1..].choose(&mut rng).unwrap().pubkey();
     let slot_leader = *nodes[1..].choose(&mut rng).unwrap().pubkey();
     let slot = rand::random::<u64>();
     let slot = rand::random::<u64>();
-    b.iter(|| {
-        get_retransmit_peers_deterministic(&cluster_nodes, slot, &slot_leader, NUM_SIMULATED_SHREDS)
-    });
+    b.iter(|| get_retransmit_peers_deterministic(&cluster_nodes, slot, &slot_leader));
 }
 }
 
 
 #[bench]
 #[bench]