Jelajahi Sumber

Merge pull request #13920 from shamser/issue24346

HPCC-24346 Generate StNumIndexWildSeeks for Thor

Reviewed-By: Jake Smith <jake.smith@lexisnexis.com>
Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 5 tahun lalu
induk
melakukan
9bfbfea116

+ 1 - 0
fs/dafsclient/rmtfile.cpp

@@ -2519,6 +2519,7 @@ public:
     virtual unsigned querySeeks() const override { return 0; } // not sure how best to handle these, perhaps should log/record somewhere on server-side
     virtual unsigned queryScans() const override { return 0; }
     virtual unsigned querySkips() const override { return 0; }
+    virtual unsigned queryWildSeeks() const override { return 0; }
 };
 
 

+ 6 - 0
system/jhtree/jhtree.cpp

@@ -384,6 +384,11 @@ public:
         stats.reset();
     }
 
+    virtual unsigned queryWildSeeks() const
+    {
+        return stats.wildseeks;
+    }
+
     void setKey(IKeyIndexBase * _key)
     {
         ::Release(keyCursor);
@@ -3026,6 +3031,7 @@ extern jhtree_decl IIndexLookup *createIndexLookup(IKeyManager *keyManager)
         virtual unsigned querySeeks() const override { return keyManager->querySeeks(); }
         virtual unsigned queryScans() const override { return keyManager->queryScans(); }
         virtual unsigned querySkips() const override { return keyManager->querySkips(); }
+        virtual unsigned queryWildSeeks() const override { return keyManager->queryWildSeeks(); }
     };
     return new CIndexLookup(keyManager);
 }

+ 2 - 0
system/jhtree/jhtree.hpp

@@ -241,6 +241,7 @@ interface IIndexLookup : extends IInterface // similar to a small subset of IKey
     virtual unsigned querySeeks() const = 0;
     virtual unsigned queryScans() const = 0;
     virtual unsigned querySkips() const = 0;
+    virtual unsigned queryWildSeeks() const = 0;
 };
 
 interface IKeyManager : public IInterface, extends IIndexReadContext
@@ -264,6 +265,7 @@ interface IKeyManager : public IInterface, extends IIndexReadContext
     virtual unsigned querySeeks() const = 0;
     virtual unsigned queryScans() const = 0;
     virtual unsigned querySkips() const = 0;
+    virtual unsigned queryWildSeeks() const = 0;
     virtual const byte *loadBlob(unsigned __int64 blobid, size32_t &blobsize) = 0;
     virtual void releaseBlobs() = 0;
     virtual void resetCounts() = 0;

+ 3 - 1
thorlcr/activities/indexread/thindexreadslave.cpp

@@ -81,17 +81,19 @@ protected:
     {
         CRuntimeStatisticCollection &stats;
         StatProvider &statProvider;
-        unsigned __int64 startSeeks = 0, startScans = 0;
+        unsigned __int64 startSeeks = 0, startScans = 0, startWildSeeks = 0;
     public:
         inline CCaptureIndexStats(CRuntimeStatisticCollection &_stats, StatProvider &_statProvider) : stats(_stats), statProvider(_statProvider)
         {
             startSeeks = statProvider.querySeeks();
             startScans = statProvider.queryScans();
+            startWildSeeks = statProvider.queryWildSeeks();
         }
         inline ~CCaptureIndexStats()
         {
             stats.mergeStatistic(StNumIndexSeeks, statProvider.querySeeks() - startSeeks);
             stats.mergeStatistic(StNumIndexScans, statProvider.queryScans() - startScans);
+            stats.mergeStatistic(StNumIndexWildSeeks, statProvider.queryWildSeeks() - startWildSeeks);
         }
     };
 

+ 5 - 2
thorlcr/activities/keyedjoin/thkeyedjoinslave.cpp

@@ -1258,10 +1258,12 @@ class CKeyedJoinSlave : public CSlaveActivity, implements IJoinProcessor, implem
         {
             unsigned __int64 startSeeks = keyManager->querySeeks();
             unsigned __int64 startScans = keyManager->queryScans();
+            unsigned __int64 startWildSeeks = keyManager->queryWildSeeks();
             auto onScopeExitFunc = [&]()
             {
                 activity.stats.sumStatistic(StNumIndexSeeks, keyManager->querySeeks()-startSeeks);
                 activity.stats.sumStatistic(StNumIndexScans, keyManager->queryScans()-startScans);
+                activity.stats.sumStatistic(StNumIndexWildSeeks, keyManager->queryWildSeeks()-startWildSeeks);
             };
             COnScopeExit scoped(onScopeExitFunc);
             for (unsigned r=0; r<processing.ordinality() && !stopped; r++)
@@ -1676,10 +1678,11 @@ class CKeyedJoinSlave : public CSlaveActivity, implements IJoinProcessor, implem
                     }
                     joinGroup->decPending(); // Every queued lookup row triggered an inc., this is the corresponding dec.
                 }
