Skip to content

Commit

Permalink
scheduler: refine restricted topology policy (koordinator-sh#2010)
Browse files Browse the repository at this point in the history
Signed-off-by: wangjianyu.wjy <wangjianyu.wjy@alibaba-inc.com>
Co-authored-by: wangjianyu.wjy <wangjianyu.wjy@alibaba-inc.com>
  • Loading branch information
ZiMengSheng and wangjianyu.wjy committed Apr 25, 2024
1 parent 663da5b commit 0300851
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 9 deletions.
10 changes: 6 additions & 4 deletions pkg/scheduler/frameworkext/topologymanager/policy.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,12 +73,14 @@ func mergePermutation(numaNodes []int, permutation []NUMATopologyHint) NUMATopol
var numaAffinities []bitmask.BitMask
for _, hint := range permutation {
// Only consider hints that have an actual NUMANodeAffinity set.
if hint.NUMANodeAffinity == nil {
numaAffinities = append(numaAffinities, defaultAffinity)
} else {
if hint.NUMANodeAffinity != nil {
numaAffinities = append(numaAffinities, hint.NUMANodeAffinity)
// Only mark preferred if all affinities are equal.
if !hint.NUMANodeAffinity.IsEqual(numaAffinities[0]) {
preferred = false
}
}

// Only mark preferred if all affinities are preferred.
if !hint.Preferred {
preferred = false
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ func TestPolicyBestEffortCanAdmitPodResult(t *testing.T) {
}

func TestPolicyBestEffortMerge(t *testing.T) {
numaNodes := []int{0, 1}
numaNodes := []int{0, 1, 2, 3}
policy := NewBestEffortPolicy(numaNodes)

tcases := commonPolicyMergeTestCases(numaNodes)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ func TestPolicyRestrictedCanAdmitPodResult(t *testing.T) {
}

func TestPolicyRestrictedMerge(t *testing.T) {
numaNodes := []int{0, 1}
numaNodes := []int{0, 1, 2, 3}
policy := NewRestrictedPolicy(numaNodes)

tcases := commonPolicyMergeTestCases(numaNodes)
Expand Down
43 changes: 40 additions & 3 deletions pkg/scheduler/frameworkext/topologymanager/policy_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -343,6 +343,43 @@ func commonPolicyMergeTestCases(numaNodes []int) []policyMergeTestCase {

func (p *bestEffortPolicy) mergeTestCases(numaNodes []int) []policyMergeTestCase {
return []policyMergeTestCase{
{
name: "Two providers, 2 hints each, same mask (some with different bits), same preferred",
hp: []NUMATopologyHintProvider{
&mockNUMATopologyHintProvider{
map[string][]NUMATopologyHint{
"resource1": {
{
NUMANodeAffinity: NewTestBitMask(0, 1),
Preferred: true,
},
{
NUMANodeAffinity: NewTestBitMask(0, 2),
Preferred: true,
},
},
},
},
&mockNUMATopologyHintProvider{
map[string][]NUMATopologyHint{
"resource2": {
{
NUMANodeAffinity: NewTestBitMask(0, 1),
Preferred: true,
},
{
NUMANodeAffinity: NewTestBitMask(0, 2),
Preferred: true,
},
},
},
},
},
expected: NUMATopologyHint{
NUMANodeAffinity: NewTestBitMask(0, 1),
Preferred: true,
},
},
{
name: "NUMATopologyHint not set",
hp: []NUMATopologyHintProvider{},
Expand Down Expand Up @@ -541,7 +578,7 @@ func (p *bestEffortPolicy) mergeTestCases(numaNodes []int) []policyMergeTestCase
},
expected: NUMATopologyHint{
NUMANodeAffinity: NewTestBitMask(0),
Preferred: true,
Preferred: false,
},
},
{
Expand Down Expand Up @@ -578,7 +615,7 @@ func (p *bestEffortPolicy) mergeTestCases(numaNodes []int) []policyMergeTestCase
},
},
{
name: "Two providers, 1 hint each, 1 wider mask, both preferred 1/2",
name: "Two providers, 1 hint each, 1 wider mask, both preferred 2/2",
hp: []NUMATopologyHintProvider{
&mockNUMATopologyHintProvider{
map[string][]NUMATopologyHint{
Expand All @@ -603,7 +640,7 @@ func (p *bestEffortPolicy) mergeTestCases(numaNodes []int) []policyMergeTestCase
},
expected: NUMATopologyHint{
NUMANodeAffinity: NewTestBitMask(1),
Preferred: true,
Preferred: false,
},
},
}
Expand Down

0 comments on commit 0300851

Please sign in to comment.