diff --git a/pkg/scheduler/flavorassigner/flavorassigner.go b/pkg/scheduler/flavorassigner/flavorassigner.go index 59fca06a3b2..c5fd89e8343 100644 --- a/pkg/scheduler/flavorassigner/flavorassigner.go +++ b/pkg/scheduler/flavorassigner/flavorassigner.go @@ -327,11 +327,6 @@ const ( fit ) -func preferToAvoidBorrowing(fungiblityConfig kueue.FlavorFungibility) bool { - return (fungiblityConfig.WhenCanBorrow == kueue.TryNextFlavor && fungiblityConfig.WhenCanPreempt == kueue.Preempt) || - (fungiblityConfig.WhenCanBorrow == kueue.TryNextFlavor && fungiblityConfig.WhenCanPreempt == kueue.TryNextFlavor) -} - // isPreferred returns true if mode a is better than b according to the selected policy func isPreferred(a, b granularMode, fungiblityConfig kueue.FlavorFungibility) bool { if a.preemptionMode == noFit { @@ -349,7 +344,7 @@ func isPreferred(a, b granularMode, fungiblityConfig kueue.FlavorFungibility) bo } } - if preferToAvoidBorrowing(fungiblityConfig) { + if fungiblityConfig.WhenCanBorrow == kueue.TryNextFlavor { if a.needsBorrowing != b.needsBorrowing { return !a.needsBorrowing } diff --git a/pkg/scheduler/preemption/preemption_oracle.go b/pkg/scheduler/preemption/preemption_oracle.go index dd91128bbae..0ea3d4af6c0 100644 --- a/pkg/scheduler/preemption/preemption_oracle.go +++ b/pkg/scheduler/preemption/preemption_oracle.go @@ -48,18 +48,19 @@ func (p *PreemptionOracle) SimulatePreemption(log logr.Logger, cq *cache.Cluster workloadUsage: workload.Usage{Quota: resources.FlavorResourceQuantities{fr: quantity}}, }) - if len(candidates) > 0 { - workloadsToPreempt := make([]*workload.Info, len(candidates)) - for i, c := range candidates { - workloadsToPreempt[i] = c.WorkloadInfo - } - revertRemoval := cq.SimulateWorkloadRemoval(workloadsToPreempt) - defer revertRemoval() - } - borrowAfterPreemptions, _ := classical.FindHeightOfLowestSubtreeThatFits(cq, fr, quantity) if len(candidates) == 0 { - return preemptioncommon.NoCandidates, borrowAfterPreemptions + borrow, _ := classical.FindHeightOfLowestSubtreeThatFits(cq, fr, quantity) + return preemptioncommon.NoCandidates, borrow } + + workloadsToPreempt := make([]*workload.Info, len(candidates)) + for i, c := range candidates { + workloadsToPreempt[i] = c.WorkloadInfo + } + revertRemoval := cq.SimulateWorkloadRemoval(workloadsToPreempt) + borrowAfterPreemptions, _ := classical.FindHeightOfLowestSubtreeThatFits(cq, fr, quantity) + revertRemoval() + for _, candidate := range candidates { if candidate.WorkloadInfo.ClusterQueue == cq.Name { return preemptioncommon.Preempt, borrowAfterPreemptions