Skip to content

Commit a207241

Browse files
committed
YARN-6175. Negative vcore for resource needed to preempt.
1 parent 8f9aae0 commit a207241

File tree

3 files changed

+23
-11
lines changed
  • hadoop-yarn-project/hadoop-yarn
    • hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/resource
    • hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair

3 files changed

+23
-11
lines changed

hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/resource/Resources.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,24 @@ public static Resource subtract(Resource lhs, Resource rhs) {
172172
return subtractFrom(clone(lhs), rhs);
173173
}
174174

175+
/**
176+
* Subtract <code>rhs</code> from <code>lhs</code> and reset any negative
177+
* values to zero.
178+
* @param lhs {@link Resource} to subtract from
179+
* @param rhs {@link Resource} to subtract
180+
* @return the value of lhs after subtraction
181+
*/
182+
public static Resource subtractFromNonNegative(Resource lhs, Resource rhs) {
183+
subtractFrom(lhs, rhs);
184+
if (lhs.getMemorySize() < 0) {
185+
lhs.setMemorySize(0);
186+
}
187+
if (lhs.getVirtualCores() < 0) {
188+
lhs.setVirtualCores(0);
189+
}
190+
return lhs;
191+
}
192+
175193
public static Resource negate(Resource resource) {
176194
return subtract(NONE, resource);
177195
}

hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSAppAttempt.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -194,16 +194,10 @@ private void subtractResourcesOnBlacklistedNodes(
194194
for (NodeId nodeId: blacklistNodeIds) {
195195
SchedulerNode node = scheduler.getSchedulerNode(nodeId);
196196
if (node != null) {
197-
Resources.subtractFrom(availableResources,
197+
Resources.subtractFromNonNegative(availableResources,
198198
node.getAvailableResource());
199199
}
200200
}
201-
if (availableResources.getMemory() < 0) {
202-
availableResources.setMemory(0);
203-
}
204-
if (availableResources.getVirtualCores() < 0) {
205-
availableResources.setVirtualCores(0);
206-
}
207201
}
208202

209203
/**

hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FairScheduler.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -531,14 +531,14 @@ protected Resource resourceDeficit(FSLeafQueue sched, long curTime) {
531531
if (curTime - sched.getLastTimeAtMinShare() > minShareTimeout) {
532532
Resource target = Resources.componentwiseMin(
533533
sched.getMinShare(), sched.getDemand());
534-
resDueToMinShare = Resources.max(calc, clusterResource,
535-
Resources.none(), Resources.subtract(target, sched.getResourceUsage()));
534+
resDueToMinShare =
535+
Resources.subtractFromNonNegative(target, sched.getResourceUsage());
536536
}
537537
if (curTime - sched.getLastTimeAtFairShareThreshold() > fairShareTimeout) {
538538
Resource target = Resources.componentwiseMin(
539539
sched.getFairShare(), sched.getDemand());
540-
resDueToFairShare = Resources.max(calc, clusterResource,
541-
Resources.none(), Resources.subtract(target, sched.getResourceUsage()));
540+
resDueToFairShare =
541+
Resources.subtractFromNonNegative(target, sched.getResourceUsage());
542542
}
543543
Resource deficit = Resources.max(calc, clusterResource,
544544
resDueToMinShare, resDueToFairShare);

0 commit comments

Comments
 (0)