|
@@ -740,7 +740,7 @@ public class LeafQueue implements CSQueue {
|
|
|
|
|
|
// Book-keeping
|
|
// Book-keeping
|
|
allocateResource(clusterResource,
|
|
allocateResource(clusterResource,
|
|
- application.getUser(), assignedResource);
|
|
|
|
|
|
+ application, assignedResource);
|
|
|
|
|
|
// Reset scheduling opportunities
|
|
// Reset scheduling opportunities
|
|
application.resetSchedulingOpportunities(priority);
|
|
application.resetSchedulingOpportunities(priority);
|
|
@@ -810,7 +810,7 @@ public class LeafQueue implements CSQueue {
|
|
private void setUserResourceLimit(SchedulerApp application,
|
|
private void setUserResourceLimit(SchedulerApp application,
|
|
Resource resourceLimit) {
|
|
Resource resourceLimit) {
|
|
application.setAvailableResourceLimit(resourceLimit);
|
|
application.setAvailableResourceLimit(resourceLimit);
|
|
- metrics.setAvailableResourcesToUser(application.getUser(), resourceLimit);
|
|
|
|
|
|
+ metrics.setAvailableResourcesToUser(application.getUser(), application.getHeadroom());
|
|
}
|
|
}
|
|
|
|
|
|
private int roundUp(int memory) {
|
|
private int roundUp(int memory) {
|
|
@@ -1216,7 +1216,7 @@ public class LeafQueue implements CSQueue {
|
|
|
|
|
|
// Book-keeping
|
|
// Book-keeping
|
|
releaseResource(clusterResource,
|
|
releaseResource(clusterResource,
|
|
- application.getUser(), container.getResource());
|
|
|
|
|
|
+ application, container.getResource());
|
|
|
|
|
|
LOG.info("completedContainer" +
|
|
LOG.info("completedContainer" +
|
|
" container=" + container +
|
|
" container=" + container +
|
|
@@ -1234,32 +1234,35 @@ public class LeafQueue implements CSQueue {
|
|
}
|
|
}
|
|
|
|
|
|
synchronized void allocateResource(Resource clusterResource,
|
|
synchronized void allocateResource(Resource clusterResource,
|
|
- String userName, Resource resource) {
|
|
|
|
|
|
+ SchedulerApp application, Resource resource) {
|
|
// Update queue metrics
|
|
// Update queue metrics
|
|
Resources.addTo(usedResources, resource);
|
|
Resources.addTo(usedResources, resource);
|
|
updateResource(clusterResource);
|
|
updateResource(clusterResource);
|
|
++numContainers;
|
|
++numContainers;
|
|
|
|
|
|
// Update user metrics
|
|
// Update user metrics
|
|
|
|
+ String userName = application.getUser();
|
|
User user = getUser(userName);
|
|
User user = getUser(userName);
|
|
user.assignContainer(resource);
|
|
user.assignContainer(resource);
|
|
-
|
|
|
|
|
|
+ metrics.setAvailableResourcesToUser(userName, application.getHeadroom());
|
|
LOG.info(getQueueName() +
|
|
LOG.info(getQueueName() +
|
|
" used=" + usedResources + " numContainers=" + numContainers +
|
|
" used=" + usedResources + " numContainers=" + numContainers +
|
|
" user=" + userName + " resources=" + user.getConsumedResources());
|
|
" user=" + userName + " resources=" + user.getConsumedResources());
|
|
}
|
|
}
|
|
|
|
|
|
synchronized void releaseResource(Resource clusterResource,
|
|
synchronized void releaseResource(Resource clusterResource,
|
|
- String userName, Resource resource) {
|
|
|
|
|
|
+ SchedulerApp application, Resource resource) {
|
|
// Update queue metrics
|
|
// Update queue metrics
|
|
Resources.subtractFrom(usedResources, resource);
|
|
Resources.subtractFrom(usedResources, resource);
|
|
updateResource(clusterResource);
|
|
updateResource(clusterResource);
|
|
--numContainers;
|
|
--numContainers;
|
|
|
|
|
|
// Update user metrics
|
|
// Update user metrics
|
|
|
|
+ String userName = application.getUser();
|
|
User user = getUser(userName);
|
|
User user = getUser(userName);
|
|
user.releaseContainer(resource);
|
|
user.releaseContainer(resource);
|
|
-
|
|
|
|
|
|
+ metrics.setAvailableResourcesToUser(userName, application.getHeadroom());
|
|
|
|
+
|
|
LOG.info(getQueueName() +
|
|
LOG.info(getQueueName() +
|
|
" used=" + usedResources + " numContainers=" + numContainers +
|
|
" used=" + usedResources + " numContainers=" + numContainers +
|
|
" user=" + userName + " resources=" + user.getConsumedResources());
|
|
" user=" + userName + " resources=" + user.getConsumedResources());
|
|
@@ -1282,9 +1285,9 @@ public class LeafQueue implements CSQueue {
|
|
usedResources.getMemory() / (clusterResource.getMemory() * capacity));
|
|
usedResources.getMemory() / (clusterResource.getMemory() * capacity));
|
|
|
|
|
|
Resource resourceLimit =
|
|
Resource resourceLimit =
|
|
- Resources.createResource((int)queueLimit);
|
|
|
|
|
|
+ Resources.createResource(roundUp((int)queueLimit));
|
|
metrics.setAvailableResourcesToQueue(
|
|
metrics.setAvailableResourcesToQueue(
|
|
- Resources.subtractFrom(resourceLimit, usedResources));
|
|
|
|
|
|
+ Resources.subtractFrom(resourceLimit, usedResources));
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -1340,7 +1343,7 @@ public class LeafQueue implements CSQueue {
|
|
SchedulerApp application, Container container) {
|
|
SchedulerApp application, Container container) {
|
|
// Careful! Locking order is important!
|
|
// Careful! Locking order is important!
|
|
synchronized (this) {
|
|
synchronized (this) {
|
|
- allocateResource(clusterResource, application.getUser(), container.getResource());
|
|
|
|
|
|
+ allocateResource(clusterResource, application, container.getResource());
|
|
}
|
|
}
|
|
parent.recoverContainer(clusterResource, application, container);
|
|
parent.recoverContainer(clusterResource, application, container);
|
|
|
|
|