diff --git a/algo/global/Reco.cxx b/algo/global/Reco.cxx index 2a01f59149537eca7f26cf8ec9d363e3fc674703..7a25dcad3685ac7846434fa9431402748052da4c 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 053383c12ad9f551057a2af7ae90d4014a1ad38f..9a44ddffd750f29a17addb93fe3061bc0d9aa9f4 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)