adds metrics tracking deduper saturations (#30779)

This commit is contained in:
behzad nouri 2023-03-20 15:33:36 +00:00 committed by GitHub
parent df2c95119c
commit 4b595ebaaf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 2 deletions

View File

@ -59,7 +59,9 @@ impl ShredFetchStage {
let mut stats = ShredFetchStats::default(); let mut stats = ShredFetchStats::default();
for mut packet_batch in recvr { for mut packet_batch in recvr {
deduper.maybe_reset(&mut rng, DEDUPER_FALSE_POSITIVE_RATE, DEDUPER_RESET_CYCLE); if deduper.maybe_reset(&mut rng, DEDUPER_FALSE_POSITIVE_RATE, DEDUPER_RESET_CYCLE) {
stats.num_deduper_saturations += 1;
}
if last_updated.elapsed().as_millis() as u64 > DEFAULT_MS_PER_SLOT { if last_updated.elapsed().as_millis() as u64 > DEFAULT_MS_PER_SLOT {
last_updated = Instant::now(); last_updated = Instant::now();
{ {

View File

@ -80,6 +80,7 @@ struct SigVerifierStats {
dedup_packets_pp_us_hist: histogram::Histogram, // per-packet time to call verify_batch dedup_packets_pp_us_hist: histogram::Histogram, // per-packet time to call verify_batch
batches_hist: histogram::Histogram, // number of packet batches per verify call batches_hist: histogram::Histogram, // number of packet batches per verify call
packets_hist: histogram::Histogram, // number of packets per verify call packets_hist: histogram::Histogram, // number of packets per verify call
num_deduper_saturations: usize,
total_batches: usize, total_batches: usize,
total_packets: usize, total_packets: usize,
total_dedup: usize, total_dedup: usize,
@ -196,6 +197,7 @@ impl SigVerifierStats {
("packets_min", self.packets_hist.minimum().unwrap_or(0), i64), ("packets_min", self.packets_hist.minimum().unwrap_or(0), i64),
("packets_max", self.packets_hist.maximum().unwrap_or(0), i64), ("packets_max", self.packets_hist.maximum().unwrap_or(0), i64),
("packets_mean", self.packets_hist.mean().unwrap_or(0), i64), ("packets_mean", self.packets_hist.mean().unwrap_or(0), i64),
("num_deduper_saturations", self.num_deduper_saturations, i64),
("total_batches", self.total_batches, i64), ("total_batches", self.total_batches, i64),
("total_packets", self.total_packets, i64), ("total_packets", self.total_packets, i64),
("total_dedup", self.total_dedup, i64), ("total_dedup", self.total_dedup, i64),
@ -418,7 +420,9 @@ impl SigVerifyStage {
let mut rng = rand::thread_rng(); let mut rng = rand::thread_rng();
let mut deduper = Deduper::<2>::new(&mut rng, DEDUPER_NUM_BITS); let mut deduper = Deduper::<2>::new(&mut rng, DEDUPER_NUM_BITS);
loop { loop {
deduper.maybe_reset(&mut rng, DEDUPER_FALSE_POSITIVE_RATE, MAX_DEDUPER_AGE); if deduper.maybe_reset(&mut rng, DEDUPER_FALSE_POSITIVE_RATE, MAX_DEDUPER_AGE) {
stats.num_deduper_saturations += 1;
}
if let Err(e) = if let Err(e) =
Self::verifier(&deduper, &packet_receiver, &mut verifier, &mut stats) Self::verifier(&deduper, &packet_receiver, &mut verifier, &mut stats)
{ {

View File

@ -32,6 +32,7 @@ pub struct ProcessShredsStats {
pub struct ShredFetchStats { pub struct ShredFetchStats {
pub index_overrun: usize, pub index_overrun: usize,
pub shred_count: usize, pub shred_count: usize,
pub num_deduper_saturations: usize,
pub(crate) num_shreds_merkle_code: usize, pub(crate) num_shreds_merkle_code: usize,
pub(crate) num_shreds_merkle_data: usize, pub(crate) num_shreds_merkle_data: usize,
pub ping_count: usize, pub ping_count: usize,
@ -117,6 +118,7 @@ impl ShredFetchStats {
name, name,
("index_overrun", self.index_overrun, i64), ("index_overrun", self.index_overrun, i64),
("shred_count", self.shred_count, i64), ("shred_count", self.shred_count, i64),
("num_deduper_saturations", self.num_deduper_saturations, i64),
("num_shreds_merkle_code", self.num_shreds_merkle_code, i64), ("num_shreds_merkle_code", self.num_shreds_merkle_code, i64),
("num_shreds_merkle_data", self.num_shreds_merkle_data, i64), ("num_shreds_merkle_data", self.num_shreds_merkle_data, i64),
("ping_count", self.ping_count, i64), ("ping_count", self.ping_count, i64),