@Override public Resource getHeadroom() { final FSQueue queue = (FSQueue) this.queue; SchedulingPolicy policy = queue.getPolicy(); Resource queueFairShare = queue.getFairShare(); Resource queueUsage = queue.getResourceUsage(); Resource clusterResource = this.scheduler.getClusterResource(); Resource clusterUsage = this.scheduler.getRootQueueMetrics().getAllocatedResources(); Resource clusterAvailableResource = Resources.subtract(clusterResource, clusterUsage); Resource headroom = policy.getHeadroom(queueFairShare, queueUsage, clusterAvailableResource); if (LOG.isDebugEnabled()) { LOG.debug( "Headroom calculation for " + this.getName() + ":" + "Min(" + "(queueFairShare=" + queueFairShare + " - queueUsage=" + queueUsage + ")," + " clusterAvailableResource=" + clusterAvailableResource + "(clusterResource=" + clusterResource + " - clusterUsage=" + clusterUsage + ")" + "Headroom=" + headroom); } return headroom; }
@Override public void setPolicy(SchedulingPolicy policy) throws AllocationConfigurationException { if (!SchedulingPolicy.isApplicableTo(policy, SchedulingPolicy.DEPTH_LEAF)) { throwPolicyDoesnotApplyException(policy); } super.policy = policy; }