Skip to content

rotor: report fec masks & sample rtt off shred tile arrival time - #12414

Merged
emwang-jump merged 1 commit into
mainfrom
emwang/rotor-fec-mas
Oct 21, 2026
Merged

emwang-jump merged 1 commit into
mainfrom
emwang/rotor-fec-mas

Conversation

@emwang-jump

Copy link
Copy Markdown
Contributor

No description provided.

@emwang-jump
emwang-jump marked this pull request as ready for review October 19, 2026 17:15
Copilot AI balanced review requested due to automatic review settings October 19, 2026 17:15

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

Static review found no blocking issues in mask propagation, initialization, or preservation; tests were not executed.

No open issues 🎉

What changed in this PR

Adds received-shred masks to Firedancer’s rotor telemetry, carrying them from FEC completion messages into block-received events.

Changes:

  • Propagates data, parity, and repair-data masks from the shred tile.
  • Preserves masks from the first FEC completion.
  • Extends telemetry tests to check mask storage and duplicate-completion handling.
File Description
src/​discof/​rotor/​fd_rotor_tile.c Reports masks in block-received events.
src/​disco/​shred/​fd_shred_tile.h Adds masks to completion messages.
src/​disco/​shred/​fd_shred_tile.c Populates completion-message masks.
src/​choreo/​rotor/​test_fd_rotor.c Tests mask storage and preservation.
src/​choreo/​rotor/​fd_rotor.h Extends FEC state and completion API.
src/​choreo/​rotor/​fd_rotor.c Initializes masks and stores first-completion values.

Review effort: Balanced

Copilot AI balanced review requested due to automatic review settings October 19, 2026 18:57
@github-actions

github-actions Bot commented Oct 19, 2026 •

Copy link
Copy Markdown
 ┌─ ⚡ PERF · fc21c34 vs main@21c05bf ─────────────────────────────────
 │ SUITE                               BASELINE          NEW         Δ
 │ replay tps, mainnet               30,148 tps   30,030 tps  ·  -0.39%
 │ bench tps, localnet              665,585 tps  670,181 tps  ·  +0.69%
 │ snapshot load, testnet                3.77 s       3.77 s  ·  +0.06%
 │ mem total, mainnet                146.36 GiB   146.36 GiB  ·   0.00%
!│ mem total, testnet                 87.25 GiB    87.25 GiB  ▲   0.00%
!│ mem total, ag mainnet             147.17 GiB   147.17 GiB  ▲   0.00%
 │ clean compile, firedancer             3.44 s       3.44 s  ·  -0.15%
 │ binary size, firedancer             59.89 MB     59.89 MB  ·   0.00%
 ├─────────────────────────────────────────────────────────────────────
@@ 0 REGRESSIONS · 2 WARNINGS · 0 IMPROVED · 6 NOISE @@
 └─────────────────────────────────────────────────────────────────────
history · 10 pushes
 ┌─ HISTORY · Δ vs main, per push, newest first ──────────────────────────────────
 │ HEAD         TPS    BENCH     SNAP    MEM·M    MEM·T     AG·M  COMPILE   BINARY
!│ fc21c34   -0.39%   +0.69%   +0.06%    0.00%    0.00%    0.00%   -0.15%    0.00%
!│ df46180   +0.07%   -0.43%   -0.01%    0.00%    0.00%    0.00%   -0.10%    0.00%
-│ 89a2490        …        …        …        …        …        …        …        …
!│ 194e834   -0.66%   +0.55%   -0.53%    0.00%   +0.05%   +0.03%   -0.74%    0.00%
!│ 7b5541f   +0.47%   +0.18%   +0.22%    0.00%   +0.05%   +0.03%   -0.33%    0.00%
!│ 3064581   -0.08%   +0.47%   +0.01%    0.00%   +0.05%   +0.03%   +0.77%    0.00%
!│ 0f95aa7   +0.72%   +0.43%   -0.23%    0.00%   +0.05%   +0.03%   -0.09%    0.00%
 │ 6f6573d        …        …        …        …        …        …        …        …
