From ce8a599f2a3276475cbd6a39228e7edc0bee2a5a Mon Sep 17 00:00:00 2001 From: thomassong Date: Fri, 24 Dec 2021 18:01:52 +0800 Subject: [PATCH] fix: sort node by device minor id fix: use AllocatableMemory instead of used Signed-off-by: thomassong --- pkg/algorithm/nvidia/fragment.go | 2 +- pkg/algorithm/nvidia/link.go | 2 +- pkg/algorithm/nvidia/share.go | 2 +- pkg/device/nvidia/sort.go | 7 ++++++- pkg/device/nvidia/sort_test.go | 2 +- 5 files changed, 10 insertions(+), 5 deletions(-) diff --git a/pkg/algorithm/nvidia/fragment.go b/pkg/algorithm/nvidia/fragment.go index 09eb09248..9dfa4dca5 100644 --- a/pkg/algorithm/nvidia/fragment.go +++ b/pkg/algorithm/nvidia/fragment.go @@ -44,7 +44,7 @@ func (al *fragmentMode) Evaluate(cores int64, _ int64) []*nvidia.NvidiaNode { var ( candidate = al.tree.Root() next *nvidia.NvidiaNode - sorter = fragmentSort(nvidia.ByAvailable, nvidia.ByMemory, nvidia.ByPids, nvidia.ByID) + sorter = fragmentSort(nvidia.ByAvailable, nvidia.ByAllocatableMemory, nvidia.ByPids, nvidia.ByMinorID) nodes = make([]*nvidia.NvidiaNode, 0) num = int(cores / nvidia.HundredCore) ) diff --git a/pkg/algorithm/nvidia/link.go b/pkg/algorithm/nvidia/link.go index 356934050..eda07ff4c 100644 --- a/pkg/algorithm/nvidia/link.go +++ b/pkg/algorithm/nvidia/link.go @@ -39,7 +39,7 @@ func NewLinkMode(t *nvidia.NvidiaTree) *linkMode { func (al *linkMode) Evaluate(cores int64, memory int64) []*nvidia.NvidiaNode { var ( - sorter = linkSort(nvidia.ByType, nvidia.ByAvailable, nvidia.ByMemory, nvidia.ByPids, nvidia.ByID) + sorter = linkSort(nvidia.ByType, nvidia.ByAvailable, nvidia.ByAllocatableMemory, nvidia.ByPids, nvidia.ByMinorID) tmpStore = make(map[int]*nvidia.NvidiaNode) root = al.tree.Root() nodes = make([]*nvidia.NvidiaNode, 0) diff --git a/pkg/algorithm/nvidia/share.go b/pkg/algorithm/nvidia/share.go index 50017b761..ddc8182cf 100644 --- a/pkg/algorithm/nvidia/share.go +++ b/pkg/algorithm/nvidia/share.go @@ -44,7 +44,7 @@ func (al *shareMode) Evaluate(cores int64, memory int64) []*nvidia.NvidiaNode { var ( nodes []*nvidia.NvidiaNode tmpStore = make([]*nvidia.NvidiaNode, al.tree.Total()) - sorter = shareModeSort(nvidia.ByAllocatableCores, nvidia.ByAllocatableMemory, nvidia.ByPids, nvidia.ByID) + sorter = shareModeSort(nvidia.ByAllocatableCores, nvidia.ByAllocatableMemory, nvidia.ByPids, nvidia.ByMinorID) ) for i := 0; i < al.tree.Total(); i++ { diff --git a/pkg/device/nvidia/sort.go b/pkg/device/nvidia/sort.go index c040aecd4..ce15119b4 100644 --- a/pkg/device/nvidia/sort.go +++ b/pkg/device/nvidia/sort.go @@ -42,6 +42,11 @@ var ( return p1.Meta.ID < p2.Meta.ID } + //ByMinorID compares two NvidiaNode by minor ID + ByMinorID = func(p1, p2 *NvidiaNode) bool { + return p1.Meta.MinorID < p2.Meta.MinorID + } + //ByMemory compares two NvidiaNode by memory already used ByMemory = func(p1, p2 *NvidiaNode) bool { return p1.Meta.UsedMemory < p2.Meta.UsedMemory @@ -64,7 +69,7 @@ var ( //PrintSorter is used to sort nodes when printing them out PrintSorter = &printSort{ - less: []LessFunc{ByType, ByAvailable, ByID}, + less: []LessFunc{ByType, ByAvailable, ByMinorID}, } ) diff --git a/pkg/device/nvidia/sort_test.go b/pkg/device/nvidia/sort_test.go index b3d59de82..10a304be8 100644 --- a/pkg/device/nvidia/sort_test.go +++ b/pkg/device/nvidia/sort_test.go @@ -58,7 +58,7 @@ GPU5 SOC SOC SOC SOC PIX X ByAvailable, ByType, ByAllocatableMemory, - ByID, + ByMinorID, ByPids, ByMemory}, }