From 0cc7a68d72ef4b03086c750b7a8b46579d969e90 Mon Sep 17 00:00:00 2001 From: Victor Allombert Date: Mon, 8 Dec 2025 16:56:02 +0100 Subject: [PATCH 1/4] Tezt_cloud/dal_node: retrieve profiling artifacts Co-authored-by: Guillaume Genestier --- tezt/tests/cloud/tezos.ml | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/tezt/tests/cloud/tezos.ml b/tezt/tests/cloud/tezos.ml index 7ebfc34f300c..dd309a0d734e 100644 --- a/tezt/tests/cloud/tezos.ml +++ b/tezt/tests/cloud/tezos.ml @@ -630,15 +630,27 @@ module Dal_node = struct in let on_shutdown = match Agent.artifacts_dir agent with - | Some destination_root when Tezt_cloud_cli.retrieve_daily_logs -> - [ - (fun () -> - Agent_kind.Logs.scp_logs - ~destination_root - ~daemon_name:name - agent); - ] - | None | Some _ -> [] + | Some destination_root -> + (if Tezt_cloud_cli.retrieve_daily_logs then + [ + (fun () -> + Agent_kind.Logs.scp_logs + ~destination_root + ~daemon_name:name + agent); + ] + else []) + @ + if Tezt_cloud_cli.retrieve_ppx_profiling_traces then + [ + (fun () -> + Agent_kind.Logs.scp_profiling + ~destination_root + ~daemon_name:name + agent); + ] + else [] + | None -> [] in Cloud.service_register ~name -- GitLab From 525117f4070770b5acb958f0febc47313716f4cc Mon Sep 17 00:00:00 2001 From: Victor Allombert Date: Mon, 8 Dec 2025 16:56:50 +0100 Subject: [PATCH 2/4] DAL/message_validation: introduce and use profiler --- src/lib_dal_node/message_validation.ml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/lib_dal_node/message_validation.ml b/src/lib_dal_node/message_validation.ml index d9be35cf119a..56d0a821de6f 100644 --- a/src/lib_dal_node/message_validation.ml +++ b/src/lib_dal_node/message_validation.ml @@ -23,6 +23,9 @@ (* *) (*****************************************************************************) +module Profiler = + (val Tezos_profiler.Profiler.wrap Gossipsub.Profiler.gossipsub_profiler) + let string_of_validation_error = function | `Invalid_degree_strictly_less_than_expected Cryptobox.{given; expected} -> Format.sprintf @@ -402,7 +405,11 @@ let gossipsub_batch_validation ctxt cryptobox ~head_level proto_parameters batch let batch_size = List.length batch in let result = Array.init batch_size (fun _ -> `Unknown) in let {to_check_in_batch; not_valid} = - triage ctxt head_level proto_parameters batch + (triage + ctxt + head_level + proto_parameters + batch [@profiler.record_f {verbosity = Notice} "triage"]) in List.iter (fun (index, error) -> result.(index) <- error) not_valid ; -- GitLab From 0ae2edd98fd0453687528ce7e696fbe5b2fdd913 Mon Sep 17 00:00:00 2001 From: Victor Allombert Date: Mon, 8 Dec 2025 16:57:51 +0100 Subject: [PATCH 3/4] DAL/Gossipsub: add batch_event profiling --- src/lib_gossipsub/gossipsub_worker.ml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/lib_gossipsub/gossipsub_worker.ml b/src/lib_gossipsub/gossipsub_worker.ml index f40538224711..5e639f85d5d8 100644 --- a/src/lib_gossipsub/gossipsub_worker.ml +++ b/src/lib_gossipsub/gossipsub_worker.ml @@ -990,7 +990,12 @@ module Make (C : Gossipsub_intf.WORKER_CONFIGURATION) : state [@profiler.span_f {verbosity = Notice} ["apply_event"; "Check_unknown_messages"]] - | Process_batch batch -> apply_batch_event state batch + | Process_batch batch -> + apply_batch_event + state + batch + [@profiler.span_f + {verbosity = Notice} ["apply_event"; "apply_batch_event"]] (** A helper function that pushes events in the state *) let push e {status = _; state; self = _; _} = -- GitLab From 60027cfa6b8d250722ed88f6506eb717c0925f42 Mon Sep 17 00:00:00 2001 From: Victor Allombert Date: Tue, 9 Dec 2025 10:47:19 +0100 Subject: [PATCH 4/4] DAL: improve input/output shard handler profiling --- src/lib_dal_node/daemon.ml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/lib_dal_node/daemon.ml b/src/lib_dal_node/daemon.ml index cd8e36b6b407..9dbd3c909639 100644 --- a/src/lib_dal_node/daemon.ml +++ b/src/lib_dal_node/daemon.ml @@ -267,7 +267,7 @@ let connect_gossipsub_with_p2p proto_parameters gs_worker transport_layer return_unit | _ -> return_unit) [@profiler.aggregate_s - {verbosity = Notice; profiler_module = Profiler} "shards_handler"]) + {verbosity = Notice; profiler_module = Profiler} "output_shards_handler"]) in let shards_in_handler still_to_receive_indices = fun Types.Message_id.{level; slot_index; shard_index; _} from_peer -> @@ -317,7 +317,8 @@ let connect_gossipsub_with_p2p proto_parameters gs_worker transport_layer return_unit in match[@profiler.aggregate_s - {verbosity = Notice; profiler_module = Profiler} "shards_handler"] + {verbosity = Notice; profiler_module = Profiler} + "input_shards_handler"] Profile_manager.get_profiles @@ Node_context.get_profile_ctxt node_ctxt with | Controller profile -- GitLab