@@ -124,16 +124,27 @@ class ConsumerStats : public Consumer
124124 snapshot.timestamp = time (NULL );
125125 gReadoutStats .counters .pagesPendingFairMQtime = 0 ;
126126 gReadoutStats .counters .pagesPendingFairMQreleased = 0 ;
127+ gReadoutStats .counters .ddBytesCopied = 0 ;
128+ gReadoutStats .counters .ddHBFRepacked = 0 ;
127129 gReadoutStats .counters .notify ++;
128130 unsigned long long nRfmq = snapshot.pagesPendingFairMQreleased .load ();
129131 int tfidfmq = (int )snapshot.timeframeIdFairMQ .load ();
130132 double avgTfmq = 0.0 ;
131133 double rRfmq = 0.0 ;
134+ double ddBytesCopiedRate = 0 ; // copy rate in MB/s
135+ double ddHBFRepackedRate = 0 ; // repack rate in Hz
136+ double ddMemoryEfficiency = 0 ; // memory efficiency in %
137+
132138 if (nRfmq) {
133139 avgTfmq = (snapshot.pagesPendingFairMQtime .load () / nRfmq) / (1000000.0 );
134140 }
135141 if (deltaT > 0 ) {
136142 rRfmq = nRfmq / deltaT;
143+ ddBytesCopiedRate = snapshot.ddBytesCopied / (1024 *1024 *deltaT);
144+ ddHBFRepackedRate = snapshot.ddHBFRepacked / deltaT;
145+ }
146+ if ((snapshot.ddPayloadPendingBytes > 0 ) && (snapshot.ddMemoryPendingBytes > 0 )) {
147+ ddMemoryEfficiency = snapshot.ddPayloadPendingBytes * 100.0 / snapshot.ddMemoryPendingBytes ;
137148 }
138149
139150 if (monitoringEnabled) {
@@ -156,6 +167,11 @@ class ConsumerStats : public Consumer
156167 sendMetricNoException ({ rRfmq, " readout.stfbMemoryPagesReleaseRate" });
157168 sendMetricNoException ({ avgTfmq, " readout.stfbMemoryPagesReleaseLatency" });
158169 sendMetricNoException ({ tfidfmq, " readout.stfbTimeframeId" });
170+ sendMetricNoException ({ ddBytesCopiedRate, " readout.stfbHBFCopyRate" });
171+ sendMetricNoException ({ ddHBFRepackedRate, " readout.stfbHBFRepackedRate" });
172+ sendMetricNoException ({ ddMemoryEfficiency, " readout.stfbMemoryEfficiency" });
173+ sendMetricNoException ({ snapshot.ddPayloadPendingBytes , " readout.stfbDataBytesLocked" });
174+ sendMetricNoException ({ snapshot.ddMemoryPendingBytes , " readout.stfbMemoryBytesLocked" });
159175
160176 // buffer stats
161177 for (int i = 0 ; i < ReadoutStatsMaxItems; i++) {
@@ -175,9 +191,12 @@ class ConsumerStats : public Consumer
175191
176192 if (consoleUpdate) {
177193 if (deltaT > 0 ) {
178- theLog.log (LogInfoOps_ (3003 ), " Last interval (%.2fs): blocksRx=%llu, block rate=%.2lf, bytesRx=%llu, rate=%s" , deltaT, (unsigned long long )counterBlocksDiff, counterBlocksDiff / deltaT, (unsigned long long )counterBytesDiff, NumberOfBytesToString (counterBytesDiff * 8 / deltaT, " b/s" , 1000 ).c_str ());
194+ theLog.log (LogInfoOps_ (3003 ), " Last interval (%.2fs): blocksRx=%llu, block rate=%.2lf, block size = %.1lfkB, bytesRx=%llu, rate=%s" , deltaT, (unsigned long long )counterBlocksDiff, counterBlocksDiff / deltaT, counterBytesDiff / ( 1024.0 *counterBlocksDiff) , (unsigned long long )counterBytesDiff, NumberOfBytesToString (counterBytesDiff * 8 / deltaT, " b/s" , 1000 ).c_str ());
179195 if (gReadoutStats .isFairMQ ) {
180196 theLog.log (LogInfoOps_ (3003 ), " STFB locked pages: current=%llu, released = %llu, release rate=%.2lf Hz, latency=%.3lf s, current TF = %d" , (unsigned long long ) snapshot.pagesPendingFairMQ .load (), nRfmq, rRfmq, avgTfmq, tfidfmq );
197+ theLog.log (LogInfoOps_ (3003 ), " STFB HBF repacking = %.1lf Hz, copy overhead = %.1lf MB/s" , ddHBFRepackedRate, ddBytesCopiedRate);
198+ theLog.log (LogInfoOps_ (3003 ), " STFB memory efficiency = %.1lf %%, data buffered = %.1lf MB, real memory used %.1lf MB" ,
199+ ddMemoryEfficiency, snapshot.ddPayloadPendingBytes / (1024.0 *1024.0 ), snapshot.ddMemoryPendingBytes / (1024.0 *1024.0 ) );
181200 }
182201 std::string bufferReport;
183202 for (int i = 0 ; i < ReadoutStatsMaxItems; i++) {
0 commit comments