-                unsigned __int64 seeks, scans;
-                mb.read(seeks).read(scans);
+                unsigned __int64 seeks, scans, wildseeks;
+                mb.read(seeks).read(scans).read(wildseeks);
                 activity.stats.sumStatistic(StNumIndexSeeks, seeks);
                 activity.stats.sumStatistic(StNumIndexScans, scans);
+                activity.stats.sumStatistic(StNumIndexWildSeeks, wildseeks);
                 if (received == numRows)
                     break;
             }

+ 2 - 0
thorlcr/slave/slavmain.cpp

@@ -763,6 +763,7 @@ class CKJService : public CSimpleInterfaceOf<IKJService>, implements IThreaded,
                 unsigned rowStart = 0;
                 unsigned __int64 startSeeks = kmc->queryKeyManager()->querySeeks();
                 unsigned __int64 startScans = kmc->queryKeyManager()->queryScans();
+                unsigned __int64 startWildSeeks = kmc->queryKeyManager()->queryWildSeeks();
                 while (!abortSoon)
                 {
                     OwnedConstThorRow row = getRowClear(rowNum++);
@@ -774,6 +775,7 @@ class CKJService : public CSimpleInterfaceOf<IKJService>, implements IThreaded,
                         countMarker.write(rowNum-rowStart);
                         replyMb.append(kmc->queryKeyManager()->querySeeks()-startSeeks);
                         replyMb.append(kmc->queryKeyManager()->queryScans()-startScans);
+                        replyMb.append(kmc->queryKeyManager()->queryWildSeeks()-startWildSeeks);
                         if (activityCtx->useMessageCompression())
                         {
                             fastLZCompressToBuffer(replyMsg, tmpMB.length(), tmpMB.toByteArray());

+ 2 - 2
thorlcr/thorutil/thormisc.cpp

@@ -75,9 +75,9 @@ const StatisticsMapping spillStatistics({StTimeSpillElapsed, StTimeSortElapsed,
 const StatisticsMapping basicActivityStatistics({StTimeLocalExecute, StTimeBlocked});
 const StatisticsMapping groupActivityStatistics({StNumGroups, StNumGroupMax}, basicActivityStatistics);
 const StatisticsMapping hashJoinActivityStatistics({StNumLeftRows, StNumRightRows}, basicActivityStatistics);
-const StatisticsMapping indexReadActivityStatistics({StNumRowsProcessed, StNumIndexSeeks, StNumIndexScans, StNumPostFiltered}, basicActivityStatistics);
+const StatisticsMapping indexReadActivityStatistics({StNumRowsProcessed, StNumIndexSeeks, StNumIndexScans, StNumPostFiltered, StNumIndexWildSeeks}, basicActivityStatistics);
 const StatisticsMapping indexWriteActivityStatistics({StPerReplicated}, basicActivityStatistics);
-const StatisticsMapping keyedJoinActivityStatistics({ StNumIndexSeeks, StNumIndexScans, StNumIndexAccepted, StNumPostFiltered, StNumPreFiltered, StNumDiskSeeks, StNumDiskAccepted, StNumDiskRejected }, basicActivityStatistics);
+const StatisticsMapping keyedJoinActivityStatistics({ StNumIndexSeeks, StNumIndexScans, StNumIndexAccepted, StNumPostFiltered, StNumPreFiltered, StNumDiskSeeks, StNumDiskAccepted, StNumDiskRejected, StNumIndexWildSeeks}, basicActivityStatistics);
 const StatisticsMapping loopActivityStatistics({StNumIterations}, basicActivityStatistics);
 const StatisticsMapping lookupJoinActivityStatistics({StNumSmartJoinSlavesDegradedToStd, StNumSmartJoinDegradedToLocal}, basicActivityStatistics);
 const StatisticsMapping joinActivityStatistics({StNumLeftRows, StNumRightRows}, basicActivityStatistics, spillStatistics);