You are viewing a plain text version of this content. The canonical link for it is here.
Posted to yarn-commits@hadoop.apache.org by tu...@apache.org on 2012/10/05 01:02:28 UTC
svn commit: r1394322 - in
/hadoop/common/branches/branch-2/hadoop-yarn-project: ./
hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/
hadoop-yarn/hadoop-yarn-ser...
Author: tucu
Date: Thu Oct 4 23:02:28 2012
New Revision: 1394322
URL: http://svn.apache.org/viewvc?rev=1394322&view=rev
Log:
YARN-23. FairScheduler: FSQueueSchedulable#updateDemand() - potential redundant aggregation. (kkambatl via tucu)
Added:
hadoop/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestFSQueueSchedulable.java
- copied unchanged from r1394321, hadoop/common/trunk/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestFSQueueSchedulable.java
Modified:
hadoop/common/branches/branch-2/hadoop-yarn-project/CHANGES.txt
hadoop/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSQueueSchedulable.java
Modified: hadoop/common/branches/branch-2/hadoop-yarn-project/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-yarn-project/CHANGES.txt?rev=1394322&r1=1394321&r2=1394322&view=diff
==============================================================================
--- hadoop/common/branches/branch-2/hadoop-yarn-project/CHANGES.txt (original)
+++ hadoop/common/branches/branch-2/hadoop-yarn-project/CHANGES.txt Thu Oct 4 23:02:28 2012
@@ -26,6 +26,9 @@ Release 2.0.3-alpha - Unreleased
YARN-116. Add the ability to change the RM include/exclude file without
a restart. (xieguiming and Harsh J via sseth)
+ YARN-23. FairScheduler: FSQueueSchedulable#updateDemand() - potential
+ redundant aggregation. (kkambatl via tucu)
+
OPTIMIZATIONS
BUG FIXES
Modified: hadoop/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSQueueSchedulable.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSQueueSchedulable.java?rev=1394322&r1=1394321&r2=1394322&view=diff
==============================================================================
--- hadoop/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSQueueSchedulable.java (original)
+++ hadoop/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSQueueSchedulable.java Thu Oct 4 23:02:28 2012
@@ -65,6 +65,17 @@ public class FSQueueSchedulable extends
long lastTimeAtMinShare;
long lastTimeAtHalfFairShare;
+ // Constructor for tests
+ protected FSQueueSchedulable(FairScheduler scheduler, FSQueue fsQueue,
+ QueueManager qMgr, QueueMetrics metrics, long minShare, long fairShare) {
+ this.scheduler = scheduler;
+ this.queueMgr = qMgr;
+ this.queue = fsQueue;
+ this.metrics = metrics;
+ this.lastTimeAtMinShare = minShare;
+ this.lastTimeAtHalfFairShare = fairShare;
+ }
+
public FSQueueSchedulable(FairScheduler scheduler, FSQueue queue) {
this.scheduler = scheduler;
this.queue = queue;
@@ -93,19 +104,27 @@ public class FSQueueSchedulable extends
*/
@Override
public void updateDemand() {
+ // Compute demand by iterating through apps in the queue
+ // Limit demand to maxResources
+ Resource maxRes = queueMgr.getMaxResources(queue.getName());
demand = Resources.createResource(0);
for (AppSchedulable sched: appScheds) {
sched.updateDemand();
Resource toAdd = sched.getDemand();
- LOG.debug("Counting resource from " + sched.getName() + " " + toAdd.toString());
- LOG.debug("Total resource consumption for " + this.getName() + " now " + demand.toString());
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Counting resource from " + sched.getName() + " " + toAdd
+ + "; Total resource consumption for " + this.getName() + " now "
+ + demand);
+ }
demand = Resources.add(demand, toAdd);
-
+ if (Resources.greaterThanOrEqual(demand, maxRes)) {
+ demand = maxRes;
+ break;
+ }
}
- // if demand exceeds the cap for this queue, limit to the max
- Resource maxRes = queueMgr.getMaxResources(queue.getName());
- if(Resources.greaterThan(demand, maxRes)) {
- demand = maxRes;
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("The updated demand for " + this.getName() + " is " + demand
+ + "; the max is " + maxRes);
}
}