Skip to content

Commit 6fd377b

Browse files
committed
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.
1 parent 3db6cca commit 6fd377b

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

Framework/AnalysisSupport/src/AODWriterHelpers.cxx

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@
2121
#include "Framework/TableConsumer.h"
2222
#include "Framework/DataOutputDirector.h"
2323
#include "Framework/TableTreeHelpers.h"
24+
#include "Framework/Monitoring.h"
2425

26+
#include <Monitoring/Monitoring.h>
2527
#include <TFile.h>
2628
#include <TFile.h>
2729
#include <TTree.h>
@@ -235,6 +237,7 @@ AlgorithmSpec AODWriterHelpers::getOutputTTreeWriter(ConfigContext const& ctx)
235237

236238
AlgorithmSpec AODWriterHelpers::getOutputObjHistWriter(ConfigContext const& ctx)
237239
{
240+
using namespace monitoring;
238241
auto& ac = ctx.services().get<AnalysisContext>();
239242
auto tskmap = ac.outTskMap;
240243
auto objmap = ac.outObjHistMap;
@@ -269,7 +272,7 @@ AlgorithmSpec AODWriterHelpers::getOutputObjHistWriter(ConfigContext const& ctx)
269272

270273
callbacks.set<CallbackService::Id::EndOfStream>(endofdatacb);
271274
return [inputObjects, objmap, tskmap](ProcessingContext& pc) mutable -> void {
272-
auto mergePart = [&inputObjects, &objmap, &tskmap](DataRef const& ref) {
275+
auto mergePart = [&inputObjects, &objmap, &tskmap, &pc](DataRef const& ref) {
273276
if (!ref.header) {
274277
LOG(error) << "Header not found";
275278
return;
@@ -381,7 +384,13 @@ AlgorithmSpec AODWriterHelpers::getOutputObjHistWriter(ConfigContext const& ctx)
381384
if (object->InheritsFrom(TList::Class())) {
382385
writeListToFile(static_cast<TList*>(object), parentDir->mkdir(object->GetName(), object->GetName(), true));
383386
} else {
384-
parentDir->WriteObjectAny(object, object->Class(), object->GetName());
387+
int objSize = parentDir->WriteObjectAny(object, object->Class(), object->GetName());
388+
static int maxSizeWritten = 0;
389+
if (objSize > maxSizeWritten) {
390+
auto& monitoring = pc.services().get<Monitoring>();
391+
maxSizeWritten = objSize;
392+
monitoring.send(Metric{fmt::format("{}/{}:{}", object->ClassName(), object->GetName(), objSize), "aod-largest-object-written"}.addTag(tags::Key::Subsystem, tags::Value::DPL));
393+
}
385394
auto* written = list->Remove(object);
386395
delete written;
387396
}

Framework/Core/src/runDataProcessing.cxx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1233,6 +1233,7 @@ std::vector<std::regex> getDumpableMetrics()
12331233
dumpableMetrics.emplace_back("^aod-bytes-read-uncompressed$");
12341234
dumpableMetrics.emplace_back("^aod-bytes-read-compressed$");
12351235
dumpableMetrics.emplace_back("^aod-file-read-info$");
1236+
dumpableMetrics.emplace_back("^aod-largest-object-written$");
12361237
dumpableMetrics.emplace_back("^table-bytes-.*");
12371238
dumpableMetrics.emplace_back("^total-timeframes.*");
12381239
dumpableMetrics.emplace_back("^device_state.*");

0 commit comments

Comments
 (0)