Przeglądaj źródła

HPCC-26338 Add Roxie stat for time waiting for agent responses

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 3 lat temu
rodzic
commit
0eadaa12e6
3 zmienionych plików z 11 dodań i 3 usunięć
  1. 7 3
      roxie/ccd/ccdserver.cpp
  2. 2 0
      system/jlib/jstatcodes.h
  3. 2 0
      system/jlib/jstats.cpp

+ 7 - 3
roxie/ccd/ccdserver.cpp

@@ -392,15 +392,15 @@ static const StatisticsMapping keyedJoinStatistics({ StNumServerCacheHits, StNum
                                                     StNumIndexRowsRead, StNumDiskRowsRead, StNumDiskSeeks, StNumDiskAccepted,
                                                     StNumBlobCacheHits, StNumLeafCacheHits, StNumNodeCacheHits,
                                                     StNumBlobCacheAdds, StNumLeafCacheAdds, StNumNodeCacheAdds,
-                                                    StNumDiskRejected, StSizeAgentReply}, joinStatistics);
+                                                    StNumDiskRejected, StSizeAgentReply, StTimeAgentWait}, joinStatistics);
 static const StatisticsMapping indexStatistics({StNumServerCacheHits, StNumIndexSeeks, StNumIndexScans, StNumIndexWildSeeks,
                                                 StNumIndexSkips, StNumIndexNullSkips, StNumIndexMerges, StNumIndexMergeCompares,
                                                 StNumPreFiltered, StNumPostFiltered, StNumIndexAccepted, StNumIndexRejected,
                                                 StNumBlobCacheHits, StNumLeafCacheHits, StNumNodeCacheHits,
                                                 StNumBlobCacheAdds, StNumLeafCacheAdds, StNumNodeCacheAdds,
-                                                StNumIndexRowsRead, StSizeAgentReply}, actStatistics);
+                                                StNumIndexRowsRead, StSizeAgentReply, StTimeAgentWait}, actStatistics);
 static const StatisticsMapping diskStatistics({StNumServerCacheHits, StNumDiskRowsRead, StNumDiskSeeks, StNumDiskAccepted,
-                                               StNumDiskRejected, StSizeAgentReply }, actStatistics);
+                                               StNumDiskRejected, StSizeAgentReply, StTimeAgentWait }, actStatistics);
 static const StatisticsMapping soapStatistics({ StTimeSoapcall }, actStatistics);
 static const StatisticsMapping groupStatistics({ StNumGroups, StNumGroupMax }, actStatistics);
 static const StatisticsMapping sortStatistics({ StTimeSortElapsed }, actStatistics);
@@ -3957,6 +3957,7 @@ public:
     mutable CriticalSection buffersCrit;
     unsigned processed;
     cycle_t totalCycles;
+    cycle_t unpackerWaitCycles;
     bool timeActivities;
 
 //private:   //vc6 doesn't like this being private yet accessed by nested class...
@@ -4086,6 +4087,7 @@ public:
         sentSequence = 0;
         resendSequence = 0;
         totalCycles = 0;
+        unpackerWaitCycles = 0;
         bufferStream.setown(createMemoryBufferSerialStream(tempRowBuffer));
         rowSource.setStream(bufferStream);
         timeActivities = defaultTimeActivities;
@@ -4406,6 +4408,7 @@ public:
         if (mc)
         {
             activity.noteStatistic(StSizeAgentReply, mc->queryBytesReceived());
+            activity.noteStatistic(StTimeAgentWait, cycle_to_nanosec(unpackerWaitCycles));
             if (ctx)
                 ctx->addAgentsReplyLen(mc->queryBytesReceived(), mc->queryDuplicates(), mc->queryResends());
         }
@@ -4594,6 +4597,7 @@ public:
     void getNextUnpacker()
     {
         mu.clear();
+        SimpleActivityTimer t(unpackerWaitCycles, timeActivities);
         unsigned ctxTraceLevel = activity.queryLogCtx().queryTraceLevel();
         unsigned timeout = remoteId.isSLAPriority() ? slaTimeout : (remoteId.isHighPriority() ? highTimeout : lowTimeout);
         unsigned checkInterval = activity.queryContext()->checkInterval();

+ 2 - 0
system/jlib/jstatcodes.h

@@ -236,6 +236,8 @@ enum StatisticKind
     StCycleBlockedCycles,
     StCostExecute,
     StSizeAgentReply,
+    StTimeAgentWait,
+    StCycleAgentWaitCycles,
     StMax,
 
     //For any quantity there is potentially the following variants.

+ 2 - 0
system/jlib/jstats.cpp

@@ -957,6 +957,8 @@ static const StatisticMeta statsMetaData[StMax] = {
     { CYCLESTAT(Blocked) },
     { STAT(Cost, Execute, SMeasureCost) },
     { SIZESTAT(AgentReply) },
+    { TIMESTAT(AgentWait) },
+    { CYCLESTAT(AgentWait) },
 };
 
 //Is a 0 value likely, and useful to be reported if it does happen to be zero?