Repository navigation
rotor: report fec masks & sample rtt off shred tile arrival time - #12414
Merged
Merged
Conversation
Contributor
There was a problem hiding this comment.
🟢 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
emwang-jump
force-pushed
the
emwang/rotor-fec-mas
branch
from
October 19, 2026 18:57
3dd185c to
d45f46b
Compare
┌─ ⚡ 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%
└──────────────────────────────────────────────────────────────────────────────── |
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" /> |
emwang-jump
force-pushed
the
emwang/rotor-fec-mas
branch
from
October 20, 2026 21:07
2869902 to
eeb7edb
Compare
emwang-jump
force-pushed
the
emwang/rotor-fec-mas
branch
from
October 20, 2026 21:09
eeb7edb to
6f6573d
Compare
emwang-jump
force-pushed
the
emwang/rotor-fec-mas
branch
from
October 20, 2026 23:25
3064581 to
7b5541f
Compare
lidatong
reviewed
Oct 21, 2026
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 ); |
Member
There was a problem hiding this comment.
i think if you just jiggle these fields around, you'll find it fits in exactly 128, it probably is just interleaving padding
Contributor
Author
There was a problem hiding this comment.
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
emwang-jump
force-pushed
the
emwang/rotor-fec-mas
branch
from
October 21, 2026 18:39
7b5541f to
194e834
Compare
emwang-jump
enabled auto-merge (rebase)
October 21, 2026 18:41
emwang-jump
force-pushed
the
emwang/rotor-fec-mas
branch
from
October 21, 2026 18:50
194e834 to
89a2490
Compare
emwang-jump
force-pushed
the
emwang/rotor-fec-mas
branch
from
October 21, 2026 18:58
df46180 to
fc21c34
Compare
lidatong
approved these changes
Oct 21, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

No description provided.