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);
}