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:
Sanford Ryza 2014-03-31 23:40:45 +00:00
parent e908bbe807
commit 7bd62b8da0
4 changed files with 21 additions and 7 deletions

View File

@ -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

View File

@ -34,12 +34,16 @@ public class ResourceWeights {
}
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;

View File

@ -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 class AppSchedulable extends Schedulable {
this.queue = queue;
this.containerTokenSecretManager = scheduler.
getContainerTokenSecretManager();
this.priority = Priority.newInstance(1);
this.resourceWeights = new ResourceWeights();
}
@Override
@ -75,6 +78,10 @@ public class AppSchedulable extends Schedulable {
return app;
}
public ResourceWeights getResourceWeights() {
return resourceWeights;
}
@Override
public void updateDemand() {
demand = Resources.createResource(0);
@ -134,9 +141,7 @@ public class AppSchedulable extends Schedulable {
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;
}
/**

View File

@ -535,7 +535,9 @@ public class FairScheduler extends AbstractYarnScheduler {
// 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