From c693d097cb27566f9df8626972a8b2cfb3c99e73 Mon Sep 17 00:00:00 2001 From: Giulio Eulisse <10544+ktf@users.noreply.github.com> Date: Fri, 29 Aug 2025 14:05:56 +0200 Subject: [PATCH] DPL: initial metric to debug size of the histograms / objects being written I am not sure this is exactly what we want, but it should be good enough for now. --- Framework/AnalysisSupport/src/AODWriterHelpers.cxx | 13 +++++++++++-- Framework/Core/src/runDataProcessing.cxx | 1 + 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/Framework/AnalysisSupport/src/AODWriterHelpers.cxx b/Framework/AnalysisSupport/src/AODWriterHelpers.cxx index 40d2189ea96d0..475e65bf9212b 100644 --- a/Framework/AnalysisSupport/src/AODWriterHelpers.cxx +++ b/Framework/AnalysisSupport/src/AODWriterHelpers.cxx @@ -21,7 +21,9 @@ #include "Framework/TableConsumer.h" #include "Framework/DataOutputDirector.h" #include "Framework/TableTreeHelpers.h" +#include "Framework/Monitoring.h" +#include #include #include #include @@ -235,6 +237,7 @@ AlgorithmSpec AODWriterHelpers::getOutputTTreeWriter(ConfigContext const& ctx) AlgorithmSpec AODWriterHelpers::getOutputObjHistWriter(ConfigContext const& ctx) { + using namespace monitoring; auto& ac = ctx.services().get(); auto tskmap = ac.outTskMap; auto objmap = ac.outObjHistMap; @@ -269,7 +272,7 @@ AlgorithmSpec AODWriterHelpers::getOutputObjHistWriter(ConfigContext const& ctx) callbacks.set(endofdatacb); return [inputObjects, objmap, tskmap](ProcessingContext& pc) mutable -> void { - auto mergePart = [&inputObjects, &objmap, &tskmap](DataRef const& ref) { + auto mergePart = [&inputObjects, &objmap, &tskmap, &pc](DataRef const& ref) { if (!ref.header) { LOG(error) << "Header not found"; return; @@ -381,7 +384,13 @@ AlgorithmSpec AODWriterHelpers::getOutputObjHistWriter(ConfigContext const& ctx) if (object->InheritsFrom(TList::Class())) { writeListToFile(static_cast(object), parentDir->mkdir(object->GetName(), object->GetName(), true)); } else { - parentDir->WriteObjectAny(object, object->Class(), object->GetName()); + int objSize = parentDir->WriteObjectAny(object, object->Class(), object->GetName()); + static int maxSizeWritten = 0; + if (objSize > maxSizeWritten) { + auto& monitoring = pc.services().get(); + maxSizeWritten = objSize; + monitoring.send(Metric{fmt::format("{}/{}:{}", object->ClassName(), object->GetName(), objSize), "aod-largest-object-written"}.addTag(tags::Key::Subsystem, tags::Value::DPL)); + } auto* written = list->Remove(object); delete written; } diff --git a/Framework/Core/src/runDataProcessing.cxx b/Framework/Core/src/runDataProcessing.cxx index 59bacc67fef31..5fe4792daa32a 100644 --- a/Framework/Core/src/runDataProcessing.cxx +++ b/Framework/Core/src/runDataProcessing.cxx @@ -1233,6 +1233,7 @@ std::vector getDumpableMetrics() dumpableMetrics.emplace_back("^aod-bytes-read-uncompressed$"); dumpableMetrics.emplace_back("^aod-bytes-read-compressed$"); dumpableMetrics.emplace_back("^aod-file-read-info$"); + dumpableMetrics.emplace_back("^aod-largest-object-written$"); dumpableMetrics.emplace_back("^table-bytes-.*"); dumpableMetrics.emplace_back("^total-timeframes.*"); dumpableMetrics.emplace_back("^device_state.*");