From 5b5a3ebce85ce27c4a015ffe2a067407ec9df13a Mon Sep 17 00:00:00 2001 From: behzad nouri Date: Sat, 14 Jan 2023 23:07:42 +0000 Subject: [PATCH] adds metrics for num merkle shreds on the receiving end (#29710) --- core/src/shred_fetch_stage.rs | 3 +-- ledger/src/shred.rs | 15 ++++++++++++--- ledger/src/shred/stats.rs | 4 ++++ 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/core/src/shred_fetch_stage.rs b/core/src/shred_fetch_stage.rs index 03ab5ee11..a92d08c38 100644 --- a/core/src/shred_fetch_stage.rs +++ b/core/src/shred_fetch_stage.rs @@ -19,7 +19,6 @@ use { }; const DEFAULT_LRU_SIZE: usize = 10_000; -type ShredsReceived = LruCache; pub(crate) struct ShredFetchStage { thread_hdls: Vec>, @@ -229,7 +228,7 @@ fn should_discard_packet( max_slot: Slot, // Max slot to ingest shreds for. shred_version: u16, packet_hasher: &PacketHasher, - shreds_received: &mut ShredsReceived, + shreds_received: &mut LruCache, stats: &mut ShredFetchStats, ) -> bool { if should_discard_shred(packet, root, max_slot, shred_version, stats) { diff --git a/ledger/src/shred.rs b/ledger/src/shred.rs index cc36febbd..e3d13a998 100644 --- a/ledger/src/shred.rs +++ b/ledger/src/shred.rs @@ -912,8 +912,8 @@ pub fn should_discard_shred( } } } - let shred_type = match layout::get_shred_type(shred) { - Ok(shred_type) => shred_type, + let shred_variant = match layout::get_shred_variant(shred) { + Ok(shred_variant) => shred_variant, Err(_) => { stats.bad_shred_type += 1; return true; @@ -939,7 +939,7 @@ pub fn should_discard_shred( return true; } }; - match shred_type { + match ShredType::from(shred_variant) { ShredType::Code => { if index >= shred_code::MAX_CODE_SHREDS_PER_SLOT as u32 { stats.index_out_of_bounds += 1; @@ -975,6 +975,15 @@ pub fn should_discard_shred( } } } + match shred_variant { + ShredVariant::LegacyCode | ShredVariant::LegacyData => (), + ShredVariant::MerkleCode(_) => { + stats.num_shreds_merkle_code = stats.num_shreds_merkle_code.saturating_add(1); + } + ShredVariant::MerkleData(_) => { + stats.num_shreds_merkle_data = stats.num_shreds_merkle_data.saturating_add(1); + } + } false } diff --git a/ledger/src/shred/stats.rs b/ledger/src/shred/stats.rs index ac6d8db77..0087ba606 100644 --- a/ledger/src/shred/stats.rs +++ b/ledger/src/shred/stats.rs @@ -32,6 +32,8 @@ pub struct ProcessShredsStats { pub struct ShredFetchStats { pub index_overrun: usize, pub shred_count: usize, + pub(crate) num_shreds_merkle_code: usize, + pub(crate) num_shreds_merkle_data: usize, pub ping_count: usize, pub ping_err_verify_count: usize, pub(crate) index_bad_deserialize: usize, @@ -115,6 +117,8 @@ impl ShredFetchStats { name, ("index_overrun", self.index_overrun, i64), ("shred_count", self.shred_count, i64), + ("num_shreds_merkle_code", self.num_shreds_merkle_code, i64), + ("num_shreds_merkle_data", self.num_shreds_merkle_data, i64), ("ping_count", self.ping_count, i64), ("ping_err_verify_count", self.ping_err_verify_count, i64), ("slot_bad_deserialize", self.slot_bad_deserialize, i64),