Skip to content

Commit 8dfd345

Browse files
committed
feat(fork_choice): integrate metrics into fork choice module
Wire up the metrics dependency (build.zig, zbuild.zon), export the metrics submodule from root.zig, and instrument computeDeltas in fork_choice.zig with timing and counter observations.
1 parent 9e55b0e commit 8dfd345

File tree

4 files changed

+22
-0
lines changed

4 files changed

+22
-0
lines changed

build.zig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1217,6 +1217,7 @@ pub fn build(b: *std.Build) void {
12171217
module_fork_choice.addImport("fork_types", module_fork_types);
12181218
module_fork_choice.addImport("hex", module_hex);
12191219
module_fork_choice.addImport("constants", module_constants);
1220+
module_fork_choice.addImport("metrics", dep_metrics.module("metrics"));
12201221

12211222
module_download_era_files.addImport("download_era_options", options_module_download_era_options);
12221223

src/fork_choice/fork_choice.zig

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ const compute_deltas = @import("compute_deltas.zig");
4242
const computeDeltas = compute_deltas.computeDeltas;
4343
const DeltasCache = compute_deltas.DeltasCache;
4444

45+
const metrics = @import("metrics.zig");
46+
4547
const store = @import("store.zig");
4648
pub const ForkChoiceStore = store.ForkChoiceStore;
4749
pub const Checkpoint = store.Checkpoint;
@@ -942,6 +944,8 @@ pub const ForkChoice = struct {
942944
const old_balances = self.balances.get().items;
943945
const new_balances = self.fc_store.justified.balances.get().items;
944946

947+
var compute_deltas_timer = try std.time.Timer.start();
948+
945949
const vote_fields = self.votes.fields();
946950
const result = try computeDeltas(
947951
allocator,
@@ -954,6 +958,21 @@ pub const ForkChoice = struct {
954958
&self.fc_store.equivocating_indices,
955959
);
956960

961+
metrics.fork_choice_metrics.compute_deltas_duration.observe(metrics.readSeconds(&compute_deltas_timer));
962+
metrics.fork_choice_metrics.compute_deltas_deltas_count.set(@intCast(result.deltas.len));
963+
metrics.fork_choice_metrics.compute_deltas_equivocating_validators.set(result.equivocating_validators);
964+
metrics.fork_choice_metrics.compute_deltas_old_inactive_validators.set(result.old_inactive_validators);
965+
metrics.fork_choice_metrics.compute_deltas_new_inactive_validators.set(result.new_inactive_validators);
966+
metrics.fork_choice_metrics.compute_deltas_unchanged_vote_validators.set(result.unchanged_vote_validators);
967+
metrics.fork_choice_metrics.compute_deltas_new_vote_validators.set(result.new_vote_validators);
968+
969+
// Count zero deltas.
970+
var zero_count: u64 = 0;
971+
for (result.deltas) |d| {
972+
if (d == 0) zero_count += 1;
973+
}
974+
metrics.fork_choice_metrics.compute_deltas_zero_deltas_count.set(zero_count);
975+
957976
self.balances.release();
958977
self.balances = self.fc_store.justified.balances.acquire();
959978

src/fork_choice/root.zig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ pub const compute_deltas = @import("compute_deltas.zig");
66
pub const proto_array = @import("proto_array.zig");
77
pub const store = @import("store.zig");
88
pub const fork_choice = @import("fork_choice.zig");
9+
pub const metrics = @import("metrics.zig");
910

1011
pub const ProtoBlock = proto_array.ProtoBlock;
1112
pub const ProtoNode = proto_array.ProtoNode;

zbuild.zon

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@
145145
.fork_types,
146146
.hex,
147147
.constants,
148+
.metrics,
148149
},
149150
},
150151
},

0 commit comments

Comments
 (0)