PreemptionCandidatesSelector( CapacitySchedulerPreemptionContext preemptionContext) { this.preemptionContext = preemptionContext; this.rc = preemptionContext.getResourceCalculator(); }
private static void deductPreemptableResourcePerApp( CapacitySchedulerPreemptionContext context, Resource totalPartitionResource, Collection<TempAppPerPartition> tas, Resource res) { for (TempAppPerPartition ta : tas) { ta.deductActuallyToBePreempted(context.getResourceCalculator(), totalPartitionResource, res); } }
public static Map<String, Resource> getResToObtainByPartitionForLeafQueue( CapacitySchedulerPreemptionContext context, String queueName, Resource clusterResource) { Map<String, Resource> resToObtainByPartition = new HashMap<>(); // compute resToObtainByPartition considered inter-queue preemption for (TempQueuePerPartition qT : context.getQueuePartitions(queueName)) { if (qT.preemptionDisabled) { continue; } // Only add resToObtainByPartition when actuallyToBePreempted resource >= // 0 if (Resources.greaterThan(context.getResourceCalculator(), clusterResource, qT.getActuallyToBePreempted(), Resources.none())) { resToObtainByPartition.put(qT.partition, Resources.clone(qT.getActuallyToBePreempted())); } } return resToObtainByPartition; }
boolean allowQueuesBalanceAfterAllQueuesSatisfied) { context = preemptionContext; rc = preemptionContext.getResourceCalculator(); this.isReservedPreemptionCandidatesSelector = isReservedPreemptionCandidatesSelector;
tq.deductActuallyToBePreempted(context.getResourceCalculator(), tq.totalPartitionResource, res); Collection<TempAppPerPartition> tas = tq.getApps();