!│ eeb7edb   +0.06%   -0.05%        …    0.00%   +0.05%   +0.03%   +0.57%    0.00%
!│ d45f46b   -0.59%   -0.41%   +1.66%    0.00%   +0.04%   +0.03%   +0.14%    0.00%
 └────────────────────────────────────────────────────────────────────────────────

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

Static review found no blocking issues in mask propagation or preservation; runtime tests were not run.

No open issues 🎉

Review effort: Balanced

Copilot AI balanced review requested due to automatic review settings October 19, 2026 23:48

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Partially answered requests inflate the first-response in-flight gauge, and generated metric documentation remains outdated.

2 open issues

Review effort: Balanced

Comment on lines +1164 to +1166
<int value="0" name="ForBlockId" label="Response to a pending WindowIndexForBlockId request" />
<int value="1" name="SlotIndex" label="Response to a pending WindowIndex or HighestWindowIndex request" />
<int value="2" name="Unmatched" label="Matched no pending request: a duplicate, or an answer to an expired or evicted request" />
Comment thread src/discof/rotor/fd_rotor_tile.c
Copilot AI balanced review requested due to automatic review settings October 20, 2026 17:49

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The in-flight request gauge still counts partially answered requests despite being defined as attempts awaiting their first response.

2 open issues

Review effort: Balanced

Copilot AI balanced review requested due to automatic review settings October 20, 2026 18:27

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The stale generated event protobuf will cause the generated-code CI check to fail.

3 open issues

Review effort: Balanced

Comment thread src/disco/events/schema/metrics_rotor.json
@emwang-jump emwang-jump changed the title rotor: report fec masks rotor: report fec masks & sample rtt off shred tile arrival time Oct 20, 2026
Copilot AI balanced review requested due to automatic review settings October 20, 2026 21:07

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Partially answered by-ID requests incorrectly increment the unanswered-expiration counter.

4 open issues

Review effort: Balanced

Comment thread src/discof/rotor/fd_rotor_tile.c Outdated
Copilot AI balanced review requested due to automatic review settings October 20, 2026 21:10

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Partially answered by-ID requests still increment the counter defined for unanswered expirations.

4 open issues

Review effort: Balanced

Copilot AI balanced review requested due to automatic review settings October 20, 2026 22:52

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Timing-sensitive request-lifetime and peer-scoring changes warrant runtime validation and human review.

1 open issue
3 resolved since last review

Review effort: Balanced

Comment on lines +50 to -54
uint data_rcvd; /* shred tile masks at first completion: bit j set if the data shred with in-type index j was received (vs recovered) */
uint parity_rcvd; /* ... if the parity shred with in-type index j was received */
uint repair_rcvd; /* ... if the data shred with in-type index j arrived by repair */
ulong next;
ulong prev;
};
typedef struct fd_rotor_fec fd_rotor_fec_t;
FD_STATIC_ASSERT( sizeof(fd_rotor_fec_t)==120UL, fd_rotor_fec );

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i think if you just jiggle these fields around, you'll find it fits in exactly 128, it probably is just interleaving padding

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

reordered it so theres no interleaved padding, but its 136 because w/out padding the size of the struct is 132, could cut it down other ways

Copilot AI balanced review requested due to automatic review settings October 21, 2026 18:39
@emwang-jump
emwang-jump enabled auto-merge (rebase) October 21, 2026 18:41

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Stateful repair-response lifecycle changes need targeted runtime validation that was unavailable during review.

1 open issue

Review effort: Balanced

Copilot AI balanced review requested due to automatic review settings October 21, 2026 18:50

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Repair-request lifecycle and latency-driven peer selection changes need targeted runtime validation and human review.

1 open issue

Review effort: Balanced

Copilot AI balanced review requested due to automatic review settings October 21, 2026 18:57

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Repair-request lifecycle and peer-scoring changes need targeted runtime validation and human review.

1 open issue

Review effort: Balanced

Copilot AI balanced review requested due to automatic review settings October 21, 2026 19:00

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Cross-tile timing and repair-request lifecycle changes warrant human review and targeted runtime validation despite no confirmed defects.

1 open issue

Review effort: Balanced

@emwang-jump
emwang-jump merged commit ba0e99f into main Oct 21, 2026
21 checks passed
@emwang-jump
emwang-jump deleted the emwang/rotor-fec-mas branch October 21, 2026 19:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants