Skip to content
Open
Show file tree
Hide file tree
Changes from 4 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 @@ -1703,7 +1703,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 @@ -1724,6 +1724,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 +1728 to +1729

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 @@ -392,6 +392,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 @@ -9556,6 +9608,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