Skip to content
Snippets Groups Projects
Commit 4d73a9c9 authored by Felix Weiglhofer's avatar Felix Weiglhofer
Browse files

cbmreco: Monitor output bytes for all detectors.

parent a145e735
No related branches found
No related tags found
1 merge request!1248cbmreco: Monitor unpacking.
......@@ -97,7 +97,7 @@ RecoResults Reco::Run(const fles::Timeslice& ts)
L_(info) << ">>> Processing TS " << ts.index();
xpu::set<cbm::algo::Params>(Params());
std::vector<CbmStsDigi> digis;
Unpack::resultType unpackResult;
UnpackMonitorData unpackMonitor;
if (Opts().HasStep(Step::Unpack)) {
......@@ -108,9 +108,8 @@ RecoResults Reco::Run(const fles::Timeslice& ts)
break;
default:
case RecoParams::UnpackMode::CPU:
auto result = fUnpack.Run(ts);
digis = result.first.fData.fSts.fDigis;
unpackMonitor = result.second;
unpackResult = fUnpack.Run(ts);
unpackMonitor = unpackResult.second;
break;
}
}
......@@ -121,11 +120,11 @@ RecoResults Reco::Run(const fles::Timeslice& ts)
if (Opts().HasStep(Step::LocalReco) && Opts().HasDetector(fles::Subsystem::STS))
fStsHitFinder(digiTs.fData.fSts.fDigis);
fStsHitFinder(unpackResult.first.fData.fSts.fDigis);
xpu::timings ts_times = xpu::pop_timer();
QueueUnpackerMetrics(ts, unpackMonitor);
QueueUnpackerMetrics(ts, unpackMonitor, unpackResult.first);
PrintTimings(ts_times);
......@@ -162,10 +161,21 @@ void Reco::PrintTimings(xpu::timings& timings)
}
}
void Reco::QueueUnpackerMetrics(const fles::Timeslice& ts, const UnpackMonitorData& monitor)
void Reco::QueueUnpackerMetrics(const fles::Timeslice& ts, const UnpackMonitorData& monitor,
const CbmDigiTimeslice& digis)
{
if (!HasMonitor()) return;
auto sizeBytes = [](const auto& d) { return d.size() * sizeof(d[0]); };
auto& stsDigis = digis.fData.fSts.fDigis;
auto& muchDigis = digis.fData.fMuch.fDigis;
auto& tofDigis = digis.fData.fTof.fDigis;
auto& bmonDigis = digis.fData.fT0.fDigis;
auto& trdDigis = digis.fData.fTrd.fDigis;
auto& trd2dDigis = digis.fData.fTrd2d.fDigis;
auto& richDigis = digis.fData.fRich.fDigis;
GetMonitor().QueueMetric("cbmreco", {{"hostname", fles::system::current_hostname()}},
{
{"unpackBytesInSts", monitor.fNumBytesInSts},
......@@ -175,6 +185,13 @@ void Reco::QueueUnpackerMetrics(const fles::Timeslice& ts, const UnpackMonitorDa
{"unpackBytesInTrd", monitor.fNumBytesInTrd},
{"unpackBytesInTrd2d", monitor.fNumBytesInTrd2d},
{"unpackBytesInRich", monitor.fNumBytesInRich},
{"unpackBytesOutSts", sizeBytes(stsDigis)},
{"unpackBytesOutMuch", sizeBytes(muchDigis)},
{"unpackBytesOutTof", sizeBytes(tofDigis)},
{"unpackBytesOutBmon", sizeBytes(bmonDigis)},
{"unpackBytesOutTrd", sizeBytes(trdDigis)},
{"unpackBytesOutTrd2d", sizeBytes(trd2dDigis)},
{"unpackBytesOutRich", sizeBytes(richDigis)},
{"unpackNumErrInvalidEqId", monitor.fNumErrInvalidEqId},
{"unpackNumErrInvalidSysVer", monitor.fNumErrInvalidSysVer},
});
......
......@@ -49,7 +49,7 @@ namespace cbm::algo
void Validate(const Options& opts);
void QueueUnpackerMetrics(const fles::Timeslice&, const UnpackMonitorData&);
void QueueUnpackerMetrics(const fles::Timeslice&, const UnpackMonitorData&, const CbmDigiTimeslice&);
};
} // namespace cbm::algo
......
......@@ -208,9 +208,9 @@ namespace cbm::algo
// ----------------- Microslice loop ------------------------------------------
template<class Digi, class UnpackAlgo, class MonitorData>
void Unpack::MsLoop(const fles::Timeslice* timeslice, std::map<uint16_t, UnpackAlgo>& algoMap, const uint64_t comp,
const uint16_t eqId, std::vector<Digi>* digis, UnpackMonitorData& monitor,
std::vector<MonitorData>* monitorMs, uint8_t sys_ver)
size_t Unpack::MsLoop(const fles::Timeslice* timeslice, std::map<uint16_t, UnpackAlgo>& algoMap, const uint64_t comp,
const uint16_t eqId, std::vector<Digi>* digis, UnpackMonitorData& monitor,
std::vector<MonitorData>* monitorMs, uint8_t sys_ver)
{
// --- Component log
size_t numBytesInComp = 0;
......@@ -223,13 +223,13 @@ namespace cbm::algo
const auto algoIt = algoMap.find(eqId);
if (algoIt == algoMap.end()) {
monitor.fNumErrInvalidEqId++;
return;
return 0;
}
UnpackAlgo& algo = algoIt->second;
if (timeslice->descriptor(comp, 0).sys_ver != sys_ver) {
monitor.fNumErrInvalidSysVer++;
return;
return 0;
}
const uint64_t numMsInComp = timeslice->num_microslices(comp);
......
......@@ -4,6 +4,7 @@
#include "UnpackChain.h"
using namespace cbm::algo;
using fles::Subsystem;
void UnpackChain::Init()
{
......@@ -17,9 +18,13 @@ Unpack::resultType UnpackChain::Run(const fles::Timeslice& timeslice)
auto& digis = result.first.fData;
L_(info) << "Timeslice contains " << digis.fSts.Size() << " STS Digis";
L_(info) << "Timeslice contains " << digis.fTof.Size() << " TOF Digis";
L_(info) << "Timeslice contains " << digis.fT0.Size() << " T0 Digis";
if (Opts().HasDetector(Subsystem::STS)) L_(info) << "Timeslice contains " << digis.fSts.Size() << " STS Digis";
if (Opts().HasDetector(Subsystem::TOF)) L_(info) << "Timeslice contains " << digis.fTof.Size() << " TOF Digis";
if (Opts().HasDetector(Subsystem::BMON)) L_(info) << "Timeslice contains " << digis.fT0.Size() << " BMON Digis";
if (Opts().HasDetector(Subsystem::MUCH)) L_(info) << "Timeslice contains " << digis.fMuch.Size() << " MUCH Digis";
if (Opts().HasDetector(Subsystem::TRD)) L_(info) << "Timeslice contains " << digis.fTrd.Size() << " TRD Digis";
if (Opts().HasDetector(Subsystem::TRD2D)) L_(info) << "Timeslice contains " << digis.fTrd2d.Size() << " TRD2D Digis";
if (Opts().HasDetector(Subsystem::RICH)) L_(info) << "Timeslice contains " << digis.fRich.Size() << " RICH Digis";
return result;
}
......@@ -43,6 +43,9 @@ public:
/** @brief Clear content **/
void Clear() { fDigis.clear(); }
/** @brief Size */
size_t Size() const { return fDigis.size(); }
// --- ROOT serializer
#ifndef NO_ROOT
ClassDefNV(CbmMuchDigiData, 1);
......
......@@ -43,6 +43,8 @@ public:
/** @brief Clear content **/
void Clear() { fDigis.clear(); }
size_t Size() const { return fDigis.size(); }
// --- ROOT serializer
#ifndef NO_ROOT
ClassDefNV(CbmRichDigiData, 1);
......
......@@ -43,6 +43,8 @@ public:
/** @brief Clear content **/
void Clear() { fDigis.clear(); }
size_t Size() const { return fDigis.size(); }
// --- ROOT serializer
#ifndef NO_ROOT
ClassDefNV(CbmTrdDigiData, 1);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment