YARN-1889. In Fair Scheduler, avoid creating objects on each call to AppSchedulable comparator (Hong Zhiguo via Sandy Ryza)
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1583491 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
e908bbe807
commit
7bd62b8da0
@ -51,6 +51,9 @@ Release 2.5.0 - UNRELEASED
|
||||
YARN-1883. TestRMAdminService fails due to inconsistent entries in
|
||||
UserGroups (Mit Desai via jeagles)
|
||||
|
||||
YARN-1889. In Fair Scheduler, avoid creating objects on each call to
|
||||
AppSchedulable comparator (Hong Zhiguo via Sandy Ryza)
|
||||
|
||||
OPTIMIZATIONS
|
||||
|
||||
BUG FIXES
|
||||
|
@ -34,13 +34,17 @@ public ResourceWeights(float memoryWeight, float cpuWeight) {
|
||||
}
|
||||
|
||||
public ResourceWeights(float weight) {
|
||||
setWeight(weight);
|
||||
}
|
||||
|
||||
public ResourceWeights() { }
|
||||
|
||||
public void setWeight(float weight) {
|
||||
for (int i = 0; i < weights.length; i++) {
|
||||
weights[i] = weight;
|
||||
}
|
||||
}
|
||||
|
||||
public ResourceWeights() { }
|
||||
|
||||
public void setWeight(ResourceType resourceType, float weight) {
|
||||
weights[resourceType.ordinal()] = weight;
|
||||
}
|
||||
|
@ -52,10 +52,11 @@ public class AppSchedulable extends Schedulable {
|
||||
private FSSchedulerApp app;
|
||||
private Resource demand = Resources.createResource(0);
|
||||
private long startTime;
|
||||
private static RecordFactory recordFactory = RecordFactoryProvider.getRecordFactory(null);
|
||||
private static final Log LOG = LogFactory.getLog(AppSchedulable.class);
|
||||
private FSLeafQueue queue;
|
||||
private RMContainerTokenSecretManager containerTokenSecretManager;
|
||||
private Priority priority;
|
||||
private ResourceWeights resourceWeights;
|
||||
|
||||
public AppSchedulable(FairScheduler scheduler, FSSchedulerApp app, FSLeafQueue queue) {
|
||||
this.scheduler = scheduler;
|
||||
@ -64,6 +65,8 @@ public AppSchedulable(FairScheduler scheduler, FSSchedulerApp app, FSLeafQueue q
|
||||
this.queue = queue;
|
||||
this.containerTokenSecretManager = scheduler.
|
||||
getContainerTokenSecretManager();
|
||||
this.priority = Priority.newInstance(1);
|
||||
this.resourceWeights = new ResourceWeights();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -75,6 +78,10 @@ public FSSchedulerApp getApp() {
|
||||
return app;
|
||||
}
|
||||
|
||||
public ResourceWeights getResourceWeights() {
|
||||
return resourceWeights;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateDemand() {
|
||||
demand = Resources.createResource(0);
|
||||
@ -134,9 +141,7 @@ public ResourceWeights getWeights() {
|
||||
public Priority getPriority() {
|
||||
// Right now per-app priorities are not passed to scheduler,
|
||||
// so everyone has the same priority.
|
||||
Priority p = recordFactory.newRecordInstance(Priority.class);
|
||||
p.setPriority(1);
|
||||
return p;
|
||||
return priority;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -535,7 +535,9 @@ public synchronized ResourceWeights getAppWeight(AppSchedulable app) {
|
||||
// Run weight through the user-supplied weightAdjuster
|
||||
weight = weightAdjuster.adjustWeight(app, weight);
|
||||
}
|
||||
return new ResourceWeights((float)weight);
|
||||
ResourceWeights resourceWeights = app.getResourceWeights();
|
||||
resourceWeights.setWeight((float)weight);
|
||||
return resourceWeights;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Loading…
Reference in New Issue
Block a user