YARN-7057. FSAppAttempt#getResourceUsage doesn't need to consider resources queued for preemption. (Contributed by Karthik via Yufei Gu)
(cherry picked from commit 82c5dd1d50
)
This commit is contained in:
parent
c314a66353
commit
1d40bc225a
|
@ -614,9 +614,16 @@ public class FSAppAttempt extends SchedulerApplicationAttempt
|
|||
|
||||
// Check if the app's allocation will be over its fairshare even
|
||||
// after preempting this container
|
||||
Resource usageAfterPreemption = Resources.subtract(
|
||||
getResourceUsage(), container.getAllocatedResource());
|
||||
Resource usageAfterPreemption = Resources.clone(getResourceUsage());
|
||||
|
||||
// Subtract resources of containers already queued for preemption
|
||||
synchronized (preemptionVariablesLock) {
|
||||
Resources.subtractFrom(usageAfterPreemption, resourcesToBePreempted);
|
||||
}
|
||||
|
||||
// Subtract this container's allocation to compute usage after preemption
|
||||
Resources.subtractFrom(
|
||||
usageAfterPreemption, container.getAllocatedResource());
|
||||
return !isUsageBelowShare(usageAfterPreemption, getFairShare());
|
||||
}
|
||||
|
||||
|
@ -1268,13 +1275,7 @@ public class FSAppAttempt extends SchedulerApplicationAttempt
|
|||
|
||||
@Override
|
||||
public Resource getResourceUsage() {
|
||||
// Subtract copies the object, so that we have a snapshot,
|
||||
// in case usage changes, while the caller is using the value
|
||||
synchronized (preemptionVariablesLock) {
|
||||
return containersToBePreempted.isEmpty()
|
||||
? getCurrentConsumption()
|
||||
: Resources.subtract(getCurrentConsumption(), resourcesToBePreempted);
|
||||
}
|
||||
return getCurrentConsumption();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
Loading…
Reference in New Issue