mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-07-23 08:25:40 +00:00
Allow to broadcast network messages in parallel (#1409)
This PR addresses multiple issues pending: * [x] Update orchestra to the recent version and test how the node performs * [x] Add some useful metrics for outbound network bridge * [x] Try to send incoming network requests to all subsystems without blocking on some particular subsystem in that loop * [x] Fix all incompatibilities between orchestra and polkadot code (e.g. malus node)
This commit is contained in:
@@ -105,9 +105,27 @@ impl Metrics {
|
||||
|
||||
pub fn on_report_event(&self) {
|
||||
if let Some(metrics) = self.0.as_ref() {
|
||||
self.on_message("report_peer");
|
||||
metrics.report_events.inc()
|
||||
}
|
||||
}
|
||||
|
||||
pub fn on_message(&self, message_type: &'static str) {
|
||||
if let Some(metrics) = self.0.as_ref() {
|
||||
metrics.messages_sent.with_label_values(&[message_type]).inc()
|
||||
}
|
||||
}
|
||||
|
||||
pub fn on_delayed_rx_queue(&self, queue_size: usize) {
|
||||
if let Some(metrics) = self.0.as_ref() {
|
||||
metrics.rx_delayed_processing.observe(queue_size as f64);
|
||||
}
|
||||
}
|
||||
pub fn time_delayed_rx_events(
|
||||
&self,
|
||||
) -> Option<metrics::prometheus::prometheus::HistogramTimer> {
|
||||
self.0.as_ref().map(|metrics| metrics.rx_delayed_processing_time.start_timer())
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
@@ -123,6 +141,13 @@ pub(crate) struct MetricsInner {
|
||||
|
||||
bytes_received: prometheus::CounterVec<prometheus::U64>,
|
||||
bytes_sent: prometheus::CounterVec<prometheus::U64>,
|
||||
|
||||
messages_sent: prometheus::CounterVec<prometheus::U64>,
|
||||
// The reason why a `Histogram` is used to track a queue size is that
|
||||
// we need not only an average size of the queue (that will be 0 normally), but
|
||||
// we also need a dynamics for this queue size in case of messages delays.
|
||||
rx_delayed_processing: prometheus::Histogram,
|
||||
rx_delayed_processing_time: prometheus::Histogram,
|
||||
}
|
||||
|
||||
impl metrics::Metrics for Metrics {
|
||||
@@ -217,6 +242,34 @@ impl metrics::Metrics for Metrics {
|
||||
)?,
|
||||
registry,
|
||||
)?,
|
||||
messages_sent: prometheus::register(
|
||||
prometheus::CounterVec::new(
|
||||
prometheus::Opts::new(
|
||||
"polkadot_parachain_messages_sent_total",
|
||||
"The number of messages sent via network bridge",
|
||||
),
|
||||
&["type"]
|
||||
)?,
|
||||
registry,
|
||||
)?,
|
||||
rx_delayed_processing: prometheus::register(
|
||||
prometheus::Histogram::with_opts(
|
||||
prometheus::HistogramOpts::new(
|
||||
"polkadot_parachain_network_bridge_rx_delayed",
|
||||
"Number of events being delayed while broadcasting from the network bridge",
|
||||
).buckets(vec![0.0, 1.0, 2.0, 8.0, 16.0]),
|
||||
)?,
|
||||
registry,
|
||||
)?,
|
||||
rx_delayed_processing_time: prometheus::register(
|
||||
prometheus::Histogram::with_opts(
|
||||
prometheus::HistogramOpts::new(
|
||||
"polkadot_parachain_network_bridge_rx_delayed_time",
|
||||
"Time spent for waiting of the delayed events",
|
||||
),
|
||||
)?,
|
||||
registry,
|
||||
)?,
|
||||
};
|
||||
|
||||
Ok(Metrics(Some(metrics)))
|
||||
|
||||
Reference in New Issue
Block a user