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 na...@apache.org on 2017/06/09 06:17:38 UTC
hadoop git commit: YARN-6681. Improve performance of
AssignmentInformation datastructures. Contributed by Daryn sharp.
Repository: hadoop
Updated Branches:
refs/heads/branch-2 aaf533e8a -> 85d561a5b
YARN-6681. Improve performance of AssignmentInformation datastructures. Contributed by Daryn sharp.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/85d561a5
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/85d561a5
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/85d561a5
Branch: refs/heads/branch-2
Commit: 85d561a5b377edd89fe9bc1fa30d4abb61cc06ab
Parents: aaf533e
Author: Naganarasimha <na...@apache.org>
Authored: Fri Jun 9 11:46:51 2017 +0530
Committer: Naganarasimha <na...@apache.org>
Committed: Fri Jun 9 11:46:51 2017 +0530
----------------------------------------------------------------------
.../scheduler/common/AssignmentInformation.java | 60 +++++++++++---------
1 file changed, 32 insertions(+), 28 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/85d561a5/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/common/AssignmentInformation.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/common/AssignmentInformation.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/common/AssignmentInformation.java
index f921d29..86f1c10 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/common/AssignmentInformation.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/common/AssignmentInformation.java
@@ -19,10 +19,7 @@
package org.apache.hadoop.yarn.server.resourcemanager.scheduler.common;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
-
import org.apache.hadoop.classification.InterfaceAudience;
import org.apache.hadoop.classification.InterfaceStability;
import org.apache.hadoop.yarn.api.records.ContainerId;
@@ -34,7 +31,11 @@ import org.apache.hadoop.yarn.server.resourcemanager.rmcontainer.RMContainer;
public class AssignmentInformation {
public enum Operation {
- ALLOCATION, RESERVATION
+ ALLOCATION, RESERVATION;
+ private static int SIZE = Operation.values().length;
+ static int size() {
+ return SIZE;
+ }
}
public static class AssignmentDetails {
@@ -49,23 +50,25 @@ public class AssignmentInformation {
}
}
- private final Map<Operation, Integer> operationCounts;
- private final Map<Operation, Resource> operationResources;
- private final Map<Operation, List<AssignmentDetails>> operationDetails;
+ private final int[] operationCounts;
+ private final Resource[] operationResources;
+ private final List<AssignmentDetails>[] operationDetails;
+ @SuppressWarnings("unchecked")
public AssignmentInformation() {
- this.operationCounts = new HashMap<>();
- this.operationResources = new HashMap<>();
- this.operationDetails = new HashMap<>();
- for (Operation op : Operation.values()) {
- operationCounts.put(op, 0);
- operationResources.put(op, Resource.newInstance(0, 0));
- operationDetails.put(op, new ArrayList<AssignmentDetails>());
+ int numOps = Operation.size();
+ this.operationCounts = new int[numOps];
+ this.operationResources = new Resource[numOps];
+ this.operationDetails = new List[numOps];
+ for (int i=0; i < numOps; i++) {
+ operationCounts[i] = 0;
+ operationResources[i] = Resource.newInstance(0, 0);
+ operationDetails[i] = new ArrayList<AssignmentDetails>();
}
}
public int getNumAllocations() {
- return operationCounts.get(Operation.ALLOCATION);
+ return operationCounts[Operation.ALLOCATION.ordinal()];
}
public void incrAllocations() {
@@ -77,7 +80,7 @@ public class AssignmentInformation {
}
public int getNumReservations() {
- return operationCounts.get(Operation.RESERVATION);
+ return operationCounts[Operation.RESERVATION.ordinal()];
}
public void incrReservations() {
@@ -89,20 +92,20 @@ public class AssignmentInformation {
}
private void increment(Operation op, int by) {
- operationCounts.put(op, operationCounts.get(op) + by);
+ operationCounts[op.ordinal()] += by;
}
public Resource getAllocated() {
- return operationResources.get(Operation.ALLOCATION);
+ return operationResources[Operation.ALLOCATION.ordinal()];
}
public Resource getReserved() {
- return operationResources.get(Operation.RESERVATION);
+ return operationResources[Operation.RESERVATION.ordinal()];
}
private void addAssignmentDetails(Operation op, RMContainer rmContainer,
String queue) {
- operationDetails.get(op).add(new AssignmentDetails(rmContainer, queue));
+ getDetails(op).add(new AssignmentDetails(rmContainer, queue));
}
public void addAllocationDetails(RMContainer rmContainer, String queue) {
@@ -113,21 +116,22 @@ public class AssignmentInformation {
addAssignmentDetails(Operation.RESERVATION, rmContainer, queue);
}
+ private List<AssignmentDetails> getDetails(Operation op) {
+ return operationDetails[op.ordinal()];
+ }
+
public List<AssignmentDetails> getAllocationDetails() {
- return operationDetails.get(Operation.ALLOCATION);
+ return getDetails(Operation.ALLOCATION);
}
public List<AssignmentDetails> getReservationDetails() {
- return operationDetails.get(Operation.RESERVATION);
+ return getDetails(Operation.RESERVATION);
}
private RMContainer getFirstRMContainerFromOperation(Operation op) {
- if (null != operationDetails.get(op)) {
- List<AssignmentDetails> assignDetails =
- operationDetails.get(op);
- if (!assignDetails.isEmpty()) {
- return assignDetails.get(0).rmContainer;
- }
+ List<AssignmentDetails> assignDetails = getDetails(op);
+ if (assignDetails != null && !assignDetails.isEmpty()) {
+ return assignDetails.get(0).rmContainer;
}
return null;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org