private synchronized void activateApplications() { Resource amLimit = getAMResourceLimit(); Resource userAMLimit = getUserAMResourceLimit();
private synchronized void activateApplications() { Resource amLimit = getAMResourceLimit(); Resource userAMLimit = getUserAMResourceLimit();
CapacitySchedulerLeafQueueInfo(final LeafQueue q, final String nodeLabel) { super(q, nodeLabel); numActiveApplications = q.getNumActiveApplications(); numPendingApplications = q.getNumPendingApplications(); numContainers = q.getNumContainers(); maxApplications = q.getMaxApplications(); maxApplicationsPerUser = q.getMaxApplicationsPerUser(); userLimit = q.getUserLimit(); users = new UsersInfo(q.getUsers()); userLimitFactor = q.getUserLimitFactor(); AMResourceLimit = new ResourceInfo(q.getAMResourceLimit()); usedAMResource = new ResourceInfo(q.getQueueResourceUsage().getAMUsed()); userAMResourceLimit = new ResourceInfo(q.getUserAMResourceLimit()); preemptionDisabled = q.getPreemptionDisabled(); }
CapacitySchedulerLeafQueueInfo(final LeafQueue q, final String nodeLabel) { super(q, nodeLabel); numActiveApplications = q.getNumActiveApplications(); numPendingApplications = q.getNumPendingApplications(); numContainers = q.getNumContainers(); maxApplications = q.getMaxApplications(); maxApplicationsPerUser = q.getMaxApplicationsPerUser(); userLimit = q.getUserLimit(); users = new UsersInfo(q.getUsers()); userLimitFactor = q.getUserLimitFactor(); AMResourceLimit = new ResourceInfo(q.getAMResourceLimit()); usedAMResource = new ResourceInfo(q.getQueueResourceUsage().getAMUsed()); userAMResourceLimit = new ResourceInfo(q.getUserAMResourceLimit()); preemptionDisabled = q.getPreemptionDisabled(); }
LeafQueue a = new LeafQueue(csContext, A, root, null); assertEquals(0.1f, a.getMaxAMResourcePerQueuePercent(), 1e-3f); assertEquals(a.getAMResourceLimit(), Resources.createResource(160 * GB, 1)); a.reinitialize(newA, clusterResource); assertEquals(0.2f, a.getMaxAMResourcePerQueuePercent(), 1e-3f); assertEquals(a.getAMResourceLimit(), Resources.createResource(320 * GB, 1)); new ResourceLimits(newClusterResource)); assertEquals(a.getAMResourceLimit(), Resources.createResource(400 * GB, 1));
users = new UsersInfo(q.getUsersManager().getUsersInfo()); userLimitFactor = q.getUserLimitFactor(); AMResourceLimit = new ResourceInfo(q.getAMResourceLimit()); usedAMResource = new ResourceInfo(q.getQueueResourceUsage().getAMUsed()); preemptionDisabled = q.getPreemptionDisabled();
" AMResourceLimit=" + queue.getAMResourceLimit() + " UserAMResourceLimit=" + queue.getUserAMResourceLimit()); assertEquals(queue.getAMResourceLimit(), Resource.newInstance(160*GB, 1)); assertEquals(queue.getUserAMResourceLimit(), Resource.newInstance(80*GB, 1)); clusterResource)); assertEquals(queue.getAMResourceLimit(), Resource.newInstance(192*GB, 1)); assertEquals(queue.getUserAMResourceLimit(), Resource.newInstance(96*GB, 1)); ); assertEquals(queue.getAMResourceLimit(), Resource.newInstance(800*GB, 1)); assertEquals(queue.getUserAMResourceLimit(), Resource.newInstance(400*GB, 1));
new ResourceLimits(clusterResource)); assertEquals(Resource.newInstance(1 * GB, 1), a.getAMResourceLimit()); b.getAMResourceLimit());
" aMResourceLimit=" + queue.getAMResourceLimit() + " UserAMResourceLimit=" + queue.getUserAMResourceLimit());
@Test(timeout = 30000) public void testAMLimitDouble() throws Exception { CapacitySchedulerConfiguration config = new CapacitySchedulerConfiguration(); config.set(CapacitySchedulerConfiguration.RESOURCE_CALCULATOR_CLASS, DominantResourceCalculator.class.getName()); CapacitySchedulerConfiguration conf = new CapacitySchedulerConfiguration(config); conf.setClass(YarnConfiguration.RM_SCHEDULER, CapacityScheduler.class, ResourceScheduler.class); conf.setInt("yarn.scheduler.minimum-allocation-mb", 512); conf.setInt("yarn.scheduler.minimum-allocation-vcores", 1); MockRM rm = new MockRM(conf); rm.start(); rm.registerNode("127.0.0.1:1234", 10 * GB); rm.registerNode("127.0.0.1:1235", 10 * GB); rm.registerNode("127.0.0.1:1236", 10 * GB); rm.registerNode("127.0.0.1:1237", 10 * GB); ResourceScheduler scheduler = rm.getRMContext().getScheduler(); waitforNMRegistered(scheduler, 4, 5); LeafQueue queueA = (LeafQueue) ((CapacityScheduler) scheduler).getQueue("default"); Resource amResourceLimit = queueA.getAMResourceLimit(); Assert.assertEquals(4096, amResourceLimit.getMemorySize()); Assert.assertEquals(4, amResourceLimit.getVirtualCores()); rm.stop(); }
when(queue.getActiveUsersManager()).thenReturn(activeUsersManager); assertEquals(Resource.newInstance(8 * GB, 1), queue.getAMResourceLimit()); assertEquals(Resource.newInstance(4 * GB, 1), queue.getUserAMResourceLimit()); assertEquals(Resource.newInstance(8 * GB, 1), queue.getAMResourceLimit()); assertEquals(Resource.newInstance(4 * GB, 1), queue.getUserAMResourceLimit()); assertEquals(Resource.newInstance(8 * GB, 1), queue.getAMResourceLimit()); assertEquals(Resource.newInstance(2 * GB, 1), queue.getUserAMResourceLimit());
LeafQueue defaultQueue = (LeafQueue) ((CapacityScheduler) scheduler).getQueue("default"); int memory = (int) (defaultQueue.getAMResourceLimit().getMemorySize() / 2);
assertEquals(Resource.newInstance(8 * GB, 1), queue.getAMResourceLimit()); assertEquals(Resource.newInstance(4 * GB, 1), queue.getUserAMResourceLimit()); assertEquals(Resource.newInstance(8 * GB, 1), queue.getAMResourceLimit()); assertEquals(Resource.newInstance(2 * GB, 1), queue.getUserAMResourceLimit());
private void verifyAMLimitForLeafQueue(CapacitySchedulerConfiguration config) throws Exception { MockRM rm = setUpMove(config); String queueName = "a1"; String userName = "user_0"; ResourceScheduler scheduler = rm.getRMContext().getScheduler(); LeafQueue queueA = (LeafQueue) ((CapacityScheduler) scheduler).getQueue(queueName); Resource amResourceLimit = queueA.getAMResourceLimit(); Resource amResource = Resource.newInstance(amResourceLimit.getMemory() + 1, amResourceLimit.getVirtualCores() + 1); rm.submitApp(amResource.getMemory(), "app-1", userName, null, queueName); rm.submitApp(amResource.getMemory(), "app-1", userName, null, queueName); // When AM limit is exceeded, 1 applications will be activated.Rest all // applications will be in pending Assert.assertEquals("PendingApplications should be 1", 1, queueA.getNumPendingApplications()); Assert.assertEquals("Active applications should be 1", 1, queueA.getNumActiveApplications()); Assert.assertEquals("User PendingApplications should be 1", 1, queueA .getUser(userName).getPendingApplications()); Assert.assertEquals("User Active applications should be 1", 1, queueA .getUser(userName).getActiveApplications()); rm.stop(); }
LeafQueue queueA = (LeafQueue) ((CapacityScheduler) scheduler).getQueue(queueName); Resource amResourceLimit = queueA.getAMResourceLimit();
final String user_2 = "user_2"; assertEquals(Resource.newInstance(16 * GB, 1), queue.getAMResourceLimit()); assertEquals(Resource.newInstance(8 * GB, 1), queue.getUserAMResourceLimit());