You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@quickstep.apache.org by hb...@apache.org on 2016/07/14 05:26:50 UTC

incubator-quickstep git commit: addfeedback now supports static/dynamic cases.

Repository: incubator-quickstep
Updated Branches:
  refs/heads/scheduler++ 03c35b92f -> a8405445b


addfeedback now supports static/dynamic cases.


Project: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/commit/a8405445
Tree: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/tree/a8405445
Diff: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/diff/a8405445

Branch: refs/heads/scheduler++
Commit: a8405445b3928a3e4ee341ccdc86276f34655857
Parents: 03c35b9
Author: Harshad Deshmukh <hb...@apache.org>
Authored: Thu Jul 14 00:26:09 2016 -0500
Committer: Harshad Deshmukh <hb...@apache.org>
Committed: Thu Jul 14 00:26:09 2016 -0500

----------------------------------------------------------------------
 query_execution/Learner.cpp                | 22 ----------------------
 query_execution/Learner.hpp                | 24 ++++++++++++++++++++++--
 query_execution/PriorityPolicyEnforcer.cpp |  6 +++++-
 3 files changed, 27 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/a8405445/query_execution/Learner.cpp
----------------------------------------------------------------------
diff --git a/query_execution/Learner.cpp b/query_execution/Learner.cpp
index 1908f5a..0bedb73 100644
--- a/query_execution/Learner.cpp
+++ b/query_execution/Learner.cpp
@@ -47,28 +47,6 @@ Learner::Learner()
   LOG(INFO) << "Query ID|Operator ID|Worker ID|Time in microseconds|Workorder end timestamp";
 }
 
-void Learner::addCompletionFeedback(
-    const serialization::NormalWorkOrderCompletionMessage
-        &workorder_completion_proto) {
-  const std::size_t query_id = workorder_completion_proto.query_id();
-  DCHECK(isQueryPresent(query_id));
-  ExecutionStats *execution_stats = getExecutionStats(query_id);
-  DCHECK(execution_stats != nullptr);
-  execution_stats->addEntry(
-      workorder_completion_proto.execution_time_in_microseconds(),
-      workorder_completion_proto.operator_index());
-
-  const std::size_t priority_level = getQueryPriorityUnsafe(query_id);
-  if (!hasFeedbackFromAllQueriesInPriorityLevel(priority_level)) {
-    updateFeedbackFromQueriesInPriorityLevel(priority_level);
-  }
-  updateProbabilitiesForQueriesInPriorityLevel(priority_level, query_id);
-  updateProbabilitiesOfAllPriorityLevels();
-  // printProbabilitiesForPriorityLevel(priority_level);
-  printWorkOrderDetails(workorder_completion_proto);
-  printPredictedWorkOrderTimes();
-}
-
 void Learner::updateProbabilitiesForQueriesInPriorityLevel(
     const std::size_t priority_level, const std::size_t query_id) {
   DCHECK(isPriorityLevelPresent(priority_level));

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/a8405445/query_execution/Learner.hpp
----------------------------------------------------------------------
diff --git a/query_execution/Learner.hpp b/query_execution/Learner.hpp
index d90bd63..26daf6e 100644
--- a/query_execution/Learner.hpp
+++ b/query_execution/Learner.hpp
@@ -33,7 +33,7 @@
 
 #include "glog/logging.h"
 
-namespace serialization { class NormalWorkOrderCompletionMessage; }
+// namespace serialization { class NormalWorkOrderCompletionMessage; }
 
 namespace quickstep {
 
@@ -47,9 +47,29 @@ class Learner {
    **/
   Learner();
 
+  template <bool dynamic_probabilities>
   void addCompletionFeedback(
       const serialization::NormalWorkOrderCompletionMessage
-          &workorder_completion_proto);
+          &workorder_completion_proto) {
+    if (dynamic_probabilities) {
+      const std::size_t query_id = workorder_completion_proto.query_id();
+      DCHECK(isQueryPresent(query_id));
+      ExecutionStats *execution_stats = getExecutionStats(query_id);
+      DCHECK(execution_stats != nullptr);
+      execution_stats->addEntry(
+          workorder_completion_proto.execution_time_in_microseconds(),
+          workorder_completion_proto.operator_index());
+
+      const std::size_t priority_level = getQueryPriorityUnsafe(query_id);
+      if (!hasFeedbackFromAllQueriesInPriorityLevel(priority_level)) {
+        updateFeedbackFromQueriesInPriorityLevel(priority_level);
+      }
+      updateProbabilitiesForQueriesInPriorityLevel(priority_level, query_id);
+      updateProbabilitiesOfAllPriorityLevels();
+    }
+    printWorkOrderDetails(workorder_completion_proto);
+    // printPredictedWorkOrderTimes();
+  }
 
   /**
    * @brief Add a query to the Learner.

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/a8405445/query_execution/PriorityPolicyEnforcer.cpp
----------------------------------------------------------------------
diff --git a/query_execution/PriorityPolicyEnforcer.cpp b/query_execution/PriorityPolicyEnforcer.cpp
index 36e2624..479a257 100644
--- a/query_execution/PriorityPolicyEnforcer.cpp
+++ b/query_execution/PriorityPolicyEnforcer.cpp
@@ -107,7 +107,11 @@ void PriorityPolicyEnforcer::processMessage(const TaggedMessage &tagged_message)
       operator_id = proto.operator_index();
       worker_directory_->decrementNumQueuedWorkOrders(
           proto.worker_thread_index());
-      learner_->addCompletionFeedback(proto);
+      if (FLAGS_dynamic_probabilities_in_learner) {
+        learner_->addCompletionFeedback<true>(proto);
+      } else {
+        learner_->addCompletionFeedback<false>(proto);
+      }
       if (profile_individual_workorders_) {
         recordTimeForWorkOrder(proto);
       }