From 2c5c311b85a0fb7e9e2c7b35d9b43145cc785224 Mon Sep 17 00:00:00 2001 From: Felix Weiglhofer <weiglhofer@fias.uni-frankfurt.de> Date: Tue, 11 Jul 2023 23:07:41 +0200 Subject: [PATCH] cbmreco: Monitor unpack expansion factor. --- algo/global/Reco.cxx | 19 ++++++++++++++++++- algo/unpack/Unpack.cxx | 1 + 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/algo/global/Reco.cxx b/algo/global/Reco.cxx index 2a01f59149..7a25dcad36 100644 --- a/algo/global/Reco.cxx +++ b/algo/global/Reco.cxx @@ -130,7 +130,7 @@ RecoResults Reco::Run(const fles::Timeslice& ts) RecoResults results(RecoResultsDescriptor(Opts(), Params())); CbmDigiEvent ev; - ev.fData = std::move(digiTs.fData); + ev.fData = std::move(unpackResult.first.fData); results.Events().emplace_back(std::move(ev)); return results; @@ -167,6 +167,9 @@ void Reco::QueueUnpackerMetrics(const fles::Timeslice& ts, const UnpackMonitorDa if (!HasMonitor()) return; auto sizeBytes = [](const auto& d) { return d.size() * sizeof(d[0]); }; + auto expansionFactor = [](size_t x, const auto& d) { + return d.size() > 0 ? static_cast<double>(sizeBytes(d)) / x : 0.0; + }; auto& stsDigis = digis.fData.fSts.fDigis; auto& muchDigis = digis.fData.fMuch.fDigis; @@ -176,6 +179,11 @@ void Reco::QueueUnpackerMetrics(const fles::Timeslice& ts, const UnpackMonitorDa auto& trd2dDigis = digis.fData.fTrd2d.fDigis; auto& richDigis = digis.fData.fRich.fDigis; + size_t nDigisTotal = stsDigis.size() + muchDigis.size() + tofDigis.size() + bmonDigis.size() + trdDigis.size() + + trd2dDigis.size() + richDigis.size(); + + double totalExpansionFactor = static_cast<double>(nDigisTotal) / monitor.fNumBytes; + GetMonitor().QueueMetric("cbmreco", {{"hostname", fles::system::current_hostname()}}, { {"unpackBytesInSts", monitor.fNumBytesInSts}, @@ -192,6 +200,15 @@ void Reco::QueueUnpackerMetrics(const fles::Timeslice& ts, const UnpackMonitorDa {"unpackBytesOutTrd", sizeBytes(trdDigis)}, {"unpackBytesOutTrd2d", sizeBytes(trd2dDigis)}, {"unpackBytesOutRich", sizeBytes(richDigis)}, + {"unpackExpansionFactorSts", expansionFactor(monitor.fNumBytesInSts, stsDigis)}, + {"unpackExpansionFactorMuch", expansionFactor(monitor.fNumBytesInMuch, muchDigis)}, + {"unpackExpansionFactorTof", expansionFactor(monitor.fNumBytesInTof, tofDigis)}, + {"unpackExpansionFactorBmon", expansionFactor(monitor.fNumBytesInBmon, bmonDigis)}, + {"unpackExpansionFactorTrd", expansionFactor(monitor.fNumBytesInTrd, trdDigis)}, + {"unpackExpansionFactorTrd2d", expansionFactor(monitor.fNumBytesInTrd2d, trd2dDigis)}, + {"unpackExpansionFactorRich", expansionFactor(monitor.fNumBytesInRich, richDigis)}, + {"unpackExpansionFactorTotal", totalExpansionFactor}, + {"unpackNumCompUsed", monitor.fNumCompUsed}, {"unpackNumErrInvalidEqId", monitor.fNumErrInvalidEqId}, {"unpackNumErrInvalidSysVer", monitor.fNumErrInvalidSysVer}, }); diff --git a/algo/unpack/Unpack.cxx b/algo/unpack/Unpack.cxx index 053383c12a..9a44ddffd7 100644 --- a/algo/unpack/Unpack.cxx +++ b/algo/unpack/Unpack.cxx @@ -170,6 +170,7 @@ namespace cbm::algo std::vector<Monitor> monitor(numMs); // unpacking monitoring data per microslice xpu::t_add_bytes(sizeBytes); + genericMonitor.fNumBytes += sizeBytes; xpu::push_timer("Unpack"); #pragma omp parallel for schedule(dynamic) -- GitLab