amrishlal commented on a change in pull request #7568:
URL: https://github.com/apache/pinot/pull/7568#discussion_r758809219



##########
File path: 
pinot-core/src/main/java/org/apache/pinot/core/operator/InstanceResponseOperator.java
##########
@@ -113,9 +116,34 @@ private IntermediateResultsBlock getCombinedResults() {
     }
   }
 
-  @Override
-  public String getOperatorName() {
-    return OPERATOR_NAME;
+  /*
+   * Calculate totalThreadCpuTimeNs based on totalWallClockTimeNs, 
multipleThreadCpuTimeNs, and numServerThreads.
+   * System activities time such as OS paging, GC, context switching are not 
captured by totalThreadCpuTimeNs.
+   * For example, let's divide query processing into 4 phases:
+   * - phase 1: single thread preparing. Time used: T1
+   * - phase 2: N threads processing segments in parallel, each thread use 
time T2
+   * - phase 3: GC/OS paging. Time used: T3
+   * - phase 4: single thread merging intermediate results blocks. Time used: 
T4
+   *
+   * Then we have following equations:
+   * - singleThreadCpuTimeNs = T1 + T4
+   * - multipleThreadCpuTimeNs = T2 * N
+   * - totalWallClockTimeNs = T1 + T2 + T3 + T4 = singleThreadCpuTimeNs + T2 + 
T3
+   * - totalThreadCpuTimeNsWithoutSystemActivities = T1 + T2 * N + T4 = 
singleThreadCpuTimeNs + T2 * N
+   * - systemActivitiesTimeNs = T3 = (totalWallClockTimeNs - 
totalThreadCpuTimeNsWithoutSystemActivities) + T2 * (N - 1)
+   *
+   * Thus:
+   * totalThreadCpuTimeNsWithSystemActivities = 
totalThreadCpuTimeNsWithoutSystemActivities + systemActivitiesTimeNs
+   * = totalThreadCpuTimeNsWithoutSystemActivities + T3
+   * = totalThreadCpuTimeNsWithoutSystemActivities + (totalWallClockTimeNs -
+   * totalThreadCpuTimeNsWithoutSystemActivities) + T2 * (N - 1)
+   * = totalWallClockTimeNs + T2 * (N - 1)
+   * = totalWallClockTimeNs + (multipleThreadCpuTimeNs / N) * (N - 1)
+   */
+  public static long calTotalThreadCpuTimeNs(long totalWallClockTimeNs, long 
multipleThreadCpuTimeNs,

Review comment:
       Seems like a merge conflict issue. Will fix.

##########
File path: 
pinot-core/src/main/java/org/apache/pinot/core/operator/filter/predicate/PredicateEvaluator.java
##########
@@ -28,6 +28,16 @@
    * APIs for both dictionary based and raw value based predicate evaluator
    */
 
+  /**
+   * Set the predicate
+   */
+  void setPredicate(Predicate predicate);

Review comment:
       I see what you mean, but It is used in line 107 of 
`PredicateEvaluator.java` to pass predicate into `PredicateEvaluator`. Let me 
know if you have a better way to doing this.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to