From 50475bd7a620c09a963763aba482bd428393aead Mon Sep 17 00:00:00 2001 From: KunWuLuan Date: Sat, 7 Oct 2023 15:10:46 +0800 Subject: [PATCH] move FlavorResourceQuantities to cache remove Preemption setting in MakeClusterQueue --- .../README.md | 8 +- pkg/cache/cache.go | 2 +- pkg/cache/cache_test.go | 214 ++++++++++++------ pkg/cache/clusterqueue.go | 22 +- pkg/cache/clusterqueue_test.go | 39 ++-- pkg/cache/snapshot.go | 6 +- pkg/cache/snapshot_test.go | 28 +-- .../flavorassigner/flavorassigner.go | 8 +- .../flavorassigner/flavorassigner_test.go | 126 +++++------ pkg/scheduler/preemption/preemption.go | 6 +- pkg/scheduler/scheduler.go | 10 +- pkg/scheduler/scheduler_test.go | 8 +- pkg/util/testing/wrappers.go | 4 - pkg/workload/workload.go | 2 - 14 files changed, 275 insertions(+), 208 deletions(-) diff --git a/keps/582-preempt-based-on-flavor-order/README.md b/keps/582-preempt-based-on-flavor-order/README.md index 029f15a5f7..5d21681f09 100644 --- a/keps/582-preempt-based-on-flavor-order/README.md +++ b/keps/582-preempt-based-on-flavor-order/README.md @@ -246,21 +246,21 @@ func assignFlavors(log logr.Logger, requests []workload.PodSetResources, podSets var assignment Assignment if lastAssignment != nil { assignment = Assignment{ - TotalBorrow: make(workload.FlavorResourceQuantities), + TotalBorrow: make(cache.FlavorResourceQuantities), PodSets: make([]PodSetAssignment, 0, len(requests)), LastState: *lastAssignment, - Usage: make(workload.FlavorResourceQuantities), + Usage: make(cache.FlavorResourceQuantities), } } else { assignment = Assignment{ - TotalBorrow: make(workload.FlavorResourceQuantities), + TotalBorrow: make(cache.FlavorResourceQuantities), PodSets: make([]PodSetAssignment, 0, len(requests)), LastState: workload.AssigmentClusterQueueState{ LastAssignedFlavorIdx: make([]map[corev1.ResourceName]int, 0, len(podSets)), CohortGeneration: 0, ClusterQueueGeneration: cq.Generation, }, - Usage: make(workload.FlavorResourceQuantities), + Usage: make(cache.FlavorResourceQuantities), } if cq.Cohort != nil { assignment.LastState.CohortGeneration = cq.Cohort.Generation diff --git a/pkg/cache/cache.go b/pkg/cache/cache.go index 7295884fb8..9379805631 100644 --- a/pkg/cache/cache.go +++ b/pkg/cache/cache.go @@ -312,7 +312,7 @@ func (c *Cache) AddClusterQueue(ctx context.Context, cq *kueue.ClusterQueue) err qImpl := &queue{ key: qKey, admittedWorkloads: 0, - usage: make(workload.FlavorResourceQuantities), + usage: make(FlavorResourceQuantities), } if err = qImpl.resetFlavorsAndResources(cqImpl.Usage); err != nil { return err diff --git a/pkg/cache/cache_test.go b/pkg/cache/cache_test.go index 53bc97fce3..da778b1895 100644 --- a/pkg/cache/cache_test.go +++ b/pkg/cache/cache_test.go @@ -68,6 +68,13 @@ func TestCacheClusterQueueOperations(t *testing.T) { Cohort("two"). NamespaceSelector(nil). Obj(), + *utiltesting.MakeClusterQueue("f"). + Cohort("two"). + NamespaceSelector(nil). + FlavorFungibility(kueue.FlavorFungibility{ + WhenCanBorrow: kueue.TryNextFlavor, + }). + Obj(), } setup := func(cache *Cache) error { cache.AddOrUpdateResourceFlavor( @@ -111,7 +118,7 @@ func TestCacheClusterQueueOperations(t *testing.T) { }}, NamespaceSelector: labels.Nothing(), FlavorFungibility: defaultFlavorFungibility, - Usage: workload.FlavorResourceQuantities{ + Usage: FlavorResourceQuantities{ "default": {corev1.ResourceCPU: 0}, }, Status: active, @@ -134,7 +141,7 @@ func TestCacheClusterQueueOperations(t *testing.T) { }}, NamespaceSelector: labels.Nothing(), FlavorFungibility: defaultFlavorFungibility, - Usage: workload.FlavorResourceQuantities{ + Usage: FlavorResourceQuantities{ "default": {corev1.ResourceCPU: 0}, }, Status: active, @@ -146,7 +153,7 @@ func TestCacheClusterQueueOperations(t *testing.T) { ResourceGroups: []ResourceGroup{}, NamespaceSelector: labels.Nothing(), FlavorFungibility: defaultFlavorFungibility, - Usage: workload.FlavorResourceQuantities{}, + Usage: FlavorResourceQuantities{}, Status: active, Preemption: defaultPreemption, }, @@ -156,7 +163,7 @@ func TestCacheClusterQueueOperations(t *testing.T) { ResourceGroups: []ResourceGroup{}, NamespaceSelector: labels.Nothing(), FlavorFungibility: defaultFlavorFungibility, - Usage: workload.FlavorResourceQuantities{}, + Usage: FlavorResourceQuantities{}, Status: active, Preemption: defaultPreemption, }, @@ -176,16 +183,29 @@ func TestCacheClusterQueueOperations(t *testing.T) { }}, NamespaceSelector: labels.Nothing(), FlavorFungibility: defaultFlavorFungibility, - Usage: workload.FlavorResourceQuantities{ + Usage: FlavorResourceQuantities{ "nonexistent-flavor": {corev1.ResourceCPU: 0}, }, Status: pending, Preemption: defaultPreemption, }, + "f": { + Name: "f", + AllocatableResourceGeneration: 1, + ResourceGroups: []ResourceGroup{}, + NamespaceSelector: labels.Nothing(), + Usage: FlavorResourceQuantities{}, + Status: active, + Preemption: defaultPreemption, + FlavorFungibility: kueue.FlavorFungibility{ + WhenCanBorrow: kueue.TryNextFlavor, + WhenCanPreempt: kueue.TryNextFlavor, + }, + }, }, wantCohorts: map[string]sets.Set[string]{ "one": sets.New("a", "b"), - "two": sets.New("c", "e"), + "two": sets.New("c", "e", "f"), }, }, { @@ -247,7 +267,7 @@ func TestCacheClusterQueueOperations(t *testing.T) { }}, FlavorFungibility: defaultFlavorFungibility, NamespaceSelector: labels.Nothing(), - Usage: workload.FlavorResourceQuantities{ + Usage: FlavorResourceQuantities{ "default": {corev1.ResourceCPU: 0}, }, Status: active, @@ -270,7 +290,7 @@ func TestCacheClusterQueueOperations(t *testing.T) { }}, FlavorFungibility: defaultFlavorFungibility, NamespaceSelector: labels.Nothing(), - Usage: workload.FlavorResourceQuantities{ + Usage: FlavorResourceQuantities{ "default": {corev1.ResourceCPU: 0}, }, Status: active, @@ -282,7 +302,7 @@ func TestCacheClusterQueueOperations(t *testing.T) { ResourceGroups: []ResourceGroup{}, NamespaceSelector: labels.Nothing(), FlavorFungibility: defaultFlavorFungibility, - Usage: workload.FlavorResourceQuantities{}, + Usage: FlavorResourceQuantities{}, Status: active, Preemption: defaultPreemption, }, @@ -292,7 +312,7 @@ func TestCacheClusterQueueOperations(t *testing.T) { ResourceGroups: []ResourceGroup{}, NamespaceSelector: labels.Nothing(), FlavorFungibility: defaultFlavorFungibility, - Usage: workload.FlavorResourceQuantities{}, + Usage: FlavorResourceQuantities{}, Status: active, Preemption: defaultPreemption, }, @@ -314,16 +334,29 @@ func TestCacheClusterQueueOperations(t *testing.T) { }}, NamespaceSelector: labels.Nothing(), FlavorFungibility: defaultFlavorFungibility, - Usage: workload.FlavorResourceQuantities{ + Usage: FlavorResourceQuantities{ "nonexistent-flavor": {corev1.ResourceCPU: 0}, }, Status: pending, Preemption: defaultPreemption, }, + "f": { + Name: "f", + AllocatableResourceGeneration: 1, + ResourceGroups: []ResourceGroup{}, + NamespaceSelector: labels.Nothing(), + Usage: FlavorResourceQuantities{}, + Status: active, + Preemption: defaultPreemption, + FlavorFungibility: kueue.FlavorFungibility{ + WhenCanBorrow: kueue.TryNextFlavor, + WhenCanPreempt: kueue.TryNextFlavor, + }, + }, }, wantCohorts: map[string]sets.Set[string]{ "one": sets.New("a", "b"), - "two": sets.New("c", "e"), + "two": sets.New("c", "e", "f"), }, }, { @@ -382,7 +415,7 @@ func TestCacheClusterQueueOperations(t *testing.T) { }}, NamespaceSelector: labels.Nothing(), FlavorFungibility: defaultFlavorFungibility, - Usage: workload.FlavorResourceQuantities{ + Usage: FlavorResourceQuantities{ "default": {corev1.ResourceCPU: 0}, }, Status: active, @@ -394,7 +427,7 @@ func TestCacheClusterQueueOperations(t *testing.T) { ResourceGroups: []ResourceGroup{}, NamespaceSelector: labels.Everything(), FlavorFungibility: defaultFlavorFungibility, - Usage: workload.FlavorResourceQuantities{}, + Usage: FlavorResourceQuantities{}, Status: active, Preemption: defaultPreemption, }, @@ -404,7 +437,7 @@ func TestCacheClusterQueueOperations(t *testing.T) { ResourceGroups: []ResourceGroup{}, NamespaceSelector: labels.Nothing(), FlavorFungibility: defaultFlavorFungibility, - Usage: workload.FlavorResourceQuantities{}, + Usage: FlavorResourceQuantities{}, Status: active, Preemption: defaultPreemption, }, @@ -414,7 +447,7 @@ func TestCacheClusterQueueOperations(t *testing.T) { ResourceGroups: []ResourceGroup{}, NamespaceSelector: labels.Nothing(), FlavorFungibility: defaultFlavorFungibility, - Usage: workload.FlavorResourceQuantities{}, + Usage: FlavorResourceQuantities{}, Status: active, Preemption: defaultPreemption, }, @@ -436,16 +469,29 @@ func TestCacheClusterQueueOperations(t *testing.T) { }}, NamespaceSelector: labels.Nothing(), FlavorFungibility: defaultFlavorFungibility, - Usage: workload.FlavorResourceQuantities{ + Usage: FlavorResourceQuantities{ "default": {corev1.ResourceCPU: 0}, }, Status: active, Preemption: defaultPreemption, }, + "f": { + Name: "f", + AllocatableResourceGeneration: 1, + ResourceGroups: []ResourceGroup{}, + NamespaceSelector: labels.Nothing(), + Usage: FlavorResourceQuantities{}, + Status: active, + Preemption: defaultPreemption, + FlavorFungibility: kueue.FlavorFungibility{ + WhenCanBorrow: kueue.TryNextFlavor, + WhenCanPreempt: kueue.TryNextFlavor, + }, + }, }, wantCohorts: map[string]sets.Set[string]{ "one": sets.New("b"), - "two": sets.New("a", "c", "e"), + "two": sets.New("a", "c", "e", "f"), }, }, { @@ -480,7 +526,7 @@ func TestCacheClusterQueueOperations(t *testing.T) { }}, NamespaceSelector: labels.Nothing(), FlavorFungibility: defaultFlavorFungibility, - Usage: workload.FlavorResourceQuantities{ + Usage: FlavorResourceQuantities{ "default": {corev1.ResourceCPU: 0}, }, Status: active, @@ -492,7 +538,7 @@ func TestCacheClusterQueueOperations(t *testing.T) { ResourceGroups: []ResourceGroup{}, NamespaceSelector: labels.Nothing(), FlavorFungibility: defaultFlavorFungibility, - Usage: workload.FlavorResourceQuantities{}, + Usage: FlavorResourceQuantities{}, Status: active, Preemption: defaultPreemption, }, @@ -514,16 +560,29 @@ func TestCacheClusterQueueOperations(t *testing.T) { }}, NamespaceSelector: labels.Nothing(), FlavorFungibility: defaultFlavorFungibility, - Usage: workload.FlavorResourceQuantities{ + Usage: FlavorResourceQuantities{ "nonexistent-flavor": {corev1.ResourceCPU: 0}, }, Status: pending, Preemption: defaultPreemption, }, + "f": { + Name: "f", + AllocatableResourceGeneration: 1, + ResourceGroups: []ResourceGroup{}, + NamespaceSelector: labels.Nothing(), + Usage: FlavorResourceQuantities{}, + Status: active, + Preemption: defaultPreemption, + FlavorFungibility: kueue.FlavorFungibility{ + WhenCanBorrow: kueue.TryNextFlavor, + WhenCanPreempt: kueue.TryNextFlavor, + }, + }, }, wantCohorts: map[string]sets.Set[string]{ "one": sets.New("b"), - "two": sets.New("c", "e"), + "two": sets.New("c", "e", "f"), }, }, { @@ -557,7 +616,7 @@ func TestCacheClusterQueueOperations(t *testing.T) { }}, NamespaceSelector: labels.Nothing(), FlavorFungibility: defaultFlavorFungibility, - Usage: workload.FlavorResourceQuantities{ + Usage: FlavorResourceQuantities{ "default": {corev1.ResourceCPU: 0}, }, Status: active, @@ -580,7 +639,7 @@ func TestCacheClusterQueueOperations(t *testing.T) { }}, NamespaceSelector: labels.Nothing(), FlavorFungibility: defaultFlavorFungibility, - Usage: workload.FlavorResourceQuantities{ + Usage: FlavorResourceQuantities{ "default": {corev1.ResourceCPU: 0}, }, Status: active, @@ -592,7 +651,7 @@ func TestCacheClusterQueueOperations(t *testing.T) { ResourceGroups: []ResourceGroup{}, NamespaceSelector: labels.Nothing(), FlavorFungibility: defaultFlavorFungibility, - Usage: workload.FlavorResourceQuantities{}, + Usage: FlavorResourceQuantities{}, Status: active, Preemption: defaultPreemption, }, @@ -602,7 +661,7 @@ func TestCacheClusterQueueOperations(t *testing.T) { ResourceGroups: []ResourceGroup{}, NamespaceSelector: labels.Nothing(), FlavorFungibility: defaultFlavorFungibility, - Usage: workload.FlavorResourceQuantities{}, + Usage: FlavorResourceQuantities{}, Status: active, Preemption: defaultPreemption, }, @@ -622,14 +681,27 @@ func TestCacheClusterQueueOperations(t *testing.T) { }}, NamespaceSelector: labels.Nothing(), FlavorFungibility: defaultFlavorFungibility, - Usage: workload.FlavorResourceQuantities{"nonexistent-flavor": {corev1.ResourceCPU: 0}}, + Usage: FlavorResourceQuantities{"nonexistent-flavor": {corev1.ResourceCPU: 0}}, Status: active, Preemption: defaultPreemption, }, + "f": { + Name: "f", + AllocatableResourceGeneration: 1, + ResourceGroups: []ResourceGroup{}, + NamespaceSelector: labels.Nothing(), + Usage: FlavorResourceQuantities{}, + Status: active, + Preemption: defaultPreemption, + FlavorFungibility: kueue.FlavorFungibility{ + WhenCanBorrow: kueue.TryNextFlavor, + WhenCanPreempt: kueue.TryNextFlavor, + }, + }, }, wantCohorts: map[string]sets.Set[string]{ "one": sets.New("a", "b"), - "two": sets.New("c", "e"), + "two": sets.New("c", "e", "f"), }, }, { @@ -701,7 +773,7 @@ func TestCacheClusterQueueOperations(t *testing.T) { }, }, FlavorFungibility: defaultFlavorFungibility, - Usage: workload.FlavorResourceQuantities{ + Usage: FlavorResourceQuantities{ "foo": { "cpu": 0, "memory": 0, @@ -799,7 +871,7 @@ func TestCacheClusterQueueOperations(t *testing.T) { Preemption: defaultPreemption, AllocatableResourceGeneration: 1, FlavorFungibility: defaultFlavorFungibility, - AdmissionChecks: sets.Set[string]{"check1": {}, "check2": {}}, + AdmissionChecks: sets.New("check1", "check2"), }, }, wantCohorts: map[string]sets.Set[string]{}, @@ -904,7 +976,7 @@ func TestCacheWorkloadOperations(t *testing.T) { type result struct { Workloads sets.Set[string] - UsedResources workload.FlavorResourceQuantities + UsedResources FlavorResourceQuantities } steps := []struct { @@ -935,14 +1007,14 @@ func TestCacheWorkloadOperations(t *testing.T) { wantResults: map[string]result{ "one": { Workloads: sets.New("/a", "/b"), - UsedResources: workload.FlavorResourceQuantities{ + UsedResources: FlavorResourceQuantities{ "on-demand": {corev1.ResourceCPU: 10}, "spot": {corev1.ResourceCPU: 15}, }, }, "two": { Workloads: sets.New("/c", "/d"), - UsedResources: workload.FlavorResourceQuantities{ + UsedResources: FlavorResourceQuantities{ "on-demand": {corev1.ResourceCPU: 0}, "spot": {corev1.ResourceCPU: 0}, }, @@ -964,14 +1036,14 @@ func TestCacheWorkloadOperations(t *testing.T) { wantResults: map[string]result{ "one": { Workloads: sets.New("/a", "/b"), - UsedResources: workload.FlavorResourceQuantities{ + UsedResources: FlavorResourceQuantities{ "on-demand": {corev1.ResourceCPU: 10}, "spot": {corev1.ResourceCPU: 15}, }, }, "two": { Workloads: sets.New("/c"), - UsedResources: workload.FlavorResourceQuantities{ + UsedResources: FlavorResourceQuantities{ "on-demand": {corev1.ResourceCPU: 0}, "spot": {corev1.ResourceCPU: 0}, }, @@ -992,14 +1064,14 @@ func TestCacheWorkloadOperations(t *testing.T) { wantResults: map[string]result{ "one": { Workloads: sets.New("/a", "/b"), - UsedResources: workload.FlavorResourceQuantities{ + UsedResources: FlavorResourceQuantities{ "on-demand": {corev1.ResourceCPU: 10}, "spot": {corev1.ResourceCPU: 15}, }, }, "two": { Workloads: sets.New("/c"), - UsedResources: workload.FlavorResourceQuantities{ + UsedResources: FlavorResourceQuantities{ "on-demand": {corev1.ResourceCPU: 0}, "spot": {corev1.ResourceCPU: 0}, }, @@ -1021,14 +1093,14 @@ func TestCacheWorkloadOperations(t *testing.T) { wantResults: map[string]result{ "one": { Workloads: sets.New("/b"), - UsedResources: workload.FlavorResourceQuantities{ + UsedResources: FlavorResourceQuantities{ "on-demand": {corev1.ResourceCPU: 0}, "spot": {corev1.ResourceCPU: 0}, }, }, "two": { Workloads: sets.New("/a", "/c"), - UsedResources: workload.FlavorResourceQuantities{ + UsedResources: FlavorResourceQuantities{ "on-demand": {corev1.ResourceCPU: 10}, "spot": {corev1.ResourceCPU: 15}, }, @@ -1050,14 +1122,14 @@ func TestCacheWorkloadOperations(t *testing.T) { wantResults: map[string]result{ "one": { Workloads: sets.New("/a", "/b"), - UsedResources: workload.FlavorResourceQuantities{ + UsedResources: FlavorResourceQuantities{ "on-demand": {corev1.ResourceCPU: 10}, "spot": {corev1.ResourceCPU: 15}, }, }, "two": { Workloads: sets.New("/c"), - UsedResources: workload.FlavorResourceQuantities{ + UsedResources: FlavorResourceQuantities{ "on-demand": {corev1.ResourceCPU: 0}, "spot": {corev1.ResourceCPU: 0}, }, @@ -1079,14 +1151,14 @@ func TestCacheWorkloadOperations(t *testing.T) { wantResults: map[string]result{ "one": { Workloads: sets.New("/a", "/b"), - UsedResources: workload.FlavorResourceQuantities{ + UsedResources: FlavorResourceQuantities{ "on-demand": {corev1.ResourceCPU: 10}, "spot": {corev1.ResourceCPU: 15}, }, }, "two": { Workloads: sets.New("/c"), - UsedResources: workload.FlavorResourceQuantities{ + UsedResources: FlavorResourceQuantities{ "on-demand": {corev1.ResourceCPU: 0}, "spot": {corev1.ResourceCPU: 0}, }, @@ -1107,14 +1179,14 @@ func TestCacheWorkloadOperations(t *testing.T) { wantResults: map[string]result{ "one": { Workloads: sets.New("/a", "/b"), - UsedResources: workload.FlavorResourceQuantities{ + UsedResources: FlavorResourceQuantities{ "on-demand": {corev1.ResourceCPU: 10}, "spot": {corev1.ResourceCPU: 15}, }, }, "two": { Workloads: sets.New("/c", "/d"), - UsedResources: workload.FlavorResourceQuantities{ + UsedResources: FlavorResourceQuantities{ "on-demand": {corev1.ResourceCPU: 0}, "spot": {corev1.ResourceCPU: 0}, }, @@ -1132,14 +1204,14 @@ func TestCacheWorkloadOperations(t *testing.T) { wantResults: map[string]result{ "one": { Workloads: sets.New("/b"), - UsedResources: workload.FlavorResourceQuantities{ + UsedResources: FlavorResourceQuantities{ "on-demand": {corev1.ResourceCPU: 0}, "spot": {corev1.ResourceCPU: 0}, }, }, "two": { Workloads: sets.New("/c"), - UsedResources: workload.FlavorResourceQuantities{ + UsedResources: FlavorResourceQuantities{ "on-demand": {corev1.ResourceCPU: 0}, "spot": {corev1.ResourceCPU: 0}, }, @@ -1155,14 +1227,14 @@ func TestCacheWorkloadOperations(t *testing.T) { wantResults: map[string]result{ "one": { Workloads: sets.New("/b"), - UsedResources: workload.FlavorResourceQuantities{ + UsedResources: FlavorResourceQuantities{ "on-demand": {corev1.ResourceCPU: 0}, "spot": {corev1.ResourceCPU: 0}, }, }, "two": { Workloads: sets.New("/c"), - UsedResources: workload.FlavorResourceQuantities{ + UsedResources: FlavorResourceQuantities{ "on-demand": {corev1.ResourceCPU: 0}, "spot": {corev1.ResourceCPU: 0}, }, @@ -1179,14 +1251,14 @@ func TestCacheWorkloadOperations(t *testing.T) { wantResults: map[string]result{ "one": { Workloads: sets.New("/a", "/b"), - UsedResources: workload.FlavorResourceQuantities{ + UsedResources: FlavorResourceQuantities{ "on-demand": {corev1.ResourceCPU: 10}, "spot": {corev1.ResourceCPU: 15}, }, }, "two": { Workloads: sets.New("/c"), - UsedResources: workload.FlavorResourceQuantities{ + UsedResources: FlavorResourceQuantities{ "on-demand": {corev1.ResourceCPU: 0}, "spot": {corev1.ResourceCPU: 0}, }, @@ -1205,14 +1277,14 @@ func TestCacheWorkloadOperations(t *testing.T) { wantResults: map[string]result{ "one": { Workloads: sets.New("/a", "/b"), - UsedResources: workload.FlavorResourceQuantities{ + UsedResources: FlavorResourceQuantities{ "on-demand": {corev1.ResourceCPU: 10}, "spot": {corev1.ResourceCPU: 15}, }, }, "two": { Workloads: sets.New("/c"), - UsedResources: workload.FlavorResourceQuantities{ + UsedResources: FlavorResourceQuantities{ "on-demand": {corev1.ResourceCPU: 0}, "spot": {corev1.ResourceCPU: 0}, }, @@ -1230,14 +1302,14 @@ func TestCacheWorkloadOperations(t *testing.T) { wantResults: map[string]result{ "one": { Workloads: sets.New("/a", "/b"), - UsedResources: workload.FlavorResourceQuantities{ + UsedResources: FlavorResourceQuantities{ "on-demand": {corev1.ResourceCPU: 10}, "spot": {corev1.ResourceCPU: 15}, }, }, "two": { Workloads: sets.New("/c"), - UsedResources: workload.FlavorResourceQuantities{ + UsedResources: FlavorResourceQuantities{ "on-demand": {corev1.ResourceCPU: 0}, "spot": {corev1.ResourceCPU: 0}, }, @@ -1267,14 +1339,14 @@ func TestCacheWorkloadOperations(t *testing.T) { wantResults: map[string]result{ "one": { Workloads: sets.New("/a", "/b", "/d"), - UsedResources: workload.FlavorResourceQuantities{ + UsedResources: FlavorResourceQuantities{ "on-demand": {corev1.ResourceCPU: 20}, "spot": {corev1.ResourceCPU: 30}, }, }, "two": { Workloads: sets.New("/c", "/e"), - UsedResources: workload.FlavorResourceQuantities{ + UsedResources: FlavorResourceQuantities{ "on-demand": {corev1.ResourceCPU: 10}, "spot": {corev1.ResourceCPU: 15}, }, @@ -1300,14 +1372,14 @@ func TestCacheWorkloadOperations(t *testing.T) { wantResults: map[string]result{ "one": { Workloads: sets.New("/a", "/b"), - UsedResources: workload.FlavorResourceQuantities{ + UsedResources: FlavorResourceQuantities{ "on-demand": {corev1.ResourceCPU: 10}, "spot": {corev1.ResourceCPU: 15}, }, }, "two": { Workloads: sets.New("/c"), - UsedResources: workload.FlavorResourceQuantities{ + UsedResources: FlavorResourceQuantities{ "on-demand": {corev1.ResourceCPU: 0}, "spot": {corev1.ResourceCPU: 0}, }, @@ -1340,14 +1412,14 @@ func TestCacheWorkloadOperations(t *testing.T) { wantResults: map[string]result{ "one": { Workloads: sets.New("/a", "/b"), - UsedResources: workload.FlavorResourceQuantities{ + UsedResources: FlavorResourceQuantities{ "on-demand": {corev1.ResourceCPU: 10}, "spot": {corev1.ResourceCPU: 15}, }, }, "two": { Workloads: sets.New("/c", "/e"), - UsedResources: workload.FlavorResourceQuantities{ + UsedResources: FlavorResourceQuantities{ "on-demand": {corev1.ResourceCPU: 10}, "spot": {corev1.ResourceCPU: 15}, }, @@ -1372,14 +1444,14 @@ func TestCacheWorkloadOperations(t *testing.T) { wantResults: map[string]result{ "one": { Workloads: sets.New("/a", "/b"), - UsedResources: workload.FlavorResourceQuantities{ + UsedResources: FlavorResourceQuantities{ "on-demand": {corev1.ResourceCPU: 10}, "spot": {corev1.ResourceCPU: 15}, }, }, "two": { Workloads: sets.New("/c"), - UsedResources: workload.FlavorResourceQuantities{ + UsedResources: FlavorResourceQuantities{ "on-demand": {corev1.ResourceCPU: 0}, "spot": {corev1.ResourceCPU: 0}, }, @@ -1414,14 +1486,14 @@ func TestCacheWorkloadOperations(t *testing.T) { wantResults: map[string]result{ "one": { Workloads: sets.New("/a", "/b", "/d"), - UsedResources: workload.FlavorResourceQuantities{ + UsedResources: FlavorResourceQuantities{ "on-demand": {corev1.ResourceCPU: 20}, "spot": {corev1.ResourceCPU: 30}, }, }, "two": { Workloads: sets.New("/c", "/e"), - UsedResources: workload.FlavorResourceQuantities{ + UsedResources: FlavorResourceQuantities{ "on-demand": {corev1.ResourceCPU: 10}, "spot": {corev1.ResourceCPU: 15}, }, @@ -1966,7 +2038,7 @@ func TestCacheQueueOperations(t *testing.T) { "ns1/alpha": { key: "ns1/alpha", admittedWorkloads: 1, - usage: workload.FlavorResourceQuantities{ + usage: FlavorResourceQuantities{ "spot": { corev1.ResourceCPU: workload.ResourceValue(corev1.ResourceCPU, resource.MustParse("2")), corev1.ResourceMemory: workload.ResourceValue(corev1.ResourceMemory, resource.MustParse("8Gi")), @@ -1979,7 +2051,7 @@ func TestCacheQueueOperations(t *testing.T) { "ns2/beta": { key: "ns2/beta", admittedWorkloads: 2, - usage: workload.FlavorResourceQuantities{ + usage: FlavorResourceQuantities{ "spot": { corev1.ResourceCPU: workload.ResourceValue(corev1.ResourceCPU, resource.MustParse("0")), corev1.ResourceMemory: workload.ResourceValue(corev1.ResourceMemory, resource.MustParse("0")), @@ -1992,7 +2064,7 @@ func TestCacheQueueOperations(t *testing.T) { "ns1/gamma": { key: "ns1/gamma", admittedWorkloads: 1, - usage: workload.FlavorResourceQuantities{ + usage: FlavorResourceQuantities{ "ondemand": { corev1.ResourceCPU: workload.ResourceValue(corev1.ResourceCPU, resource.MustParse("5")), corev1.ResourceMemory: workload.ResourceValue(corev1.ResourceMemory, resource.MustParse("16Gi")), @@ -2007,7 +2079,7 @@ func TestCacheQueueOperations(t *testing.T) { "ns1/alpha": { key: "ns1/alpha", admittedWorkloads: 0, - usage: workload.FlavorResourceQuantities{ + usage: FlavorResourceQuantities{ "spot": { corev1.ResourceCPU: workload.ResourceValue(corev1.ResourceCPU, resource.MustParse("0")), corev1.ResourceMemory: workload.ResourceValue(corev1.ResourceMemory, resource.MustParse("0")), @@ -2020,7 +2092,7 @@ func TestCacheQueueOperations(t *testing.T) { "ns2/beta": { key: "ns2/beta", admittedWorkloads: 0, - usage: workload.FlavorResourceQuantities{ + usage: FlavorResourceQuantities{ "spot": { corev1.ResourceCPU: workload.ResourceValue(corev1.ResourceCPU, resource.MustParse("0")), corev1.ResourceMemory: workload.ResourceValue(corev1.ResourceMemory, resource.MustParse("0")), @@ -2033,7 +2105,7 @@ func TestCacheQueueOperations(t *testing.T) { "ns1/gamma": { key: "ns1/gamma", admittedWorkloads: 0, - usage: workload.FlavorResourceQuantities{ + usage: FlavorResourceQuantities{ "ondemand": { corev1.ResourceCPU: workload.ResourceValue(corev1.ResourceCPU, resource.MustParse("0")), corev1.ResourceMemory: workload.ResourceValue(corev1.ResourceMemory, resource.MustParse("0")), diff --git a/pkg/cache/clusterqueue.go b/pkg/cache/clusterqueue.go index 7628682202..7c5bdd7b9e 100644 --- a/pkg/cache/clusterqueue.go +++ b/pkg/cache/clusterqueue.go @@ -27,7 +27,7 @@ type ClusterQueue struct { Cohort *Cohort ResourceGroups []ResourceGroup RGByResource map[corev1.ResourceName]*ResourceGroup - Usage workload.FlavorResourceQuantities + Usage FlavorResourceQuantities Workloads map[string]*workload.Info WorkloadsNotReady sets.Set[string] NamespaceSelector labels.Selector @@ -54,8 +54,8 @@ type Cohort struct { Members sets.Set[*ClusterQueue] // These fields are only populated for a snapshot. - RequestableResources workload.FlavorResourceQuantities - Usage workload.FlavorResourceQuantities + RequestableResources FlavorResourceQuantities + Usage FlavorResourceQuantities // This field will only be set in snapshot. This field equal to the sum of // allocatable generation among its members. AllocatableResourceGeneration int64 @@ -81,10 +81,12 @@ type ResourceQuota struct { BorrowingLimit *int64 } +type FlavorResourceQuantities map[kueue.ResourceFlavorReference]map[corev1.ResourceName]int64 + type queue struct { key string admittedWorkloads int - usage workload.FlavorResourceQuantities + usage FlavorResourceQuantities } func newCohort(name string, size int) *Cohort { @@ -94,7 +96,7 @@ func newCohort(name string, size int) *Cohort { } } -func (c *Cohort) CanFit(q workload.FlavorResourceQuantities) bool { +func (c *Cohort) CanFit(q FlavorResourceQuantities) bool { for flavor, qResources := range q { if cohortResources, flavorFound := c.RequestableResources[flavor]; flavorFound { cohortUsage := c.Usage[flavor] @@ -150,7 +152,7 @@ func (c *ClusterQueue) update(in *kueue.ClusterQueue, resourceFlavors map[kueue. c.NamespaceSelector = nsSelector // Cleanup removed flavors or resources. - usedFlavorResources := make(workload.FlavorResourceQuantities) + usedFlavorResources := make(FlavorResourceQuantities) for _, rg := range in.Spec.ResourceGroups { for _, f := range rg.Flavors { existingUsedResources := c.Usage[f.Name] @@ -354,7 +356,7 @@ func (c *ClusterQueue) updateWorkloadUsage(wi *workload.Info, m int64) { } } -func updateUsage(wi *workload.Info, flvUsage workload.FlavorResourceQuantities, m int64) { +func updateUsage(wi *workload.Info, flvUsage FlavorResourceQuantities, m int64) { for _, ps := range wi.TotalRequests { for wlRes, wlResFlv := range ps.Flavors { v, wlResExist := ps.Requests[wlRes] @@ -378,7 +380,7 @@ func (c *ClusterQueue) addLocalQueue(q *kueue.LocalQueue) error { qImpl := &queue{ key: qKey, admittedWorkloads: 0, - usage: make(workload.FlavorResourceQuantities), + usage: make(FlavorResourceQuantities), } if err := qImpl.resetFlavorsAndResources(c.Usage); err != nil { return err @@ -409,9 +411,9 @@ func (c *ClusterQueue) flavorInUse(flavor string) bool { return false } -func (q *queue) resetFlavorsAndResources(cqUsage workload.FlavorResourceQuantities) error { +func (q *queue) resetFlavorsAndResources(cqUsage FlavorResourceQuantities) error { // Clean up removed flavors or resources. - usedFlavorResources := make(workload.FlavorResourceQuantities) + usedFlavorResources := make(FlavorResourceQuantities) for cqFlv, cqRes := range cqUsage { existingUsedResources := q.usage[cqFlv] usedResources := make(map[corev1.ResourceName]int64, len(cqRes)) diff --git a/pkg/cache/clusterqueue_test.go b/pkg/cache/clusterqueue_test.go index a5a522492a..8bd8052bf4 100644 --- a/pkg/cache/clusterqueue_test.go +++ b/pkg/cache/clusterqueue_test.go @@ -8,7 +8,6 @@ import ( kueue "sigs.k8s.io/kueue/apis/kueue/v1beta1" "sigs.k8s.io/kueue/pkg/metrics" utiltesting "sigs.k8s.io/kueue/pkg/util/testing" - "sigs.k8s.io/kueue/pkg/workload" ) func TestClusterQueueUpdateWithFlavors(t *testing.T) { @@ -73,13 +72,13 @@ func TestClusterQueueUpdateWithFlavors(t *testing.T) { func TestCohortCanFit(t *testing.T) { cases := map[string]struct { c *Cohort - request workload.FlavorResourceQuantities + request FlavorResourceQuantities wantFit bool }{ "full cohort, empty request": { c: &Cohort{ Name: "C", - RequestableResources: workload.FlavorResourceQuantities{ + RequestableResources: FlavorResourceQuantities{ "f1": map[corev1.ResourceName]int64{ corev1.ResourceCPU: 5, corev1.ResourceMemory: 5, @@ -89,7 +88,7 @@ func TestCohortCanFit(t *testing.T) { corev1.ResourceMemory: 5, }, }, - Usage: workload.FlavorResourceQuantities{ + Usage: FlavorResourceQuantities{ "f1": map[corev1.ResourceName]int64{ corev1.ResourceCPU: 5, corev1.ResourceMemory: 5, @@ -100,13 +99,13 @@ func TestCohortCanFit(t *testing.T) { }, }, }, - request: workload.FlavorResourceQuantities{}, + request: FlavorResourceQuantities{}, wantFit: true, }, "can fit": { c: &Cohort{ Name: "C", - RequestableResources: workload.FlavorResourceQuantities{ + RequestableResources: FlavorResourceQuantities{ "f1": map[corev1.ResourceName]int64{ corev1.ResourceCPU: 5, corev1.ResourceMemory: 5, @@ -116,7 +115,7 @@ func TestCohortCanFit(t *testing.T) { corev1.ResourceMemory: 5, }, }, - Usage: workload.FlavorResourceQuantities{ + Usage: FlavorResourceQuantities{ "f1": map[corev1.ResourceName]int64{ corev1.ResourceCPU: 5, corev1.ResourceMemory: 5, @@ -127,7 +126,7 @@ func TestCohortCanFit(t *testing.T) { }, }, }, - request: workload.FlavorResourceQuantities{ + request: FlavorResourceQuantities{ "f2": map[corev1.ResourceName]int64{ corev1.ResourceCPU: 1, corev1.ResourceMemory: 1, @@ -138,7 +137,7 @@ func TestCohortCanFit(t *testing.T) { "full cohort, none fit": { c: &Cohort{ Name: "C", - RequestableResources: workload.FlavorResourceQuantities{ + RequestableResources: FlavorResourceQuantities{ "f1": map[corev1.ResourceName]int64{ corev1.ResourceCPU: 5, corev1.ResourceMemory: 5, @@ -148,7 +147,7 @@ func TestCohortCanFit(t *testing.T) { corev1.ResourceMemory: 5, }, }, - Usage: workload.FlavorResourceQuantities{ + Usage: FlavorResourceQuantities{ "f1": map[corev1.ResourceName]int64{ corev1.ResourceCPU: 5, corev1.ResourceMemory: 5, @@ -159,7 +158,7 @@ func TestCohortCanFit(t *testing.T) { }, }, }, - request: workload.FlavorResourceQuantities{ + request: FlavorResourceQuantities{ "f1": map[corev1.ResourceName]int64{ corev1.ResourceCPU: 1, corev1.ResourceMemory: 1, @@ -174,7 +173,7 @@ func TestCohortCanFit(t *testing.T) { "one cannot fit": { c: &Cohort{ Name: "C", - RequestableResources: workload.FlavorResourceQuantities{ + RequestableResources: FlavorResourceQuantities{ "f1": map[corev1.ResourceName]int64{ corev1.ResourceCPU: 5, corev1.ResourceMemory: 5, @@ -184,7 +183,7 @@ func TestCohortCanFit(t *testing.T) { corev1.ResourceMemory: 5, }, }, - Usage: workload.FlavorResourceQuantities{ + Usage: FlavorResourceQuantities{ "f1": map[corev1.ResourceName]int64{ corev1.ResourceCPU: 4, corev1.ResourceMemory: 4, @@ -195,7 +194,7 @@ func TestCohortCanFit(t *testing.T) { }, }, }, - request: workload.FlavorResourceQuantities{ + request: FlavorResourceQuantities{ "f1": map[corev1.ResourceName]int64{ corev1.ResourceCPU: 1, corev1.ResourceMemory: 1, @@ -210,20 +209,20 @@ func TestCohortCanFit(t *testing.T) { "missing flavor": { c: &Cohort{ Name: "C", - RequestableResources: workload.FlavorResourceQuantities{ + RequestableResources: FlavorResourceQuantities{ "f1": map[corev1.ResourceName]int64{ corev1.ResourceCPU: 5, corev1.ResourceMemory: 5, }, }, - Usage: workload.FlavorResourceQuantities{ + Usage: FlavorResourceQuantities{ "f1": map[corev1.ResourceName]int64{ corev1.ResourceCPU: 5, corev1.ResourceMemory: 5, }, }, }, - request: workload.FlavorResourceQuantities{ + request: FlavorResourceQuantities{ "f2": map[corev1.ResourceName]int64{ corev1.ResourceCPU: 1, corev1.ResourceMemory: 1, @@ -234,18 +233,18 @@ func TestCohortCanFit(t *testing.T) { "missing resource": { c: &Cohort{ Name: "C", - RequestableResources: workload.FlavorResourceQuantities{ + RequestableResources: FlavorResourceQuantities{ "f1": map[corev1.ResourceName]int64{ corev1.ResourceCPU: 5, }, }, - Usage: workload.FlavorResourceQuantities{ + Usage: FlavorResourceQuantities{ "f1": map[corev1.ResourceName]int64{ corev1.ResourceCPU: 3, }, }, }, - request: workload.FlavorResourceQuantities{ + request: FlavorResourceQuantities{ "f1": map[corev1.ResourceName]int64{ corev1.ResourceCPU: 1, corev1.ResourceMemory: 1, diff --git a/pkg/cache/snapshot.go b/pkg/cache/snapshot.go index 457c1001a1..709390fb66 100644 --- a/pkg/cache/snapshot.go +++ b/pkg/cache/snapshot.go @@ -97,7 +97,7 @@ func (c *ClusterQueue) snapshot() *ClusterQueue { RGByResource: c.RGByResource, // Shallow copy is enough. FlavorFungibility: c.FlavorFungibility, AllocatableResourceGeneration: c.AllocatableResourceGeneration, - Usage: make(workload.FlavorResourceQuantities, len(c.Usage)), + Usage: make(FlavorResourceQuantities, len(c.Usage)), Workloads: make(map[string]*workload.Info, len(c.Workloads)), Preemption: c.Preemption, NamespaceSelector: c.NamespaceSelector, @@ -120,7 +120,7 @@ func (c *ClusterQueue) snapshot() *ClusterQueue { func (c *ClusterQueue) accumulateResources(cohort *Cohort) { if cohort.RequestableResources == nil { - cohort.RequestableResources = make(workload.FlavorResourceQuantities, len(c.ResourceGroups)) + cohort.RequestableResources = make(FlavorResourceQuantities, len(c.ResourceGroups)) } for _, rg := range c.ResourceGroups { for _, flvQuotas := range rg.Flavors { @@ -135,7 +135,7 @@ func (c *ClusterQueue) accumulateResources(cohort *Cohort) { } } if cohort.Usage == nil { - cohort.Usage = make(workload.FlavorResourceQuantities, len(c.Usage)) + cohort.Usage = make(FlavorResourceQuantities, len(c.Usage)) } for fName, resUsages := range c.Usage { used := cohort.Usage[fName] diff --git a/pkg/cache/snapshot_test.go b/pkg/cache/snapshot_test.go index 97b6cce796..fd187dd123 100644 --- a/pkg/cache/snapshot_test.go +++ b/pkg/cache/snapshot_test.go @@ -198,7 +198,7 @@ func TestSnapshot(t *testing.T) { cohort := &Cohort{ Name: "borrowing", AllocatableResourceGeneration: 2, - RequestableResources: workload.FlavorResourceQuantities{ + RequestableResources: FlavorResourceQuantities{ "demand": { corev1.ResourceCPU: 100_000, }, @@ -209,7 +209,7 @@ func TestSnapshot(t *testing.T) { "example.com/gpu": 50, }, }, - Usage: workload.FlavorResourceQuantities{ + Usage: FlavorResourceQuantities{ "demand": { corev1.ResourceCPU: 10_000, }, @@ -248,7 +248,7 @@ func TestSnapshot(t *testing.T) { }, }, FlavorFungibility: defaultFlavorFungibility, - Usage: workload.FlavorResourceQuantities{ + Usage: FlavorResourceQuantities{ "demand": {corev1.ResourceCPU: 10_000}, "spot": {corev1.ResourceCPU: 0}, }, @@ -292,7 +292,7 @@ func TestSnapshot(t *testing.T) { }, }, FlavorFungibility: defaultFlavorFungibility, - Usage: workload.FlavorResourceQuantities{ + Usage: FlavorResourceQuantities{ "spot": { corev1.ResourceCPU: 10_000, }, @@ -344,7 +344,7 @@ func TestSnapshot(t *testing.T) { }, }, FlavorFungibility: defaultFlavorFungibility, - Usage: workload.FlavorResourceQuantities{ + Usage: FlavorResourceQuantities{ "default": { corev1.ResourceCPU: 0, }, @@ -507,7 +507,7 @@ func TestSnapshotAddRemoveWorkload(t *testing.T) { Name: "cohort", AllocatableResourceGeneration: 2, RequestableResources: initialCohortResources, - Usage: workload.FlavorResourceQuantities{ + Usage: FlavorResourceQuantities{ "default": {corev1.ResourceCPU: 0}, "alpha": {corev1.ResourceMemory: 0}, "beta": {corev1.ResourceMemory: 0}, @@ -522,7 +522,7 @@ func TestSnapshotAddRemoveWorkload(t *testing.T) { ResourceGroups: cqCache.clusterQueues["c1"].ResourceGroups, FlavorFungibility: defaultFlavorFungibility, AllocatableResourceGeneration: 1, - Usage: workload.FlavorResourceQuantities{ + Usage: FlavorResourceQuantities{ "default": {corev1.ResourceCPU: 0}, "alpha": {corev1.ResourceMemory: 0}, "beta": {corev1.ResourceMemory: 0}, @@ -535,7 +535,7 @@ func TestSnapshotAddRemoveWorkload(t *testing.T) { ResourceGroups: cqCache.clusterQueues["c2"].ResourceGroups, FlavorFungibility: defaultFlavorFungibility, AllocatableResourceGeneration: 1, - Usage: workload.FlavorResourceQuantities{ + Usage: FlavorResourceQuantities{ "default": {corev1.ResourceCPU: 0}, }, }, @@ -550,7 +550,7 @@ func TestSnapshotAddRemoveWorkload(t *testing.T) { Name: "cohort", AllocatableResourceGeneration: 2, RequestableResources: initialCohortResources, - Usage: workload.FlavorResourceQuantities{ + Usage: FlavorResourceQuantities{ "default": {corev1.ResourceCPU: 2_000}, "alpha": {corev1.ResourceMemory: utiltesting.Gi}, "beta": {corev1.ResourceMemory: utiltesting.Gi}, @@ -568,7 +568,7 @@ func TestSnapshotAddRemoveWorkload(t *testing.T) { AllocatableResourceGeneration: 1, ResourceGroups: cqCache.clusterQueues["c1"].ResourceGroups, FlavorFungibility: defaultFlavorFungibility, - Usage: workload.FlavorResourceQuantities{ + Usage: FlavorResourceQuantities{ "default": {corev1.ResourceCPU: 0}, "alpha": {corev1.ResourceMemory: utiltesting.Gi}, "beta": {corev1.ResourceMemory: utiltesting.Gi}, @@ -584,7 +584,7 @@ func TestSnapshotAddRemoveWorkload(t *testing.T) { ResourceGroups: cqCache.clusterQueues["c2"].ResourceGroups, FlavorFungibility: defaultFlavorFungibility, AllocatableResourceGeneration: 1, - Usage: workload.FlavorResourceQuantities{ + Usage: FlavorResourceQuantities{ "default": {corev1.ResourceCPU: 2_000}, }, }, @@ -599,7 +599,7 @@ func TestSnapshotAddRemoveWorkload(t *testing.T) { Name: "cohort", AllocatableResourceGeneration: 2, RequestableResources: initialCohortResources, - Usage: workload.FlavorResourceQuantities{ + Usage: FlavorResourceQuantities{ "default": {corev1.ResourceCPU: 3_000}, "alpha": {corev1.ResourceMemory: 0}, "beta": {corev1.ResourceMemory: utiltesting.Gi}, @@ -617,7 +617,7 @@ func TestSnapshotAddRemoveWorkload(t *testing.T) { AllocatableResourceGeneration: 1, ResourceGroups: cqCache.clusterQueues["c1"].ResourceGroups, FlavorFungibility: defaultFlavorFungibility, - Usage: workload.FlavorResourceQuantities{ + Usage: FlavorResourceQuantities{ "default": {corev1.ResourceCPU: 1_000}, "alpha": {corev1.ResourceMemory: 0}, "beta": {corev1.ResourceMemory: utiltesting.Gi}, @@ -633,7 +633,7 @@ func TestSnapshotAddRemoveWorkload(t *testing.T) { AllocatableResourceGeneration: 1, ResourceGroups: cqCache.clusterQueues["c2"].ResourceGroups, FlavorFungibility: defaultFlavorFungibility, - Usage: workload.FlavorResourceQuantities{ + Usage: FlavorResourceQuantities{ "default": {corev1.ResourceCPU: 2_000}, }, }, diff --git a/pkg/scheduler/flavorassigner/flavorassigner.go b/pkg/scheduler/flavorassigner/flavorassigner.go index f5bb45200a..d3e1cdc8f6 100644 --- a/pkg/scheduler/flavorassigner/flavorassigner.go +++ b/pkg/scheduler/flavorassigner/flavorassigner.go @@ -40,12 +40,12 @@ import ( type Assignment struct { PodSets []PodSetAssignment - TotalBorrow workload.FlavorResourceQuantities + TotalBorrow cache.FlavorResourceQuantities LastState workload.AssigmentClusterQueueState // Usage is the accumulated Usage of resources as pod sets get // flavors assigned. - Usage workload.FlavorResourceQuantities + Usage cache.FlavorResourceQuantities // representativeMode is the cached representative mode for this assignment. representativeMode *FlavorAssignmentMode @@ -253,9 +253,9 @@ func AssignFlavors(log logr.Logger, wl *workload.Info, resourceFlavors map[kueue func assignFlavors(log logr.Logger, requests []workload.PodSetResources, podSets []kueue.PodSet, resourceFlavors map[kueue.ResourceFlavorReference]*kueue.ResourceFlavor, cq *cache.ClusterQueue, lastAssignment *workload.AssigmentClusterQueueState) Assignment { assignment := Assignment{ - TotalBorrow: make(workload.FlavorResourceQuantities), + TotalBorrow: make(cache.FlavorResourceQuantities), PodSets: make([]PodSetAssignment, 0, len(requests)), - Usage: make(workload.FlavorResourceQuantities), + Usage: make(cache.FlavorResourceQuantities), } if lastAssignment != nil { assignment.LastState = *lastAssignment diff --git a/pkg/scheduler/flavorassigner/flavorassigner_test.go b/pkg/scheduler/flavorassigner/flavorassigner_test.go index 4dff432f38..3a466cae4a 100644 --- a/pkg/scheduler/flavorassigner/flavorassigner_test.go +++ b/pkg/scheduler/flavorassigner/flavorassigner_test.go @@ -98,7 +98,7 @@ func TestAssignFlavors(t *testing.T) { Count: 1, }, }, - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "default": map[corev1.ResourceName]int64{ corev1.ResourceCPU: 1000, corev1.ResourceMemory: 1 * 1024 * 1024, @@ -141,7 +141,7 @@ func TestAssignFlavors(t *testing.T) { }, Count: 1, }}, - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "tainted": { corev1.ResourceCPU: 1000, }, @@ -164,7 +164,7 @@ func TestAssignFlavors(t *testing.T) { }, }}, }}, - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "default": {corev1.ResourceCPU: 3_000}, }, }, @@ -183,7 +183,7 @@ func TestAssignFlavors(t *testing.T) { }, Count: 1, }}, - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "default": { corev1.ResourceCPU: 2000, }, @@ -249,7 +249,7 @@ func TestAssignFlavors(t *testing.T) { }, Count: 1, }}, - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "two": map[corev1.ResourceName]int64{ corev1.ResourceCPU: 3000, }, @@ -287,7 +287,7 @@ func TestAssignFlavors(t *testing.T) { }}, }, }, - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "one": {corev1.ResourceCPU: 1000}, }, }, @@ -305,7 +305,7 @@ func TestAssignFlavors(t *testing.T) { }, Count: 1, }}, - Usage: workload.FlavorResourceQuantities{}, + Usage: cache.FlavorResourceQuantities{}, }, }, "multiple resource groups with multiple resources, fits": { @@ -372,7 +372,7 @@ func TestAssignFlavors(t *testing.T) { }, Count: 1, }}, - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "two": map[corev1.ResourceName]int64{ corev1.ResourceCPU: 3000, corev1.ResourceMemory: 10 * 1024 * 1024, @@ -422,11 +422,11 @@ func TestAssignFlavors(t *testing.T) { }}, }, }, - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "two": {corev1.ResourceMemory: 10 * utiltesting.Mi}, }, Cohort: &cache.Cohort{ - RequestableResources: workload.FlavorResourceQuantities{ + RequestableResources: cache.FlavorResourceQuantities{ "one": { corev1.ResourceCPU: 2000, corev1.ResourceMemory: utiltesting.Gi, @@ -439,7 +439,7 @@ func TestAssignFlavors(t *testing.T) { "example.com/gpu": 4, }, }, - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "two": { corev1.ResourceMemory: 10 * utiltesting.Mi, }, @@ -472,7 +472,7 @@ func TestAssignFlavors(t *testing.T) { }, Count: 1, }}, - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "two": map[corev1.ResourceName]int64{ corev1.ResourceCPU: 3000, corev1.ResourceMemory: 10 * 1024 * 1024, @@ -528,7 +528,7 @@ func TestAssignFlavors(t *testing.T) { }, Count: 1, }}, - Usage: workload.FlavorResourceQuantities{}, + Usage: cache.FlavorResourceQuantities{}, }, }, "multiple flavors, fits while skipping tainted flavor": { @@ -570,7 +570,7 @@ func TestAssignFlavors(t *testing.T) { }, Count: 1, }}, - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "two": map[corev1.ResourceName]int64{ corev1.ResourceCPU: 3000, }, @@ -616,7 +616,7 @@ func TestAssignFlavors(t *testing.T) { }, Count: 1, }}, - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "two": map[corev1.ResourceName]int64{ corev1.ResourceCPU: 3000, }, @@ -694,7 +694,7 @@ func TestAssignFlavors(t *testing.T) { }, Count: 1, }}, - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "two": map[corev1.ResourceName]int64{ corev1.ResourceCPU: 1000, }, @@ -769,7 +769,7 @@ func TestAssignFlavors(t *testing.T) { }, Count: 1, }}, - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "two": map[corev1.ResourceName]int64{ corev1.ResourceCPU: 1000, corev1.ResourceMemory: 1 * 1024 * 1024, @@ -852,7 +852,7 @@ func TestAssignFlavors(t *testing.T) { }, Count: 1, }}, - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "one": map[corev1.ResourceName]int64{ corev1.ResourceCPU: 1000, }, @@ -923,7 +923,7 @@ func TestAssignFlavors(t *testing.T) { }, Count: 1, }}, - Usage: workload.FlavorResourceQuantities{}, + Usage: cache.FlavorResourceQuantities{}, }, }, "multiple specs, fit different flavors": { @@ -980,7 +980,7 @@ func TestAssignFlavors(t *testing.T) { Count: 1, }, }, - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "one": map[corev1.ResourceName]int64{ corev1.ResourceCPU: 3000, }, @@ -1013,7 +1013,7 @@ func TestAssignFlavors(t *testing.T) { }}, }}, Cohort: &cache.Cohort{ - RequestableResources: workload.FlavorResourceQuantities{ + RequestableResources: cache.FlavorResourceQuantities{ "default": { corev1.ResourceCPU: 200_000, corev1.ResourceMemory: 200 * utiltesting.Gi, @@ -1049,13 +1049,13 @@ func TestAssignFlavors(t *testing.T) { Count: 1, }, }, - TotalBorrow: workload.FlavorResourceQuantities{ + TotalBorrow: cache.FlavorResourceQuantities{ "default": { corev1.ResourceCPU: 8_000, corev1.ResourceMemory: 3 * utiltesting.Gi, }, }, - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "default": map[corev1.ResourceName]int64{ corev1.ResourceCPU: 10000, corev1.ResourceMemory: 5 * 1024 * 1024 * 1024, @@ -1080,10 +1080,10 @@ func TestAssignFlavors(t *testing.T) { }}, }}, Cohort: &cache.Cohort{ - RequestableResources: workload.FlavorResourceQuantities{ + RequestableResources: cache.FlavorResourceQuantities{ "one": {corev1.ResourceCPU: 10_000}, }, - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "one": {corev1.ResourceCPU: 9_000}, }, }, @@ -1099,7 +1099,7 @@ func TestAssignFlavors(t *testing.T) { }, Count: 1, }}, - Usage: workload.FlavorResourceQuantities{}, + Usage: cache.FlavorResourceQuantities{}, }, }, "past max, but can preempt in ClusterQueue": { @@ -1118,14 +1118,14 @@ func TestAssignFlavors(t *testing.T) { }, }}, }}, - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "one": {corev1.ResourceCPU: 9_000}, }, Cohort: &cache.Cohort{ - RequestableResources: workload.FlavorResourceQuantities{ + RequestableResources: cache.FlavorResourceQuantities{ "one": {corev1.ResourceCPU: 100_000}, }, - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "one": {corev1.ResourceCPU: 9_000}, }, }, @@ -1146,7 +1146,7 @@ func TestAssignFlavors(t *testing.T) { }, Count: 1, }}, - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "one": map[corev1.ResourceName]int64{ corev1.ResourceCPU: 2000, }, @@ -1169,7 +1169,7 @@ func TestAssignFlavors(t *testing.T) { }, }}, }}, - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "one": {corev1.ResourceCPU: 1_000}, }, }, @@ -1188,7 +1188,7 @@ func TestAssignFlavors(t *testing.T) { }, Count: 1, }}, - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "one": map[corev1.ResourceName]int64{ corev1.ResourceCPU: 2000, }, @@ -1211,14 +1211,14 @@ func TestAssignFlavors(t *testing.T) { }, }}, }}, - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "one": {corev1.ResourceCPU: 2_000}, }, Cohort: &cache.Cohort{ - RequestableResources: workload.FlavorResourceQuantities{ + RequestableResources: cache.FlavorResourceQuantities{ "one": {corev1.ResourceCPU: 10_000}, }, - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "one": {corev1.ResourceCPU: 10_000}, }, }, @@ -1238,7 +1238,7 @@ func TestAssignFlavors(t *testing.T) { }, Count: 1, }}, - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "one": map[corev1.ResourceName]int64{ corev1.ResourceCPU: 2000, }, @@ -1278,7 +1278,7 @@ func TestAssignFlavors(t *testing.T) { }, }, }}, - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "one": {corev1.ResourceCPU: 3000}, "two": {corev1.ResourceCPU: 3000}, }, @@ -1301,7 +1301,7 @@ func TestAssignFlavors(t *testing.T) { }, Count: 1, }}, - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "two": map[corev1.ResourceName]int64{ corev1.ResourceCPU: 2000, }, @@ -1341,7 +1341,7 @@ func TestAssignFlavors(t *testing.T) { }, }, }}, - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "one": {corev1.ResourceCPU: 3000}, "tainted": {corev1.ResourceCPU: 3000}, }, @@ -1382,7 +1382,7 @@ func TestAssignFlavors(t *testing.T) { Count: 10, }, }, - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "one": map[corev1.ResourceName]int64{ corev1.ResourceCPU: 2000, }, @@ -1420,7 +1420,7 @@ func TestAssignFlavors(t *testing.T) { }, Count: 1, }}, - Usage: workload.FlavorResourceQuantities{}, + Usage: cache.FlavorResourceQuantities{}, }, }, "flavor not found": { @@ -1451,7 +1451,7 @@ func TestAssignFlavors(t *testing.T) { }, Count: 1, }}, - Usage: workload.FlavorResourceQuantities{}, + Usage: cache.FlavorResourceQuantities{}, }, }, "num pods fit": { @@ -1486,7 +1486,7 @@ func TestAssignFlavors(t *testing.T) { }, Count: 3, }}, - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "default": map[corev1.ResourceName]int64{ corev1.ResourcePods: 3, corev1.ResourceCPU: 3000, @@ -1525,7 +1525,7 @@ func TestAssignFlavors(t *testing.T) { }, Count: 3, }}, - Usage: workload.FlavorResourceQuantities{}, + Usage: cache.FlavorResourceQuantities{}, }, }, "with reclaimable pods": { @@ -1566,7 +1566,7 @@ func TestAssignFlavors(t *testing.T) { }, Count: 3, }}, - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "default": map[corev1.ResourceName]int64{ corev1.ResourcePods: 3, corev1.ResourceCPU: 3000, @@ -1602,7 +1602,7 @@ func TestAssignFlavors(t *testing.T) { }, }}, }}, - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "one": {corev1.ResourceCPU: 2000}, }, }, @@ -1623,7 +1623,7 @@ func TestAssignFlavors(t *testing.T) { }, Count: 1, }}, - Usage: workload.FlavorResourceQuantities{"one": {"cpu": 9000, "pods": 1}}, + Usage: cache.FlavorResourceQuantities{"one": {"cpu": 9000, "pods": 1}}, }, }, "preempt try next flavor": { @@ -1650,7 +1650,7 @@ func TestAssignFlavors(t *testing.T) { }, }}, }}, - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "one": {corev1.ResourceCPU: 2000}, }, }, @@ -1668,7 +1668,7 @@ func TestAssignFlavors(t *testing.T) { }, Count: 1, }}, - Usage: workload.FlavorResourceQuantities{"two": {"cpu": 9000, "pods": 1}}, + Usage: cache.FlavorResourceQuantities{"two": {"cpu": 9000, "pods": 1}}, }, }, "borrow try next flavor, found the first flavor": { @@ -1679,10 +1679,10 @@ func TestAssignFlavors(t *testing.T) { }, clusterQueue: cache.ClusterQueue{ Cohort: &cache.Cohort{ - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "one": {corev1.ResourceCPU: 2000}, }, - RequestableResources: workload.FlavorResourceQuantities{ + RequestableResources: cache.FlavorResourceQuantities{ "one": {corev1.ResourceCPU: 11000, corev1.ResourcePods: 10}, "two": {corev1.ResourceCPU: 1000, corev1.ResourcePods: 10}, }, @@ -1707,13 +1707,13 @@ func TestAssignFlavors(t *testing.T) { }, }}, }}, - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "one": {corev1.ResourceCPU: 2000}, }, }, wantRepMode: Fit, wantAssignment: Assignment{ - TotalBorrow: workload.FlavorResourceQuantities{"one": {"cpu": 1000}}, + TotalBorrow: cache.FlavorResourceQuantities{"one": {"cpu": 1000}}, PodSets: []PodSetAssignment{{ Name: "main", Flavors: ResourceAssignment{ @@ -1726,7 +1726,7 @@ func TestAssignFlavors(t *testing.T) { }, Count: 1, }}, - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "one": {corev1.ResourceCPU: 9000, corev1.ResourcePods: 1}, }, }, @@ -1739,10 +1739,10 @@ func TestAssignFlavors(t *testing.T) { }, clusterQueue: cache.ClusterQueue{ Cohort: &cache.Cohort{ - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "one": {corev1.ResourceCPU: 2000}, }, - RequestableResources: workload.FlavorResourceQuantities{ + RequestableResources: cache.FlavorResourceQuantities{ "one": {corev1.ResourceCPU: 11000, corev1.ResourcePods: 10}, "two": {corev1.ResourceCPU: 10000, corev1.ResourcePods: 10}, }, @@ -1767,7 +1767,7 @@ func TestAssignFlavors(t *testing.T) { }, }}, }}, - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "one": {corev1.ResourceCPU: 2000}, }, }, @@ -1785,7 +1785,7 @@ func TestAssignFlavors(t *testing.T) { }, Count: 1, }}, - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "two": {corev1.ResourceCPU: 9000, corev1.ResourcePods: 1}, }, }, @@ -1798,10 +1798,10 @@ func TestAssignFlavors(t *testing.T) { }, clusterQueue: cache.ClusterQueue{ Cohort: &cache.Cohort{ - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "one": {corev1.ResourceCPU: 2000}, }, - RequestableResources: workload.FlavorResourceQuantities{ + RequestableResources: cache.FlavorResourceQuantities{ "one": {corev1.ResourceCPU: 11000, corev1.ResourcePods: 10}, "two": {corev1.ResourceCPU: 10000, corev1.ResourcePods: 10}, }, @@ -1823,13 +1823,13 @@ func TestAssignFlavors(t *testing.T) { }, }}, }}, - Usage: workload.FlavorResourceQuantities{ + Usage: cache.FlavorResourceQuantities{ "one": {corev1.ResourceCPU: 2000}, }, }, wantRepMode: Fit, wantAssignment: Assignment{ - TotalBorrow: workload.FlavorResourceQuantities{ + TotalBorrow: cache.FlavorResourceQuantities{ "one": {corev1.ResourceCPU: 1000}, }, PodSets: []PodSetAssignment{{ @@ -1844,7 +1844,7 @@ func TestAssignFlavors(t *testing.T) { }, Count: 1, }}, - Usage: workload.FlavorResourceQuantities{"one": {"cpu": 9000, "pods": 1}}, + Usage: cache.FlavorResourceQuantities{"one": {"cpu": 9000, "pods": 1}}, }, }, } diff --git a/pkg/scheduler/preemption/preemption.go b/pkg/scheduler/preemption/preemption.go index 6af3dcc813..0c3c00e4e9 100644 --- a/pkg/scheduler/preemption/preemption.go +++ b/pkg/scheduler/preemption/preemption.go @@ -299,8 +299,8 @@ func workloadUsesResources(wl *workload.Info, resPerFlv resourcesPerFlavor) bool return false } -func totalRequestsForAssignment(wl *workload.Info, assignment flavorassigner.Assignment) workload.FlavorResourceQuantities { - usage := make(workload.FlavorResourceQuantities) +func totalRequestsForAssignment(wl *workload.Info, assignment flavorassigner.Assignment) cache.FlavorResourceQuantities { + usage := make(cache.FlavorResourceQuantities) for i, ps := range wl.TotalRequests { for res, q := range ps.Requests { flv := assignment.PodSets[i].Flavors[res].Name @@ -318,7 +318,7 @@ func totalRequestsForAssignment(wl *workload.Info, assignment flavorassigner.Ass // workloadFits determines if the workload requests would fits given the // requestable resources and simulated usage of the ClusterQueue and its cohort, // if it belongs to one. -func workloadFits(wlReq workload.FlavorResourceQuantities, cq *cache.ClusterQueue, allowBorrowing bool) bool { +func workloadFits(wlReq cache.FlavorResourceQuantities, cq *cache.ClusterQueue, allowBorrowing bool) bool { for _, rg := range cq.ResourceGroups { for _, flvQuotas := range rg.Flavors { flvReq, found := wlReq[flvQuotas.Name] diff --git a/pkg/scheduler/scheduler.go b/pkg/scheduler/scheduler.go index 50e7e52f97..37e787e01e 100644 --- a/pkg/scheduler/scheduler.go +++ b/pkg/scheduler/scheduler.go @@ -111,12 +111,12 @@ func (s *Scheduler) setAdmissionRoutineWrapper(wrapper routine.Wrapper) { s.admissionRoutineWrapper = wrapper } -type cohortsUsage map[string]workload.FlavorResourceQuantities +type cohortsUsage map[string]cache.FlavorResourceQuantities -func (cu *cohortsUsage) add(cohort string, assigment workload.FlavorResourceQuantities) { +func (cu *cohortsUsage) add(cohort string, assigment cache.FlavorResourceQuantities) { cohortUsage := (*cu)[cohort] if cohortUsage == nil { - cohortUsage = make(workload.FlavorResourceQuantities, len(assigment)) + cohortUsage = make(cache.FlavorResourceQuantities, len(assigment)) } for flavor, resources := range assigment { @@ -129,13 +129,13 @@ func (cu *cohortsUsage) add(cohort string, assigment workload.FlavorResourceQuan (*cu)[cohort] = cohortUsage } -func (cu *cohortsUsage) totalUsageForCommonFlavorResources(cohort string, assigment workload.FlavorResourceQuantities) workload.FlavorResourceQuantities { +func (cu *cohortsUsage) totalUsageForCommonFlavorResources(cohort string, assigment cache.FlavorResourceQuantities) cache.FlavorResourceQuantities { return utilmaps.Intersect((*cu)[cohort], assigment, func(a, b map[corev1.ResourceName]int64) map[corev1.ResourceName]int64 { return utilmaps.Intersect(a, b, func(a, b int64) int64 { return a + b }) }) } -func (cu *cohortsUsage) hasCommonFlavorResources(cohort string, assigment workload.FlavorResourceQuantities) bool { +func (cu *cohortsUsage) hasCommonFlavorResources(cohort string, assigment cache.FlavorResourceQuantities) bool { cohortUsage, cohortFound := (*cu)[cohort] if !cohortFound { return false diff --git a/pkg/scheduler/scheduler_test.go b/pkg/scheduler/scheduler_test.go index 08218e182a..4ca818acbb 100644 --- a/pkg/scheduler/scheduler_test.go +++ b/pkg/scheduler/scheduler_test.go @@ -1147,7 +1147,7 @@ func TestEntryOrdering(t *testing.T) { }}, }, assignment: flavorassigner.Assignment{ - TotalBorrow: workload.FlavorResourceQuantities{ + TotalBorrow: cache.FlavorResourceQuantities{ "flavor": {}, }, }, @@ -1178,7 +1178,7 @@ func TestEntryOrdering(t *testing.T) { }}, }, assignment: flavorassigner.Assignment{ - TotalBorrow: workload.FlavorResourceQuantities{ + TotalBorrow: cache.FlavorResourceQuantities{ "flavor": {}, }, }, @@ -1201,7 +1201,7 @@ func TestEntryOrdering(t *testing.T) { }}, }, assignment: flavorassigner.Assignment{ - TotalBorrow: workload.FlavorResourceQuantities{ + TotalBorrow: cache.FlavorResourceQuantities{ "flavor": {}, }, }, @@ -1226,7 +1226,7 @@ func TestEntryOrdering(t *testing.T) { }, }, assignment: flavorassigner.Assignment{ - TotalBorrow: workload.FlavorResourceQuantities{ + TotalBorrow: cache.FlavorResourceQuantities{ "flavor": {}, }, }, diff --git a/pkg/util/testing/wrappers.go b/pkg/util/testing/wrappers.go index ae794de6ce..ed29321cbe 100644 --- a/pkg/util/testing/wrappers.go +++ b/pkg/util/testing/wrappers.go @@ -363,10 +363,6 @@ func MakeClusterQueue(name string) *ClusterQueueWrapper { WhenCanBorrow: kueue.Borrow, WhenCanPreempt: kueue.TryNextFlavor, }, - Preemption: &kueue.ClusterQueuePreemption{ - ReclaimWithinCohort: kueue.PreemptionPolicyNever, - WithinClusterQueue: kueue.PreemptionPolicyNever, - }, }, }} } diff --git a/pkg/workload/workload.go b/pkg/workload/workload.go index 6b290a4c3b..fbb196f677 100644 --- a/pkg/workload/workload.go +++ b/pkg/workload/workload.go @@ -40,8 +40,6 @@ var ( admissionManagedConditions = []string{kueue.WorkloadQuotaReserved, kueue.WorkloadEvicted, kueue.WorkloadAdmitted} ) -type FlavorResourceQuantities map[kueue.ResourceFlavorReference]map[corev1.ResourceName]int64 - type AssigmentClusterQueueState struct { LastAssignedFlavorIdx []map[corev1.ResourceName]int CohortGeneration int64