diff --git a/algo/global/Reco.cxx b/algo/global/Reco.cxx index 7a25dcad3685ac7846434fa9431402748052da4c..3dad3a6a01bebf3e7fd94c4a8e750c97653bca1c 100644 --- a/algo/global/Reco.cxx +++ b/algo/global/Reco.cxx @@ -166,8 +166,8 @@ 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) { + 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; }; @@ -186,6 +186,7 @@ void Reco::QueueUnpackerMetrics(const fles::Timeslice& ts, const UnpackMonitorDa GetMonitor().QueueMetric("cbmreco", {{"hostname", fles::system::current_hostname()}}, { + {"unpackTimeTotal", monitor.fTimeUnpack}, {"unpackBytesInSts", monitor.fNumBytesInSts}, {"unpackBytesInMuch", monitor.fNumBytesInMuch}, {"unpackBytesInTof", monitor.fNumBytesInTof}, diff --git a/algo/unpack/Unpack.cxx b/algo/unpack/Unpack.cxx index 9a44ddffd750f29a17addb93fe3061bc0d9aa9f4..f1cca939e7fa5efb203e2b3e11c1c8375ebdfc0c 100644 --- a/algo/unpack/Unpack.cxx +++ b/algo/unpack/Unpack.cxx @@ -20,7 +20,7 @@ namespace cbm::algo // ----- Execution ------------------------------------------------------- Unpack::resultType Unpack::operator()(const fles::Timeslice* timeslice) { - xpu::scoped_timer t0("Unpack"); + xpu::push_timer("Unpack"); // --- Output data resultType result = {}; @@ -94,7 +94,7 @@ namespace cbm::algo // --- Sorting of output digis. Is required by both digi trigger and event builder. - xpu::scoped_timer t2("Sort"); + xpu::push_timer("Sort"); auto& digiData = digiTs.fData; DoSort(digiData.fSts.fDigis); DoSort(digiData.fMuch.fDigis); @@ -103,6 +103,11 @@ namespace cbm::algo DoSort(digiData.fTrd.fDigis); DoSort(digiData.fTrd2d.fDigis); DoSort(digiData.fRich.fDigis); + xpu::pop_timer(); + + xpu::timings timings = xpu::pop_timer(); + + monitor.fTimeUnpack = timings.wall(); return result; } diff --git a/algo/unpack/Unpack.h b/algo/unpack/Unpack.h index 676af4fcb4e08f036286ab1b9e0938f6cd6b9066..13329f07a39aad0a7624d3d0c971c522ce5d309e 100644 --- a/algo/unpack/Unpack.h +++ b/algo/unpack/Unpack.h @@ -59,6 +59,7 @@ namespace cbm::algo size_t fNumCompUsed = 0; size_t fNumErrInvalidEqId = 0; size_t fNumErrInvalidSysVer = 0; + double fTimeUnpack = 0; std::string print() const { std::stringstream ss;