You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by bm...@apache.org on 2018/09/27 18:59:47 UTC
[mesos] 01/10: Simplified the weight lookup logic in the sorters.
This is an automated email from the ASF dual-hosted git repository.
bmahler pushed a commit to branch 1.7.x
in repository https://gitbox.apache.org/repos/asf/mesos.git
commit 6b29bd67c21f2df13d19fd52f52e1a8d5069ab9d
Author: Benjamin Mahler <bm...@apache.org>
AuthorDate: Sun Sep 16 13:05:43 2018 -0700
Simplified the weight lookup logic in the sorters.
Review: https://reviews.apache.org/r/68729
---
src/master/allocator/sorter/drf/sorter.cpp | 16 +++++++---------
src/master/allocator/sorter/drf/sorter.hpp | 2 +-
src/master/allocator/sorter/random/sorter.cpp | 16 +++++++---------
src/master/allocator/sorter/random/sorter.hpp | 2 +-
4 files changed, 16 insertions(+), 20 deletions(-)
diff --git a/src/master/allocator/sorter/drf/sorter.cpp b/src/master/allocator/sorter/drf/sorter.cpp
index 07e5482..aa925c4 100644
--- a/src/master/allocator/sorter/drf/sorter.cpp
+++ b/src/master/allocator/sorter/drf/sorter.cpp
@@ -615,19 +615,17 @@ double DRFSorter::calculateShare(const Node* node) const
}
}
- return share / findWeight(node);
+ return share / getWeight(node);
}
-double DRFSorter::findWeight(const Node* node) const
+double DRFSorter::getWeight(const Node* node) const
{
- Option<double> weight = weights.get(node->path);
-
- if (weight.isNone()) {
- return 1.0;
- }
-
- return weight.get();
+ // TODO(bmahler): It's expensive to have to hash the complete
+ // role path and re-lookup the weight each time we calculate
+ // the share, consider storing the weight directly in the
+ // node struct.
+ return weights.get(node->path).getOrElse(1.0);
}
diff --git a/src/master/allocator/sorter/drf/sorter.hpp b/src/master/allocator/sorter/drf/sorter.hpp
index 5a4fa5e..71352c8 100644
--- a/src/master/allocator/sorter/drf/sorter.hpp
+++ b/src/master/allocator/sorter/drf/sorter.hpp
@@ -116,7 +116,7 @@ private:
// Returns the weight associated with the node. If no weight has
// been configured for the node's path, the default weight (1.0) is
// returned.
- double findWeight(const Node* node) const;
+ double getWeight(const Node* node) const;
// Returns the client associated with the given path. Returns
// nullptr if the path is not found or if the path identifies an
diff --git a/src/master/allocator/sorter/random/sorter.cpp b/src/master/allocator/sorter/random/sorter.cpp
index d17f8af..7b98389 100644
--- a/src/master/allocator/sorter/random/sorter.cpp
+++ b/src/master/allocator/sorter/random/sorter.cpp
@@ -477,7 +477,7 @@ vector<string> RandomSorter::sort()
vector<double> weights(inactiveBegin - node->children.begin());
for (int i = 0; i < inactiveBegin - node->children.begin(); ++i) {
- weights[i] = findWeight(node->children[i]);
+ weights[i] = getWeight(node->children[i]);
}
weightedShuffle(node->children.begin(), inactiveBegin, weights, generator);
@@ -537,15 +537,13 @@ size_t RandomSorter::count() const
}
-double RandomSorter::findWeight(const Node* node) const
+double RandomSorter::getWeight(const Node* node) const
{
- Option<double> weight = weights.get(node->path);
-
- if (weight.isNone()) {
- return 1.0;
- }
-
- return weight.get();
+ // TODO(bmahler): It's expensive to have to hash the complete
+ // role path and re-lookup the weight each time we calculate
+ // the share, consider storing the weight directly in the
+ // node struct.
+ return weights.get(node->path).getOrElse(1.0);
}
diff --git a/src/master/allocator/sorter/random/sorter.hpp b/src/master/allocator/sorter/random/sorter.hpp
index 7f6c0de..6bfeda0 100644
--- a/src/master/allocator/sorter/random/sorter.hpp
+++ b/src/master/allocator/sorter/random/sorter.hpp
@@ -117,7 +117,7 @@ private:
// Returns the weight associated with the node. If no weight has
// been configured for the node's path, the default weight (1.0) is
// returned.
- double findWeight(const Node* node) const;
+ double getWeight(const Node* node) const;
// Returns the client associated with the given path. Returns
// nullptr if the path is not found or if the path identifies an