Skip to content

Commit e7d677e

Browse files
committed
sample diff by source
1 parent 5779f2b commit e7d677e

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

src/readoutMonitor.cxx

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include <Common/Configuration.h>
1313
#include <InfoLogger/InfoLogger.hxx>
1414
#include <InfoLogger/InfoLoggerMacros.hxx>
15+
#include <map>
1516
#include <signal.h>
1617
#include <zmq.h>
1718
#include "ReadoutStats.h"
@@ -214,7 +215,9 @@ int main(int argc, const char** argv)
214215
sigaction(SIGINT, &signalSettings, NULL);
215216

216217
theLog.log(LogInfoDevel_(3006), "Entering monitoring loop");
217-
double previousSampleTime = 0;
218+
219+
typedef std::map<std::string, double> MapCountersBySource;
220+
MapCountersBySource latestUpdate; // keep copy of latest counter for each source
218221

219222
// header
220223
if ((!cfgRawBytes)&&(broadcastSocket == nullptr)) {
@@ -244,6 +247,20 @@ int main(int argc, const char** argv)
244247
double t = counters->timestamp.load();
245248
double nRfmq = counters->pagesPendingFairMQreleased.load();
246249
double avgTfmq = 0.0;
250+
251+
std::string k = counters->source;
252+
MapCountersBySource::iterator lb = latestUpdate.lower_bound(k);
253+
double previousSampleTime = 0;
254+
255+
if(lb != latestUpdate.end() && !(latestUpdate.key_comp()(k, lb->first))) {
256+
// source was already sampled
257+
previousSampleTime = lb->second;
258+
lb->second = t;
259+
} else {
260+
// this is first sample for this source
261+
latestUpdate.insert(lb, MapCountersBySource::value_type(k, t));
262+
}
263+
247264
if (previousSampleTime > 0) {
248265
double deltaT = t - previousSampleTime;
249266
nRfmq = nRfmq / deltaT;

0 commit comments

Comments
 (0)