diff --git a/pkg/scheduler/policy/gpu_policy.go b/pkg/scheduler/policy/gpu_policy.go index 272e199b4..401b48bca 100644 --- a/pkg/scheduler/policy/gpu_policy.go +++ b/pkg/scheduler/policy/gpu_policy.go @@ -43,17 +43,17 @@ func (l DeviceUsageList) Swap(i, j int) { } func (l DeviceUsageList) Less(i, j int) bool { - if l.Policy == util.GPUSchedulerPolicyBinpack.String() { + switch l.Policy { + case util.GPUSchedulerPolicyBinpack.String(): + return l.DeviceLists[i].Score < l.DeviceLists[j].Score + case util.GPUSchedulerPolicySpread.String(): + return l.DeviceLists[i].Score > l.DeviceLists[j].Score + default: if l.DeviceLists[i].Device.Numa == l.DeviceLists[j].Device.Numa { - return l.DeviceLists[i].Score < l.DeviceLists[j].Score + return l.DeviceLists[i].Score > l.DeviceLists[j].Score } - return l.DeviceLists[i].Device.Numa > l.DeviceLists[j].Device.Numa - } - // default policy is spread - if l.DeviceLists[i].Device.Numa == l.DeviceLists[j].Device.Numa { - return l.DeviceLists[i].Score > l.DeviceLists[j].Score + return l.DeviceLists[i].Device.Numa < l.DeviceLists[j].Device.Numa } - return l.DeviceLists[i].Device.Numa < l.DeviceLists[j].Device.Numa } func (ds *DeviceListsScore) ComputeScore(requests device.ContainerDeviceRequests) { diff --git a/pkg/scheduler/policy/gpu_policy_test.go b/pkg/scheduler/policy/gpu_policy_test.go index c17b4fd26..d1299def6 100644 --- a/pkg/scheduler/policy/gpu_policy_test.go +++ b/pkg/scheduler/policy/gpu_policy_test.go @@ -150,7 +150,7 @@ func TestDeviceUsageList_Less(t *testing.T) { {Device: &device.DeviceUsage{Numa: 0, Used: 10}, Score: 10}, {Device: &device.DeviceUsage{Numa: 1, Used: 20}, Score: 20}, }, - expectedLess: false, + expectedLess: true, }, { name: "Spread policy with same Numa", @@ -177,7 +177,7 @@ func TestDeviceUsageList_Less(t *testing.T) { {Device: &device.DeviceUsage{Numa: 0, Used: 10}, Score: 10}, {Device: &device.DeviceUsage{Numa: 1, Used: 20}, Score: 20}, }, - expectedLess: true, + expectedLess: false, }, }