protected void setupConfigurableCapacities( CapacitySchedulerConfiguration configuration) { CSQueueUtils.loadUpdateAndCheckCapacities( getQueuePath(), configuration, queueCapacities, parent == null ? null : parent.getQueueCapacities()); }
float q1AbsCapacity = q1.getQueueCapacities().getAbsoluteCapacity(p); float q2AbsCapacity = q2.getQueueCapacities().getAbsoluteCapacity(p); float used1 = q1.getQueueCapacities().getAbsoluteUsedCapacity(p); float used2 = q2.getQueueCapacities().getAbsoluteUsedCapacity(p); float used1 = q1.getQueueCapacities().getUsedCapacity(p); float used2 = q2.getQueueCapacities().getUsedCapacity(p);
protected void setupConfigurableCapacities() { CSQueueUtils.loadUpdateAndCheckCapacities( getQueuePath(), csContext.getConfiguration(), queueCapacities, parent == null ? null : parent.getQueueCapacities()); }
protected void setupConfigurableCapacities() { CSQueueUtils.loadUpdateAndCheckCapacities( getQueuePath(), csContext.getConfiguration(), queueCapacities, parent == null ? null : parent.getQueueCapacities()); }
sum += queue.getQueueCapacities().getCapacity(nodeLabel);
sum += queue.getQueueCapacities().getCapacity(nodeLabel);
private CSAssignment allocateContainersOnMultiNodes( CandidateNodeSet<FiCaSchedulerNode> candidates) { // When this time look at multiple nodes, try schedule if the // partition has any available resource or killable resource if (getRootQueue().getQueueCapacities().getUsedCapacity( candidates.getPartition()) >= 1.0f && preemptionManager.getKillableResource( CapacitySchedulerConfiguration.ROOT, candidates.getPartition()) == Resources.none()) { if (LOG.isDebugEnabled()) { LOG.debug("This node or this node partition doesn't have available or" + "killable resource"); } return null; } return allocateOrReserveNewContainers(candidates, false); }
public CapacitySchedulerInfo(final CSQueue parent, final NodeLabel nodeLabel) { String label = nodeLabel.getLabelName(); QueueCapacities parentQueueCapacities = parent.getQueueCapacities(); this.queueName = parent.getQueueName(); this.usedCapacity = parent.getUsedCapacity(label) * 100; this.capacity = parentQueueCapacities.getCapacity(label) * 100; float max = parentQueueCapacities.getMaximumCapacity(label); if (max < EPSILON || max > 1f) max = 1f; this.maxCapacity = max * 100; queues = getQueues(parent, nodeLabel); }
public CapacitySchedulerInfo(final CSQueue parent, final NodeLabel nodeLabel) { String label = nodeLabel.getLabelName(); QueueCapacities parentQueueCapacities = parent.getQueueCapacities(); this.queueName = parent.getQueueName(); this.usedCapacity = parent.getUsedCapacity(label) * 100; this.capacity = parentQueueCapacities.getCapacity(label) * 100; float max = parentQueueCapacities.getMaximumCapacity(label); if (max < EPSILON || max > 1f) max = 1f; this.maxCapacity = max * 100; queues = getQueues(parent, nodeLabel); }
private List<CSQueue> mockCSQueues(String[] queueNames, int[] priorities, float[] utilizations, float[] absCapacities, String partition) { // sanity check assert queueNames != null && priorities != null && utilizations != null && queueNames.length > 0 && queueNames.length == priorities.length && priorities.length == utilizations.length; List<CSQueue> list = new ArrayList<>(); for (int i = 0; i < queueNames.length; i++) { CSQueue q = mock(CSQueue.class); when(q.getQueueName()).thenReturn(queueNames[i]); QueueCapacities qc = new QueueCapacities(false); qc.setAbsoluteCapacity(partition, absCapacities[i]); qc.setUsedCapacity(partition, utilizations[i]); when(q.getQueueCapacities()).thenReturn(qc); when(q.getPriority()).thenReturn(Priority.newInstance(priorities[i])); QueueResourceQuotas qr = new QueueResourceQuotas(); when(q.getQueueResourceQuotas()).thenReturn(qr); list.add(q); } return list; }
private void checkQueueUsedCapacity(String queueName, CapacityScheduler cs, String nodePartition, float usedCapacity, float absoluteUsedCapacity) { float epsilon = 1e-6f; CSQueue queue = cs.getQueue(queueName); Assert.assertNotNull("Failed to get queue=" + queueName, queue); Assert.assertEquals(usedCapacity, queue.getQueueCapacities() .getUsedCapacity(nodePartition), epsilon); Assert.assertEquals(absoluteUsedCapacity, queue.getQueueCapacities() .getAbsoluteUsedCapacity(nodePartition), epsilon); }
getParent().getQueueCapacities(). getAbsoluteCapacity(nodeLabel)
public CapacitySchedulerInfo(CSQueue parent, CapacityScheduler cs) { this.queueName = parent.getQueueName(); this.usedCapacity = parent.getUsedCapacity() * 100; this.capacity = parent.getCapacity() * 100; float max = parent.getMaximumCapacity(); if (max < EPSILON || max > 1f) max = 1f; this.maxCapacity = max * 100; capacities = new QueueCapacitiesInfo(parent.getQueueCapacities(), parent.getQueueResourceQuotas(), false); queues = getQueues(parent); health = new CapacitySchedulerHealthInfo(cs); }
private void checkUsedCapacity(MockRM rm, String queueName, int capacity, int total, String label) { float epsillon = 0.0001f; CapacityScheduler scheduler = (CapacityScheduler) rm.getResourceScheduler(); CSQueue queue = scheduler.getQueue(queueName); Assert.assertEquals((float)capacity/total, queue.getQueueCapacities().getUsedCapacity(label), epsillon); }
private int compare(CSQueue q1, CSQueue q2, float q1Used, float q2Used, String partition) { int p1 = 0; int p2 = 0; if (respectPriority) { p1 = q1.getPriority().getPriority(); p2 = q2.getPriority().getPriority(); } int rc = PriorityUtilizationQueueOrderingPolicy.compare(q1Used, q2Used, p1, p2); // For queue with same used ratio / priority, queue with higher configured // capacity goes first if (0 == rc) { Resource minEffRes1 = q1.getQueueResourceQuotas().getConfiguredMinResource(partition); Resource minEffRes2 = q2.getQueueResourceQuotas().getConfiguredMinResource(partition); if (!minEffRes1.equals(Resources.none()) && !minEffRes2.equals( Resources.none())) { return minEffRes2.compareTo(minEffRes1); } float abs1 = q1.getQueueCapacities().getAbsoluteCapacity(partition); float abs2 = q2.getQueueCapacities().getAbsoluteCapacity(partition); return Float.compare(abs2, abs1); } return rc; }
public void checkAbsCapacities(CSQueue queue, String partition, float guaranteed, float max, float used) { QueueCapacities qc = queue.getQueueCapacities(); Assert.assertEquals(guaranteed, qc.getAbsoluteCapacity(partition), 1e-3); Assert.assertEquals(max, qc.getAbsoluteMaximumCapacity(partition), 1e-3); Assert.assertEquals(used, qc.getAbsoluteUsedCapacity(partition), 1e-3); }
CapacitySchedulerQueueInfo(final CSQueue q, final String nodeLabel) { QueueCapacities qCapacities = q.getQueueCapacities(); ResourceUsage queueResourceUsage = q.getQueueResourceUsage(); queuePath = q.getQueuePath(); capacity = qCapacities.getCapacity(nodeLabel) * 100; usedCapacity = q.getUsedCapacity(nodeLabel) * 100; maxCapacity = qCapacities.getMaximumCapacity(nodeLabel); if (maxCapacity < EPSILON || maxCapacity > 1f) maxCapacity = 1f; maxCapacity *= 100; absoluteCapacity = cap(qCapacities.getAbsoluteCapacity(nodeLabel), 0f, 1f) * 100; absoluteMaxCapacity = cap(qCapacities.getAbsoluteMaximumCapacity(nodeLabel), 0f, 1f) * 100; absoluteUsedCapacity = q.getAbsoluteUsedCapacity(nodeLabel) * 100; numApplications = q.getNumApplications(); queueName = q.getQueueName(); state = q.getState(); resourcesUsed = new ResourceInfo(queueResourceUsage.getUsed(nodeLabel)); if (q instanceof PlanQueue && !((PlanQueue) q).showReservationsAsQueues()) { hideReservationQueues = true; } // add labels Set<String> labelSet = q.getAccessibleNodeLabels(); if (labelSet != null) { nodeLabels.addAll(labelSet); Collections.sort(nodeLabels); } }
CapacitySchedulerQueueInfo(final CSQueue q, final String nodeLabel) { QueueCapacities qCapacities = q.getQueueCapacities(); ResourceUsage queueResourceUsage = q.getQueueResourceUsage(); queuePath = q.getQueuePath(); capacity = qCapacities.getCapacity(nodeLabel) * 100; usedCapacity = q.getUsedCapacity(nodeLabel) * 100; maxCapacity = qCapacities.getMaximumCapacity(nodeLabel); if (maxCapacity < EPSILON || maxCapacity > 1f) maxCapacity = 1f; maxCapacity *= 100; absoluteCapacity = cap(qCapacities.getAbsoluteCapacity(nodeLabel), 0f, 1f) * 100; absoluteMaxCapacity = cap(qCapacities.getAbsoluteMaximumCapacity(nodeLabel), 0f, 1f) * 100; absoluteUsedCapacity = q.getAbsoluteUsedCapacity(nodeLabel) * 100; numApplications = q.getNumApplications(); queueName = q.getQueueName(); state = q.getState(); resourcesUsed = new ResourceInfo(queueResourceUsage.getUsed(nodeLabel)); if (q instanceof PlanQueue && !((PlanQueue) q).showReservationsAsQueues()) { hideReservationQueues = true; } // add labels Set<String> labelSet = q.getAccessibleNodeLabels(); if (labelSet != null) { nodeLabels.addAll(labelSet); Collections.sort(nodeLabels); } }
protected void validateEffectiveMinResource(CSQueue leafQueue, String label, Map<String, QueueEntitlement> expectedQueueEntitlements) { ManagedParentQueue parentQueue = (ManagedParentQueue) leafQueue.getParent(); Resource resourceByLabel = mockRM.getRMContext().getNodeLabelManager(). getResourceByLabel(label, cs.getClusterResource()); Resource effMinCapacity = Resources.multiply(resourceByLabel, expectedQueueEntitlements.get(label).getCapacity() * parentQueue .getQueueCapacities().getAbsoluteCapacity(label)); assertEquals(effMinCapacity, Resources.multiply(resourceByLabel, leafQueue.getQueueCapacities().getAbsoluteCapacity(label))); assertEquals(effMinCapacity, leafQueue.getEffectiveCapacity(label)); if (leafQueue.getQueueCapacities().getAbsoluteCapacity(label) > 0) { assertTrue(Resources .greaterThan(cs.getResourceCalculator(), cs.getClusterResource(), effMinCapacity, Resources.none())); } else{ assertTrue(Resources.equals(effMinCapacity, Resources.none())); } }
Collections.sort(nodeLabels); QueueCapacities qCapacities = q.getQueueCapacities(); QueueResourceQuotas qResQuotas = q.getQueueResourceQuotas(); populateQueueCapacities(qCapacities, qResQuotas);