Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions book/api/metrics-generated.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 5 additions & 1 deletion src/app/firedancer/config/default.toml
Original file line number Diff line number Diff line change
Expand Up @@ -1721,7 +1721,7 @@ telemetry = true
# Over time, as the network gets faster and compute unit limits
# are raised, this trade-off will become less pronounced.
#
# The Firedancer team supports two different strategies which
# The Firedancer team supports three different strategies which
# are described below:
#
# "perf"
Expand All @@ -1742,6 +1742,10 @@ telemetry = true
# When using the balanced mode, there is no reason to increase
# execle tile count beyond the default of 2.
#
# "auction"
# Schedule transactions in 50ms batch auctions. Bundles are
# not included in the auctions.
Comment on lines +1746 to +1747

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I think we should be slightly more descriptive about how bundles play into this. Bundles are scheduled before the auction or something?

#
# In cases of network congestion, high volume, or if seeing poor
# block packing performance for any reason, it is recommended to
# revert to the "balanced" strategy.
Expand Down
1 change: 1 addition & 0 deletions src/app/shared/fd_config.c
Original file line number Diff line number Diff line change
Expand Up @@ -399,6 +399,7 @@ fd_config_fill( fd_config_t * config,
else if( FD_LIKELY( !strcmp( config->tiles.pack.schedule_strategy, "revenue" ) ) ) {
FD_LOG_ERR(( "the revenue scheduler has been removed. Please update [tiles.pack.schedule_strategy]" ));
}
else if( FD_LIKELY( !strcmp( config->tiles.pack.schedule_strategy, "auction" ) ) ) config->tiles.pack.schedule_strategy_enum = 2;
else FD_LOG_ERR(( "[tiles.pack.schedule_strategy] %s not recognized", config->tiles.pack.schedule_strategy ));

fd_config_fill_net( config );
Expand Down
60 changes: 60 additions & 0 deletions src/disco/events/schema/events.proto
Original file line number Diff line number Diff line change
Expand Up @@ -2286,6 +2286,56 @@ message MetricsResolvRegimeDurationNanos {
uint64 backpressure_sleeping = 10;
}

// Duration that batch auctions ran for
message MetricsPackAuctionDurationNanos {
// [0, 10000) nanos
uint64 b0 = 1;
// [10000, 19307) nanos
uint64 b1 = 2;
// [19307, 37276) nanos
uint64 b2 = 3;
// [37276, 71969) nanos
uint64 b3 = 4;
// [71969, 138950) nanos
uint64 b4 = 5;
// [138950, 268270) nanos
uint64 b5 = 6;
// [268270, 517948) nanos
uint64 b6 = 7;
// [517948, 1000001) nanos
uint64 b7 = 8;
// [1000001, 1930699) nanos
uint64 b8 = 9;
// [1930699, 3727596) nanos
uint64 b9 = 10;
// [3727596, 7196860) nanos
uint64 b10 = 11;
// [7196860, 13894960) nanos
uint64 b11 = 12;
// [13894960, 26826964) nanos
uint64 b12 = 13;
// [26826964, 51794753) nanos
uint64 b13 = 14;
// [51794753, 100000000) nanos
uint64 b14 = 15;
// [100000000, inf) nanos
uint64 b15 = 16;
// Sum of samples (nanos)
uint64 sum = 17;
}

// Batch auctions ended, by reason
message MetricsPackAuctionEnded {
// An auction ended because the block reached the auction's CU limit
uint64 limit = 1;
// An auction ended because a new auction was started
uint64 restarted = 2;
// An auction ended because the final 20ms of our leader rotation began
uint64 final = 3;
// An auction ended because the leader slot ended
uint64 slot_end = 4;
}

// Percent of max_cost_per_block used by each block pack produced
message MetricsPackCostPerBlockPct {
// [0, 1) pct
Expand Down Expand Up @@ -2480,6 +2530,8 @@ message MetricsPackTxnPendingUsed {
uint64 conflicting = 3;
// Transactions that are part of a bundle
uint64 bundle = 4;
// Transactions that are currently held waiting for the next auction
uint64 next_auction = 5;
}

// Transactions dropped from pack after insertion, by reason
Expand Down Expand Up @@ -9708,6 +9760,14 @@ message MetricsPack {
uint64 pre_rotation_bundle_evicted = 51;
// Bundles that arrived while not leader that pack scheduled
uint64 pre_rotation_bundle_scheduled = 52;
// Batch auctions started
uint64 auction_started = 53;
// Batch auctions skipped because the block was already at their CU limit
uint64 auction_cancelled = 54;
// Batch auctions ended, by reason
MetricsPackAuctionEnded auction_ended = 55;
// Duration that batch auctions ran for
MetricsPackAuctionDurationNanos auction_duration_nanos = 56;
}

// Metrics of one execle tile instance, one row per sweep
Expand Down
49 changes: 44 additions & 5 deletions src/disco/events/schema/metrics_pack.json
Original file line number Diff line number Diff line change
Expand Up @@ -304,10 +304,11 @@
"type": "Tuple",
"description": "Pending transactions in pack's pool, by type",
"fields": {
"regular": { "type": "UInt64", "compression": "T64, ZSTD", "description": "Transactions in the main treap" },
"vote": { "type": "UInt64", "compression": "T64, ZSTD", "description": "Deprecated, always 0 since Firedancer v26.11." },
"conflicting": { "type": "UInt64", "compression": "T64, ZSTD", "description": "Transactions that write to a hotly-contended account" },
"bundle": { "type": "UInt64", "compression": "T64, ZSTD", "description": "Transactions that are part of a bundle" }
"regular": { "type": "UInt64", "compression": "T64, ZSTD", "description": "Transactions in the main treap" },
"vote": { "type": "UInt64", "compression": "T64, ZSTD", "description": "Deprecated, always 0 since Firedancer v26.11." },
"conflicting": { "type": "UInt64", "compression": "T64, ZSTD", "description": "Transactions that write to a hotly-contended account" },
"bundle": { "type": "UInt64", "compression": "T64, ZSTD", "description": "Transactions that are part of a bundle" },
"next_auction": { "type": "UInt64", "compression": "T64, ZSTD", "description": "Transactions that are currently held waiting for the next auction" }
}
},
"txn_pending_capacity": { "type": "UInt64", "compression": "T64, ZSTD", "description": "Maximum pending transactions pack can hold" },
Expand Down Expand Up @@ -441,6 +442,44 @@
"pre_rotation_bundle_inserted": { "type": "UInt64", "compression": "DoubleDelta, ZSTD", "description": "Bundles that arrived while not leader that pack kept" },
"pre_rotation_bundle_rejected": { "type": "UInt64", "compression": "DoubleDelta, ZSTD", "description": "Bundles that arrived while not leader that pack dropped because it was full of ones that declare at least as large a tip" },
"pre_rotation_bundle_evicted": { "type": "UInt64", "compression": "DoubleDelta, ZSTD", "description": "Bundles that arrived while not leader that pack dropped for one that declares a larger tip" },
"pre_rotation_bundle_scheduled": { "type": "UInt64", "compression": "DoubleDelta, ZSTD", "description": "Bundles that arrived while not leader that pack scheduled" }
"pre_rotation_bundle_scheduled": { "type": "UInt64", "compression": "DoubleDelta, ZSTD", "description": "Bundles that arrived while not leader that pack scheduled" },
"auction_started": { "type": "UInt64", "compression": "DoubleDelta, ZSTD", "description": "Batch auctions started" },
"auction_cancelled": { "type": "UInt64", "compression": "DoubleDelta, ZSTD", "description": "Batch auctions skipped because the block was already at their CU limit" },
"auction_ended": {
"type": "Tuple",
"description": "Batch auctions ended, by reason",
"aliases": {
"all": ["limit", "restarted", "final", "slot_end"]
},
"fields": {
"limit": { "type": "UInt64", "compression": "DoubleDelta, ZSTD", "description": "An auction ended because the block reached the auction's CU limit" },
"restarted": { "type": "UInt64", "compression": "DoubleDelta, ZSTD", "description": "An auction ended because a new auction was started" },
"final": { "type": "UInt64", "compression": "DoubleDelta, ZSTD", "description": "An auction ended because the final 20ms of our leader rotation began" },
"slot_end": { "type": "UInt64", "compression": "DoubleDelta, ZSTD", "description": "An auction ended because the leader slot ended" }
}
},
"auction_duration_nanos": {
"type": "Tuple",
"description": "Duration that batch auctions ran for",
"fields": {
"b0": { "type": "UInt64", "compression": "DoubleDelta, ZSTD", "description": "[0, 10000) nanos" },
"b1": { "type": "UInt64", "compression": "DoubleDelta, ZSTD", "description": "[10000, 19307) nanos" },
"b2": { "type": "UInt64", "compression": "DoubleDelta, ZSTD", "description": "[19307, 37276) nanos" },
"b3": { "type": "UInt64", "compression": "DoubleDelta, ZSTD", "description": "[37276, 71969) nanos" },
"b4": { "type": "UInt64", "compression": "DoubleDelta, ZSTD", "description": "[71969, 138950) nanos" },
"b5": { "type": "UInt64", "compression": "DoubleDelta, ZSTD", "description": "[138950, 268270) nanos" },
"b6": { "type": "UInt64", "compression": "DoubleDelta, ZSTD", "description": "[268270, 517948) nanos" },
"b7": { "type": "UInt64", "compression": "DoubleDelta, ZSTD", "description": "[517948, 1000001) nanos" },
"b8": { "type": "UInt64", "compression": "DoubleDelta, ZSTD", "description": "[1000001, 1930699) nanos" },
"b9": { "type": "UInt64", "compression": "DoubleDelta, ZSTD", "description": "[1930699, 3727596) nanos" },
"b10": { "type": "UInt64", "compression": "DoubleDelta, ZSTD", "description": "[3727596, 7196860) nanos" },
"b11": { "type": "UInt64", "compression": "DoubleDelta, ZSTD", "description": "[7196860, 13894960) nanos" },
"b12": { "type": "UInt64", "compression": "DoubleDelta, ZSTD", "description": "[13894960, 26826964) nanos" },
"b13": { "type": "UInt64", "compression": "DoubleDelta, ZSTD", "description": "[26826964, 51794753) nanos" },
"b14": { "type": "UInt64", "compression": "DoubleDelta, ZSTD", "description": "[51794753, 100000000) nanos" },
"b15": { "type": "UInt64", "compression": "DoubleDelta, ZSTD", "description": "[100000000, inf) nanos" },
"sum": { "type": "UInt64", "compression": "DoubleDelta, ZSTD", "description": "Sum of samples (nanos)" }
}
}
}
}
2 changes: 1 addition & 1 deletion src/disco/gui/fd_gui_printf.c
Original file line number Diff line number Diff line change
Expand Up @@ -684,7 +684,7 @@ fd_gui_printf_schedule_strategy( fd_gui_t * gui ) {
switch (gui->summary.schedule_strategy) {
case 0: fd_cstr_ncpy( mode, "perf", sizeof(mode) ); break;
case 1: fd_cstr_ncpy( mode, "balanced", sizeof(mode) ); break;
case 2: fd_cstr_ncpy( mode, "revenue", sizeof(mode) ); break;
case 2: fd_cstr_ncpy( mode, "auction", sizeof(mode) ); break;
Comment thread
topointon-jump marked this conversation as resolved.
Resolved
default: FD_LOG_ERR(("unexpected schedule_strategy %d", gui->summary.schedule_strategy));
}
jsonp_string( gui->http, "value", mode );
Expand Down
8 changes: 8 additions & 0 deletions src/disco/metrics/generated/fd_metrics_all.c

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 16 additions & 2 deletions src/disco/metrics/generated/fd_metrics_enums.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading