You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by ra...@apache.org on 2017/11/08 13:18:28 UTC
[02/50] [abbrv] hadoop git commit: YARN-7401. Reduce lock contention
in ClusterNodeTracker#getClusterCapacity()
YARN-7401. Reduce lock contention in ClusterNodeTracker#getClusterCapacity()
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/8db9d61a
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/8db9d61a
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/8db9d61a
Branch: refs/heads/HDFS-10285
Commit: 8db9d61ac2e04888cb228b29fe54b41c730cf0e6
Parents: 13fa2d4
Author: Daniel Templeton <te...@apache.org>
Authored: Tue Nov 7 14:53:48 2017 -0800
Committer: Daniel Templeton <te...@apache.org>
Committed: Tue Nov 7 14:53:48 2017 -0800
----------------------------------------------------------------------
.../scheduler/ClusterNodeTracker.java | 18 ++++++------------
1 file changed, 6 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8db9d61a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/ClusterNodeTracker.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/ClusterNodeTracker.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/ClusterNodeTracker.java
index ccec6bc..60ef390 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/ClusterNodeTracker.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/ClusterNodeTracker.java
@@ -55,8 +55,9 @@ public class ClusterNodeTracker<N extends SchedulerNode> {
private Map<String, N> nodeNameToNodeMap = new HashMap<>();
private Map<String, List<N>> nodesPerRack = new HashMap<>();
- private Resource clusterCapacity = Resources.clone(Resources.none());
- private Resource staleClusterCapacity = null;
+ private final Resource clusterCapacity = Resources.clone(Resources.none());
+ private volatile Resource staleClusterCapacity =
+ Resources.clone(Resources.none());
// Max allocation
private long maxNodeMemory = -1;
@@ -82,6 +83,7 @@ public class ClusterNodeTracker<N extends SchedulerNode> {
// Update cluster capacity
Resources.addTo(clusterCapacity, node.getTotalResource());
+ staleClusterCapacity = Resources.clone(clusterCapacity);
// Update maximumAllocation
updateMaxResources(node, true);
@@ -139,16 +141,7 @@ public class ClusterNodeTracker<N extends SchedulerNode> {
}
public Resource getClusterCapacity() {
- readLock.lock();
- try {
- if (staleClusterCapacity == null ||
- !Resources.equals(staleClusterCapacity, clusterCapacity)) {
- staleClusterCapacity = Resources.clone(clusterCapacity);
- }
- return staleClusterCapacity;
- } finally {
- readLock.unlock();
- }
+ return staleClusterCapacity;
}
public N removeNode(NodeId nodeId) {
@@ -175,6 +168,7 @@ public class ClusterNodeTracker<N extends SchedulerNode> {
// Update cluster capacity
Resources.subtractFrom(clusterCapacity, node.getTotalResource());
+ staleClusterCapacity = Resources.clone(clusterCapacity);
// Update maximumAllocation
updateMaxResources(node, false);
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org