YARN-6175. FairScheduler: Negative vcore for resource needed to preempt. (Yufei Gu via kasha)
This commit is contained in:
parent
b1ec790662
commit
1d156c8758
|
@ -172,6 +172,24 @@ public class Resources {
|
||||||
return subtractFrom(clone(lhs), rhs);
|
return subtractFrom(clone(lhs), rhs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Subtract <code>rhs</code> from <code>lhs</code> and reset any negative
|
||||||
|
* values to zero.
|
||||||
|
* @param lhs {@link Resource} to subtract from
|
||||||
|
* @param rhs {@link Resource} to subtract
|
||||||
|
* @return the value of lhs after subtraction
|
||||||
|
*/
|
||||||
|
public static Resource subtractFromNonNegative(Resource lhs, Resource rhs) {
|
||||||
|
subtractFrom(lhs, rhs);
|
||||||
|
if (lhs.getMemorySize() < 0) {
|
||||||
|
lhs.setMemorySize(0);
|
||||||
|
}
|
||||||
|
if (lhs.getVirtualCores() < 0) {
|
||||||
|
lhs.setVirtualCores(0);
|
||||||
|
}
|
||||||
|
return lhs;
|
||||||
|
}
|
||||||
|
|
||||||
public static Resource negate(Resource resource) {
|
public static Resource negate(Resource resource) {
|
||||||
return subtract(NONE, resource);
|
return subtract(NONE, resource);
|
||||||
}
|
}
|
||||||
|
|
|
@ -194,16 +194,10 @@ public class FSAppAttempt extends SchedulerApplicationAttempt
|
||||||
for (NodeId nodeId: blacklistNodeIds) {
|
for (NodeId nodeId: blacklistNodeIds) {
|
||||||
SchedulerNode node = scheduler.getSchedulerNode(nodeId);
|
SchedulerNode node = scheduler.getSchedulerNode(nodeId);
|
||||||
if (node != null) {
|
if (node != null) {
|
||||||
Resources.subtractFrom(availableResources,
|
Resources.subtractFromNonNegative(availableResources,
|
||||||
node.getAvailableResource());
|
node.getAvailableResource());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (availableResources.getMemory() < 0) {
|
|
||||||
availableResources.setMemory(0);
|
|
||||||
}
|
|
||||||
if (availableResources.getVirtualCores() < 0) {
|
|
||||||
availableResources.setVirtualCores(0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -531,14 +531,14 @@ public class FairScheduler extends
|
||||||
if (curTime - sched.getLastTimeAtMinShare() > minShareTimeout) {
|
if (curTime - sched.getLastTimeAtMinShare() > minShareTimeout) {
|
||||||
Resource target = Resources.componentwiseMin(
|
Resource target = Resources.componentwiseMin(
|
||||||
sched.getMinShare(), sched.getDemand());
|
sched.getMinShare(), sched.getDemand());
|
||||||
resDueToMinShare = Resources.max(calc, clusterResource,
|
resDueToMinShare =
|
||||||
Resources.none(), Resources.subtract(target, sched.getResourceUsage()));
|
Resources.subtractFromNonNegative(target, sched.getResourceUsage());
|
||||||
}
|
}
|
||||||
if (curTime - sched.getLastTimeAtFairShareThreshold() > fairShareTimeout) {
|
if (curTime - sched.getLastTimeAtFairShareThreshold() > fairShareTimeout) {
|
||||||
Resource target = Resources.componentwiseMin(
|
Resource target = Resources.componentwiseMin(
|
||||||
sched.getFairShare(), sched.getDemand());
|
sched.getFairShare(), sched.getDemand());
|
||||||
resDueToFairShare = Resources.max(calc, clusterResource,
|
resDueToFairShare =
|
||||||
Resources.none(), Resources.subtract(target, sched.getResourceUsage()));
|
Resources.subtractFromNonNegative(target, sched.getResourceUsage());
|
||||||
}
|
}
|
||||||
Resource deficit = Resources.max(calc, clusterResource,
|
Resource deficit = Resources.max(calc, clusterResource,
|
||||||
resDueToMinShare, resDueToFairShare);
|
resDueToMinShare, resDueToFairShare);
|
||||||
|
|
Loading…
Reference in New Issue