Skip to content

Commit c794e54

Browse files
steviezAvhiMaz
authored andcommitted
turbine: Fix and cleanup redundant metric (anza-xyz#9287)
The broadcast-process-shred-stats (and interrupted variant) have duplicate fields for the number of data and coding shred. This is probably a relic of when we rolled merkle shreds out. So, remove the duplicate fields. This also addresses a small issue where some shreds would be counted in metrics for the wrong slot when we have an interrupted slot
1 parent ffc8a91 commit c794e54

2 files changed

Lines changed: 12 additions & 32 deletions

File tree

ledger/src/shred/stats.rs

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,6 @@ impl ProcessShredsStats {
7474
&mut self,
7575
name: &'static str,
7676
slot: Slot,
77-
num_data_shreds: u32,
78-
num_coding_shreds: u32,
7977
slot_broadcast_time: Option<Duration>,
8078
) {
8179
let slot_broadcast_time = slot_broadcast_time
@@ -90,14 +88,8 @@ impl ProcessShredsStats {
9088
("slot", slot, i64),
9189
("shredding_time", self.shredding_elapsed, i64),
9290
("receive_time", self.receive_elapsed, i64),
93-
("num_data_shreds", num_data_shreds, i64),
94-
("num_coding_shreds", num_coding_shreds, i64),
95-
("num_merkle_data_shreds", self.num_merkle_data_shreds, i64),
96-
(
97-
"num_merkle_coding_shreds",
98-
self.num_merkle_coding_shreds,
99-
i64
100-
),
91+
("num_data_shreds", self.num_merkle_data_shreds, i64),
92+
("num_coding_shreds", self.num_merkle_coding_shreds, i64),
10193
("slot_broadcast_time", slot_broadcast_time, i64),
10294
(
10395
"get_leader_schedule_time",

turbine/src/broadcast_stage/standard_broadcast_run.rs

Lines changed: 10 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -74,12 +74,7 @@ impl StandardBroadcastRun {
7474
// If the current slot has changed, generates an empty shred indicating
7575
// last shred in the previous slot, along with coding shreds for the data
7676
// shreds buffered.
77-
fn finish_prev_slot(
78-
&mut self,
79-
keypair: &Keypair,
80-
max_ticks_in_slot: u8,
81-
stats: &mut ProcessShredsStats,
82-
) -> Vec<Shred> {
77+
fn finish_prev_slot(&mut self, keypair: &Keypair, max_ticks_in_slot: u8) -> Vec<Shred> {
8378
if self.completed {
8479
return vec![];
8580
}
@@ -96,9 +91,11 @@ impl StandardBroadcastRun {
9691
self.next_shred_index,
9792
self.next_code_index,
9893
&self.reed_solomon_cache,
99-
stats,
94+
&mut self.process_shreds_stats,
10095
)
101-
.inspect(|shred| stats.record_shred(shred))
96+
// These shreds will finish the slot so no need to update
97+
// self.next_shred_index and self.next_code_index
98+
.inspect(|shred| self.process_shreds_stats.record_shred(shred))
10299
.collect();
103100
if let Some(shred) = shreds.iter().max_by_key(|shred| shred.fec_set_index()) {
104101
self.chained_merkle_root = shred.merkle_root().unwrap();
@@ -208,8 +205,7 @@ impl StandardBroadcastRun {
208205
if self.slot != bank.slot() {
209206
// Finish previous slot if it was interrupted.
210207
if !self.completed {
211-
let shreds =
212-
self.finish_prev_slot(keypair, bank.ticks_per_slot() as u8, process_stats);
208+
let shreds = self.finish_prev_slot(keypair, bank.ticks_per_slot() as u8);
213209
debug_assert!(shreds.iter().all(|shred| shred.slot() == self.slot));
214210
// Broadcast shreds for the interrupted slot.
215211
let batch_info = Some(BroadcastShredBatchInfo {
@@ -435,13 +431,8 @@ impl StandardBroadcastRun {
435431
)
436432
};
437433

438-
self.process_shreds_stats.submit(
439-
name,
440-
self.slot,
441-
self.next_shred_index, // num_data_shreds
442-
self.next_code_index, // num_coding_shreds
443-
slot_broadcast_time,
444-
);
434+
self.process_shreds_stats
435+
.submit(name, self.slot, slot_broadcast_time);
445436
}
446437
}
447438

@@ -580,11 +571,8 @@ mod test {
580571
run.slot_broadcast_start = Instant::now();
581572

582573
// Slot 2 interrupted slot 1
583-
let shreds = run.finish_prev_slot(
584-
&keypair,
585-
0, // max_ticks_in_slot
586-
&mut ProcessShredsStats::default(),
587-
);
574+
let max_ticks_in_slot = 0;
575+
let shreds = run.finish_prev_slot(&keypair, max_ticks_in_slot);
588576
assert!(run.completed);
589577
let shred = shreds
590578
.first()

0 commit comments

Comments
 (0)