Parallel notifications in RPC PubSub (#20543)
* generate rpc notifications in parallel * Use multithreaded runtime for pubsub * add metric for time since creation of rpc notification to queue * measure notification entry processing * fix: add n_threads config argument * configure rayon thread pool for rpc notifications * add config option for pubsub notification threads * rename metric to created_to_queue_time_us Co-authored-by: Tyera Eulberg <teulberg@gmail.com> * rename metric to notification_entry_processing_time_us Co-authored-by: Tyera Eulberg <teulberg@gmail.com> * use value_of for rpc_pubsub_notification_threads parsing Co-authored-by: Tyera Eulberg <teulberg@gmail.com> * rename threads to sol-sub-notif-N Co-authored-by: Tyera Eulberg <teulberg@gmail.com> * fix rpc tests for TimestampedNotificationEntry * rustfmt * use rayon thread limit for rpc Co-authored-by: Pavel Strakhov <p.strakhov@iconic.vc> Co-authored-by: Alexander Polakov <a.polakov@zubr.io> Co-authored-by: Nikita Podoliako <bananaelecitrus@gmail.com> Co-authored-by: Tyera Eulberg <teulberg@gmail.com>
This commit is contained in:
@ -1179,6 +1179,15 @@ pub fn main() {
|
||||
.default_value("30")
|
||||
.help("Number of seconds before timing out RPC requests backed by BigTable"),
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("rpc_pubsub_worker_threads")
|
||||
.long("rpc-pubsub-worker-threads")
|
||||
.takes_value(true)
|
||||
.value_name("NUMBER")
|
||||
.validator(is_parsable::<usize>)
|
||||
.default_value("4")
|
||||
.help("PubSub worker threads"),
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("rpc_pubsub_enable_vote_subscription")
|
||||
.long("rpc-pubsub-enable-vote-subscription")
|
||||
@ -1256,6 +1265,15 @@ pub fn main() {
|
||||
.help("The maximum total size of notifications that RPC PubSub will store \
|
||||
across all connections."),
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("rpc_pubsub_notification_threads")
|
||||
.long("rpc-pubsub-notification-threads")
|
||||
.takes_value(true)
|
||||
.value_name("NUM_THREADS")
|
||||
.validator(is_parsable::<usize>)
|
||||
.help("The maximum number of threads that RPC PubSub will use \
|
||||
for generating notifications."),
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("rpc_send_transaction_retry_ms")
|
||||
.long("rpc-send-retry-ms")
|
||||
@ -2194,6 +2212,8 @@ pub fn main() {
|
||||
"rpc_pubsub_queue_capacity_bytes",
|
||||
usize
|
||||
),
|
||||
worker_threads: value_t_or_exit!(matches, "rpc_pubsub_worker_threads", usize),
|
||||
notification_threads: value_of(&matches, "rpc_pubsub_notification_threads"),
|
||||
},
|
||||
voting_disabled: matches.is_present("no_voting") || restricted_repair_only_mode,
|
||||
wait_for_supermajority: value_t!(matches, "wait_for_supermajority", Slot).ok(),
|
||||
|
Reference in New Issue
Block a user