/** * Check sanity of capacities: * - capacity <= maxCapacity * - absCapacity <= absMaximumCapacity */ private static void capacitiesSanityCheck(String queueName, QueueCapacities queueCapacities) { for (String label : queueCapacities.getExistingNodeLabels()) { // The only thing we should care about is absolute capacity <= // absolute max capacity otherwise the absolute max capacity is // no longer an absolute maximum. float absCapacity = queueCapacities.getAbsoluteCapacity(label); float absMaxCapacity = queueCapacities.getAbsoluteMaximumCapacity(label); if (absCapacity > absMaxCapacity) { throw new IllegalArgumentException("Illegal queue capacity setting, " + "(abs-capacity=" + absCapacity + ") > (abs-maximum-capacity=" + absMaxCapacity + "). When label=[" + label + "]"); } } }
public void validateConfigurations(AutoCreatedLeafQueueConfig template) throws SchedulerDynamicEditException { QueueCapacities capacities = template.getQueueCapacities(); for (String label : capacities.getExistingNodeLabels()) { float capacity = capacities.getCapacity(label); if (capacity < 0 || capacity > 1.0f) { throw new SchedulerDynamicEditException( "Capacity demand is not in the [0,1] range: " + capacity); } } }
/** * Check sanity of capacities: * - capacity <= maxCapacity * - absCapacity <= absMaximumCapacity */ private static void capacitiesSanityCheck(String queueName, QueueCapacities queueCapacities) { for (String label : queueCapacities.getExistingNodeLabels()) { float capacity = queueCapacities.getCapacity(label); float maximumCapacity = queueCapacities.getMaximumCapacity(label); if (capacity > maximumCapacity) { throw new IllegalArgumentException("Illegal queue capacity setting, " + "(capacity=" + capacity + ") > (maximum-capacity=" + maximumCapacity + "). When label=[" + label + "]"); } // Actually, this may not needed since we have verified capacity <= // maximumCapacity. And the way we compute absolute capacity (abs(x) = // cap(x) * cap(x.parent) * ...) is a monotone increasing function. But // just keep it here to make sure our compute abs capacity method works // correctly. float absCapacity = queueCapacities.getAbsoluteCapacity(label); float absMaxCapacity = queueCapacities.getAbsoluteMaximumCapacity(label); if (absCapacity > absMaxCapacity) { throw new IllegalArgumentException("Illegal queue capacity setting, " + "(abs-capacity=" + absCapacity + ") > (abs-maximum-capacity=" + absMaxCapacity + "). When label=[" + label + "]"); } } }
/** * Check sanity of capacities: * - capacity <= maxCapacity * - absCapacity <= absMaximumCapacity */ private static void capacitiesSanityCheck(String queueName, QueueCapacities queueCapacities) { for (String label : queueCapacities.getExistingNodeLabels()) { float capacity = queueCapacities.getCapacity(label); float maximumCapacity = queueCapacities.getMaximumCapacity(label); if (capacity > maximumCapacity) { throw new IllegalArgumentException("Illegal queue capacity setting, " + "(capacity=" + capacity + ") > (maximum-capacity=" + maximumCapacity + "). When label=[" + label + "]"); } // Actually, this may not needed since we have verified capacity <= // maximumCapacity. And the way we compute absolute capacity (abs(x) = // cap(x) * cap(x.parent) * ...) is a monotone increasing function. But // just keep it here to make sure our compute abs capacity method works // correctly. float absCapacity = queueCapacities.getAbsoluteCapacity(label); float absMaxCapacity = queueCapacities.getAbsoluteMaximumCapacity(label); if (absCapacity > absMaxCapacity) { throw new IllegalArgumentException("Illegal queue capacity setting, " + "(abs-capacity=" + absCapacity + ") > (abs-maximum-capacity=" + absMaxCapacity + "). When label=[" + label + "]"); } } }
private void updateCapacitiesToZero() throws IOException { try { for( String nodeLabel : parent.getQueueCapacities().getExistingNodeLabels ()) { setEntitlement(nodeLabel, new QueueEntitlement(0.0f, parent.getLeafQueueTemplate() .getQueueCapacities() .getMaximumCapacity(nodeLabel))); } } catch (SchedulerDynamicEditException e) { throw new IOException(e); } } }
private static void updateAbsoluteCapacitiesByNodeLabels( QueueCapacities queueCapacities, QueueCapacities parentQueueCapacities) { for (String label : queueCapacities.getExistingNodeLabels()) { float capacity = queueCapacities.getCapacity(label); if (capacity > 0f) { queueCapacities.setAbsoluteCapacity( label, capacity * (parentQueueCapacities == null ? 1 : parentQueueCapacities .getAbsoluteCapacity(label))); } float maxCapacity = queueCapacities.getMaximumCapacity(label); if (maxCapacity > 0f) { queueCapacities.setAbsoluteMaximumCapacity( label, maxCapacity * (parentQueueCapacities == null ? 1 : parentQueueCapacities .getAbsoluteMaximumCapacity(label))); } } }
private static void updateAbsoluteCapacitiesByNodeLabels( QueueCapacities queueCapacities, QueueCapacities parentQueueCapacities) { for (String label : queueCapacities.getExistingNodeLabels()) { float capacity = queueCapacities.getCapacity(label); if (capacity > 0f) { queueCapacities.setAbsoluteCapacity( label, capacity * (parentQueueCapacities == null ? 1 : parentQueueCapacities .getAbsoluteCapacity(label))); } float maxCapacity = queueCapacities.getMaximumCapacity(label); if (maxCapacity > 0f) { queueCapacities.setAbsoluteMaximumCapacity( label, maxCapacity * (parentQueueCapacities == null ? 1 : parentQueueCapacities .getAbsoluteMaximumCapacity(label))); } } }
private static void updateAbsoluteCapacitiesByNodeLabels( QueueCapacities queueCapacities, QueueCapacities parentQueueCapacities) { for (String label : queueCapacities.getExistingNodeLabels()) { float capacity = queueCapacities.getCapacity(label); if (capacity > 0f) { queueCapacities.setAbsoluteCapacity( label, capacity * (parentQueueCapacities == null ? 1 : parentQueueCapacities .getAbsoluteCapacity(label))); } float maxCapacity = queueCapacities.getMaximumCapacity(label); if (maxCapacity > 0f) { queueCapacities.setAbsoluteMaximumCapacity( label, maxCapacity * (parentQueueCapacities == null ? 1 : parentQueueCapacities .getAbsoluteMaximumCapacity(label))); } } }
for (String nodeLabel : queueCapacities.getExistingNodeLabels()) { float capacityByLabel = queueCapacities.getCapacity(nodeLabel);
float absMaxCapacity; float maxAMLimitPercentage; for (String partitionName : capacities.getExistingNodeLabels()) { usedCapacity = capacities.getUsedCapacity(partitionName) * 100; capacity = capacities.getCapacity(partitionName) * 100;
private void mergeCapacities(QueueCapacities capacities) { for ( String nodeLabel : capacities.getExistingNodeLabels()) { queueCapacities.setCapacity(nodeLabel, capacities.getCapacity(nodeLabel)); queueCapacities.setAbsoluteCapacity(nodeLabel, capacities .getAbsoluteCapacity(nodeLabel)); queueCapacities.setMaximumCapacity(nodeLabel, capacities .getMaximumCapacity(nodeLabel)); queueCapacities.setAbsoluteMaximumCapacity(nodeLabel, capacities .getAbsoluteMaximumCapacity(nodeLabel)); Resource resourceByLabel = labelManager.getResourceByLabel(nodeLabel, csContext.getClusterResource()); getQueueResourceQuotas().setEffectiveMinResource(nodeLabel, Resources.multiply(resourceByLabel, queueCapacities.getAbsoluteCapacity(nodeLabel))); getQueueResourceQuotas().setEffectiveMaxResource(nodeLabel, Resources.multiply(resourceByLabel, queueCapacities .getAbsoluteMaximumCapacity(nodeLabel))); } }