From d75ac5da8c39ef5bd37831007d8c4a09c7f7185a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Cauderlier?= Date: Wed, 11 Sep 2024 17:37:33 +0200 Subject: [PATCH 1/2] EVM node: Metric counting DAL import signals sent --- etherlink/bin_node/lib_dev/metrics.ml | 8 ++++++++ etherlink/bin_node/lib_dev/signals_publisher.ml | 5 +++++ 2 files changed, 13 insertions(+) diff --git a/etherlink/bin_node/lib_dev/metrics.ml b/etherlink/bin_node/lib_dev/metrics.ml index c61bce377186..2f6cc7341aea 100644 --- a/etherlink/bin_node/lib_dev/metrics.ml +++ b/etherlink/bin_node/lib_dev/metrics.ml @@ -255,6 +255,14 @@ module BlueprintChunkSent = struct "blueprint_chunks_sent_on_dal" end +let signals_sent = + Counter.v + ~registry + ~help:"Number of DAL import signals sent on the inbox" + ~namespace + ~subsystem + "signals_sent" + let metrics = let name = "Etherlink" in let chain = Chain.init name in diff --git a/etherlink/bin_node/lib_dev/signals_publisher.ml b/etherlink/bin_node/lib_dev/signals_publisher.ml index ff4d6e63d202..6072d56c659b 100644 --- a/etherlink/bin_node/lib_dev/signals_publisher.ml +++ b/etherlink/bin_node/lib_dev/signals_publisher.ml @@ -161,6 +161,11 @@ module Worker = struct ~signals ~smart_rollup_address:state.smart_rollup_address in + let () = + Prometheus.Counter.inc + Metrics.signals_sent + (Int.to_float @@ List.length signals) + in Rollup_services.publish ~keep_alive:false ~rollup_node_endpoint:state.rollup_node_endpoint -- GitLab From 863b4e45ce8e8739d901488540a3403346db85b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Cauderlier?= Date: Wed, 11 Sep 2024 17:49:22 +0200 Subject: [PATCH 2/2] Rollup node: metrics related to length of DAL queues --- src/lib_smart_rollup_node/dal_injection_queue.ml | 10 +++++++++- src/lib_smart_rollup_node/metrics.ml | 14 ++++++++++++++ src/lib_smart_rollup_node/metrics.mli | 8 ++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/lib_smart_rollup_node/dal_injection_queue.ml b/src/lib_smart_rollup_node/dal_injection_queue.ml index d6564c691112..6c85b4160e50 100644 --- a/src/lib_smart_rollup_node/dal_injection_queue.ml +++ b/src/lib_smart_rollup_node/dal_injection_queue.ml @@ -233,6 +233,8 @@ let inject_slot state ~slot_index ~slot_content = in let*! () = Events.(emit injected) (commitment, slot_index, l1_hash) in Recent_dal_injections.replace state.recent_dal_injections l1_hash () ; + Metrics.DAL_batcher.set_dal_injections_queue_length + (Recent_dal_injections.length state.recent_dal_injections) ; return_unit let on_register state ~message : unit tzresult Lwt.t = @@ -250,6 +252,8 @@ let on_register state ~message : unit tzresult Lwt.t = tzfail @@ Rollup_node_errors.Dal_message_too_big {slot_size; message_size} else ( Pending_messages.replace state.pending_messages state.count_messages message ; + Metrics.DAL_batcher.set_dal_batcher_queue_length + (Pending_messages.length state.pending_messages) ; (* We don't care about overflows here. *) state.count_messages <- state.count_messages + 1 ; let*! () = Events.(emit dal_message_received) () in @@ -296,6 +300,8 @@ let fill_slot state ~slot_size = else (* Pop the element to remove it. *) let () = ignore @@ Pending_messages.take state.pending_messages in + Metrics.DAL_batcher.set_dal_batcher_queue_length + (Pending_messages.length state.pending_messages) ; fill_slot_aux (message :: accu) ~remaining_size in fill_slot_aux [] ~remaining_size:slot_size @@ -539,4 +545,6 @@ let forget_injection_id id = let open Result_syntax in let+ w = Result.map_error TzTrace.make (Lazy.force worker) in let state = Worker.state w in - Recent_dal_injections.remove state.recent_dal_injections id + let () = Recent_dal_injections.remove state.recent_dal_injections id in + Metrics.DAL_batcher.set_dal_injections_queue_length + (Recent_dal_injections.length state.recent_dal_injections) diff --git a/src/lib_smart_rollup_node/metrics.ml b/src/lib_smart_rollup_node/metrics.ml index 050e042b0d8b..2f92549bb1d7 100644 --- a/src/lib_smart_rollup_node/metrics.ml +++ b/src/lib_smart_rollup_node/metrics.ml @@ -335,6 +335,20 @@ module Batcher = struct set_gauge "Last batch time" "batcher_last_batch_time" Ptime.to_float_s end +module DAL_batcher = struct + let set_dal_batcher_queue_length = + set_gauge + "Number of messages waiting for publication on the DAL" + "dal_batcher_queue_length" + Int.to_float + + let set_dal_injections_queue_length = + set_gauge + "Number of recently published DAL slots, who have not yet been forgotten" + "dal_injections_queue_length" + Int.to_float +end + module Performance = struct let virtual_ = v_gauge ~help:"Size Memory Stats" "performance_virtual" diff --git a/src/lib_smart_rollup_node/metrics.mli b/src/lib_smart_rollup_node/metrics.mli index 2b0afd3dea7b..4b34d19f7510 100644 --- a/src/lib_smart_rollup_node/metrics.mli +++ b/src/lib_smart_rollup_node/metrics.mli @@ -110,6 +110,14 @@ module Batcher : sig val set_last_batch_time : Ptime.t -> unit end +module DAL_batcher : sig + (** Set the number of messages in the queue waiting to be published on the DAL *) + val set_dal_batcher_queue_length : int -> unit + + (** Set the number of DAL slots which were recently published and not yet forgotten *) + val set_dal_injections_queue_length : int -> unit +end + module GC : sig (** Set the time to process a GC *) val set_process_time : Ptime.span -> unit -- GitLab