You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mapreduce-commits@hadoop.apache.org by ac...@apache.org on 2011/05/16 09:18:13 UTC

svn commit: r1103628 - in /hadoop/mapreduce/branches/MR-279: CHANGES.txt yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/ParentQueue.java

Author: acmurthy
Date: Mon May 16 07:18:13 2011
New Revision: 1103628

URL: http://svn.apache.org/viewvc?rev=1103628&view=rev
Log:
Fix calculation of maximum capacity in ParentQueue to use its parent's absolute-capacity rather than its own absolute-capacity.  

Modified:
    hadoop/mapreduce/branches/MR-279/CHANGES.txt
    hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/ParentQueue.java

Modified: hadoop/mapreduce/branches/MR-279/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/CHANGES.txt?rev=1103628&r1=1103627&r2=1103628&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/CHANGES.txt (original)
+++ hadoop/mapreduce/branches/MR-279/CHANGES.txt Mon May 16 07:18:13 2011
@@ -4,6 +4,9 @@ Trunk (unreleased changes)
 
   MAPREDUCE-279
 
+    Fix calculation of maximum capacity in ParentQueue to use its parent's 
+    absolute-capacity rather than its own absolute-capacity. (acmurthy)
+
     Fixing a bug in JobIDPbImpl that's causing AM to crash randomly. (vinodkv)
 
     Fix calculation of maximum capacity to use parent's absolute-capacity

Modified: hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/ParentQueue.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/ParentQueue.java?rev=1103628&r1=1103627&r2=1103628&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/ParentQueue.java (original)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/ParentQueue.java Mon May 16 07:18:13 2011
@@ -119,7 +119,7 @@ public class ParentQueue implements Queu
       cs.getConfiguration().getMaximumCapacity(getQueuePath());
     float absoluteMaxCapacity = 
       (maximumCapacity == CapacitySchedulerConfiguration.UNDEFINED) ? 
-          Float.MAX_VALUE :  (parentAbsoluteCapacity * maximumCapacity) / 100;
+          1000000000f :  (parentAbsoluteCapacity * maximumCapacity) / 100;
     
     QueueState state = cs.getConfiguration().getState(getQueuePath());
 
@@ -511,7 +511,7 @@ public class ParentQueue implements Queu
           getQueueName());
       
       // Are we over maximum-capacity for this queue?
-      if (!assignToQueue()) {
+      if (!assignToQueue(clusterResource)) {
         LOG.info(getQueueName() + 
             " current-capacity (" + getUtilization() + ") > max-capacity (" + 
             absoluteMaxCapacity + ")");
@@ -553,8 +553,21 @@ public class ParentQueue implements Queu
     return assigned;
   }
   
-  private synchronized boolean assignToQueue() {
-    return (getUtilization() < absoluteMaxCapacity);
+  private synchronized boolean assignToQueue(Resource clusterResource) {
+    // Check how of the parent's capacity we are currently using...
+    float parentAbsoluteCapacity = 
+          (parent == null) ? 100.0f : parent.getAbsoluteCapacity();
+    float currentCapacity = 
+      (float)(usedResources.getMemory()) / 
+      (clusterResource.getMemory() * parentAbsoluteCapacity);
+    if (currentCapacity > absoluteMaxCapacity) {
+      LOG.info(getQueueName() + 
+          " current-capacity (" + currentCapacity + ") +" +
+          " > max-capacity (" + absoluteMaxCapacity + ")");
+      return false;
+    }
+    return true;
+
   }
   
   private boolean canAssign(NodeInfo node) {