mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-11 04:52:08 +00:00
Rename TopologyHint.SocketAffinity to TopologyHint.NUMANodeAffinity
As part of this, update the logic to use the NUMA information instead of the Socket information when generating and consuming TopologyHints in the CPUManager.
This commit is contained in:
parent
ecc14fe661
commit
f4dbd29cdb
@ -220,8 +220,8 @@ func (p *staticPolicy) AddContainer(s state.State, pod *v1.Pod, container *v1.Co
|
||||
hint := p.affinity.GetAffinity(string(pod.UID), container.Name)
|
||||
klog.Infof("[cpumanager] Pod %v, Container %v Topology Affinity is: %v", pod.UID, container.Name, hint)
|
||||
|
||||
// Allocate CPUs according to the socket affinity contained in the hint.
|
||||
cpuset, err := p.allocateCPUs(s, numCPUs, hint.SocketAffinity)
|
||||
// Allocate CPUs according to the NUMA affinity contained in the hint.
|
||||
cpuset, err := p.allocateCPUs(s, numCPUs, hint.NUMANodeAffinity)
|
||||
if err != nil {
|
||||
klog.Errorf("[cpumanager] unable to allocate %d CPUs (container id: %s, error: %v)", numCPUs, containerID, err)
|
||||
return err
|
||||
@ -250,15 +250,15 @@ func (p *staticPolicy) RemoveContainer(s state.State, containerID string) (rerr
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *staticPolicy) allocateCPUs(s state.State, numCPUs int, socketmask socketmask.SocketMask) (cpuset.CPUSet, error) {
|
||||
klog.Infof("[cpumanager] allocateCpus: (numCPUs: %d, socket: %v)", numCPUs, socketmask)
|
||||
func (p *staticPolicy) allocateCPUs(s state.State, numCPUs int, numaAffinity socketmask.SocketMask) (cpuset.CPUSet, error) {
|
||||
klog.Infof("[cpumanager] allocateCpus: (numCPUs: %d, socket: %v)", numCPUs, numaAffinity)
|
||||
|
||||
// If there are aligned CPUs in the socketmask, attempt to take those first.
|
||||
// If there are aligned CPUs in numaAffinity, attempt to take those first.
|
||||
result := cpuset.NewCPUSet()
|
||||
if socketmask != nil {
|
||||
if numaAffinity != nil {
|
||||
alignedCPUs := cpuset.NewCPUSet()
|
||||
for _, socketID := range socketmask.GetSockets() {
|
||||
alignedCPUs = alignedCPUs.Union(p.assignableCPUs(s).Intersection(p.topology.CPUDetails.CPUsInSocket(socketID)))
|
||||
for _, numaNodeID := range numaAffinity.GetSockets() {
|
||||
alignedCPUs = alignedCPUs.Union(p.assignableCPUs(s).Intersection(p.topology.CPUDetails.CPUsInNUMANode(numaNodeID)))
|
||||
}
|
||||
|
||||
numAlignedToAlloc := alignedCPUs.Size()
|
||||
|
@ -68,7 +68,7 @@ func (m *manager) GetTopologyHints(pod v1.Pod, container v1.Container) map[strin
|
||||
// available CPUs and the number of CPUs being requested.
|
||||
//
|
||||
// It follows the convention of marking all hints that have the same number of
|
||||
// bits set as the narrowest matching SocketAffinity with 'Preferred: true', and
|
||||
// bits set as the narrowest matching NUMANodeAffinity with 'Preferred: true', and
|
||||
// marking all others with 'Preferred: false'.
|
||||
func (m *manager) generateCPUTopologyHints(availableCPUs cpuset.CPUSet, request int) []topologymanager.TopologyHint {
|
||||
// Initialize minAffinity to a full affinity mask.
|
||||
@ -77,12 +77,12 @@ func (m *manager) generateCPUTopologyHints(availableCPUs cpuset.CPUSet, request
|
||||
|
||||
// Iterate through all combinations of socketMasks and build hints from them.
|
||||
hints := []topologymanager.TopologyHint{}
|
||||
socketmask.IterateSocketMasks(m.topology.CPUDetails.Sockets().ToSlice(), func(mask socketmask.SocketMask) {
|
||||
socketmask.IterateSocketMasks(m.topology.CPUDetails.NUMANodes().ToSlice(), func(mask socketmask.SocketMask) {
|
||||
// Check to see if we have enough CPUs available on the current
|
||||
// SocketMask to satisfy the CPU request.
|
||||
numMatching := 0
|
||||
for _, c := range availableCPUs.ToSlice() {
|
||||
if mask.IsSet(m.topology.CPUDetails[c].SocketID) {
|
||||
if mask.IsSet(m.topology.CPUDetails[c].NUMANodeID) {
|
||||
numMatching++
|
||||
}
|
||||
}
|
||||
@ -96,8 +96,8 @@ func (m *manager) generateCPUTopologyHints(availableCPUs cpuset.CPUSet, request
|
||||
// list of hints. We set all hint preferences to 'false' on the first
|
||||
// pass through.
|
||||
hints = append(hints, topologymanager.TopologyHint{
|
||||
SocketAffinity: mask,
|
||||
Preferred: false,
|
||||
NUMANodeAffinity: mask,
|
||||
Preferred: false,
|
||||
})
|
||||
|
||||
// Update minAffinity if relevant
|
||||
@ -111,7 +111,7 @@ func (m *manager) generateCPUTopologyHints(availableCPUs cpuset.CPUSet, request
|
||||
// to the minAffinity. Only those with an equal number of bits set will be
|
||||
// considered preferred.
|
||||
for i := range hints {
|
||||
if hints[i].SocketAffinity.Count() == minAffinity.Count() {
|
||||
if hints[i].NUMANodeAffinity.Count() == minAffinity.Count() {
|
||||
hints[i].Preferred = true
|
||||
}
|
||||
}
|
||||
|
@ -33,7 +33,7 @@ func topologyHintLessThan(a topologymanager.TopologyHint, b topologymanager.Topo
|
||||
if a.Preferred != b.Preferred {
|
||||
return a.Preferred == true
|
||||
}
|
||||
return a.SocketAffinity.IsNarrowerThan(b.SocketAffinity)
|
||||
return a.NUMANodeAffinity.IsNarrowerThan(b.NUMANodeAffinity)
|
||||
}
|
||||
|
||||
func TestGetTopologyHints(t *testing.T) {
|
||||
@ -99,16 +99,16 @@ func TestGetTopologyHints(t *testing.T) {
|
||||
container: *testContainer1,
|
||||
expectedHints: []topologymanager.TopologyHint{
|
||||
{
|
||||
SocketAffinity: firstSocketMask,
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: firstSocketMask,
|
||||
Preferred: true,
|
||||
},
|
||||
{
|
||||
SocketAffinity: secondSocketMask,
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: secondSocketMask,
|
||||
Preferred: true,
|
||||
},
|
||||
{
|
||||
SocketAffinity: crossSocketMask,
|
||||
Preferred: false,
|
||||
NUMANodeAffinity: crossSocketMask,
|
||||
Preferred: false,
|
||||
},
|
||||
},
|
||||
},
|
||||
@ -118,12 +118,12 @@ func TestGetTopologyHints(t *testing.T) {
|
||||
container: *testContainer2,
|
||||
expectedHints: []topologymanager.TopologyHint{
|
||||
{
|
||||
SocketAffinity: secondSocketMask,
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: secondSocketMask,
|
||||
Preferred: true,
|
||||
},
|
||||
{
|
||||
SocketAffinity: crossSocketMask,
|
||||
Preferred: false,
|
||||
NUMANodeAffinity: crossSocketMask,
|
||||
Preferred: false,
|
||||
},
|
||||
},
|
||||
},
|
||||
@ -133,8 +133,8 @@ func TestGetTopologyHints(t *testing.T) {
|
||||
container: *testContainer3,
|
||||
expectedHints: []topologymanager.TopologyHint{
|
||||
{
|
||||
SocketAffinity: crossSocketMask,
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: crossSocketMask,
|
||||
Preferred: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -62,10 +62,10 @@ type Store interface {
|
||||
GetAffinity(podUID string, containerName string) TopologyHint
|
||||
}
|
||||
|
||||
//TopologyHint is a struct containing a SocketMask for a Container
|
||||
//TopologyHint is a struct containing the NUMANodeAffinity for a Container
|
||||
type TopologyHint struct {
|
||||
SocketAffinity socketmask.SocketMask
|
||||
// Preferred is set to true when the SocketMask encodes a preferred
|
||||
NUMANodeAffinity socketmask.SocketMask
|
||||
// Preferred is set to true when the NUMANodeAffinity encodes a preferred
|
||||
// allocation for the Container. It is set to false otherwise.
|
||||
Preferred bool
|
||||
}
|
||||
@ -149,7 +149,7 @@ func (m *manager) iterateAllProviderTopologyHints(allProviderHints [][]TopologyH
|
||||
|
||||
// Merge the hints from all hint providers to find the best one.
|
||||
func (m *manager) calculateAffinity(pod v1.Pod, container v1.Container) TopologyHint {
|
||||
// Set the default hint to return from this function as an any-socket
|
||||
// Set the default hint to return from this function as an any-numa
|
||||
// affinity with an unpreferred allocation. This will only be returned if
|
||||
// no better hint can be found when merging hints from each hint provider.
|
||||
defaultAffinity, _ := socketmask.NewSocketMask()
|
||||
@ -164,9 +164,9 @@ func (m *manager) calculateAffinity(pod v1.Pod, container v1.Container) Topology
|
||||
// Get the TopologyHints from a provider.
|
||||
hints := provider.GetTopologyHints(pod, container)
|
||||
|
||||
// If hints is empty, insert a single, preferred any-socket hint into allProviderHints.
|
||||
// If hints is nil, insert a single, preferred any-numa hint into allProviderHints.
|
||||
if len(hints) == 0 {
|
||||
klog.Infof("[topologymanager] Hint Provider has no preference for socket affinity with any resource")
|
||||
klog.Infof("[topologymanager] Hint Provider has no preference for NUMA affinity with any resource")
|
||||
affinity, _ := socketmask.NewSocketMask()
|
||||
affinity.Fill()
|
||||
allProviderHints = append(allProviderHints, []TopologyHint{{affinity, true}})
|
||||
@ -176,7 +176,7 @@ func (m *manager) calculateAffinity(pod v1.Pod, container v1.Container) Topology
|
||||
// Otherwise, accumulate the hints for each resource type into allProviderHints.
|
||||
for resource := range hints {
|
||||
if hints[resource] == nil {
|
||||
klog.Infof("[topologymanager] Hint Provider has no preference for socket affinity with resource '%s'", resource)
|
||||
klog.Infof("[topologymanager] Hint Provider has no preference for NUMA affinity with resource '%s'", resource)
|
||||
affinity, _ := socketmask.NewSocketMask()
|
||||
affinity.Fill()
|
||||
allProviderHints = append(allProviderHints, []TopologyHint{{affinity, true}})
|
||||
@ -184,7 +184,7 @@ func (m *manager) calculateAffinity(pod v1.Pod, container v1.Container) Topology
|
||||
}
|
||||
|
||||
if len(hints[resource]) == 0 {
|
||||
klog.Infof("[topologymanager] Hint Provider has no possible socket affinities for resource '%s'", resource)
|
||||
klog.Infof("[topologymanager] Hint Provider has no possible NUMA affinities for resource '%s'", resource)
|
||||
affinity, _ := socketmask.NewSocketMask()
|
||||
affinity.Fill()
|
||||
allProviderHints = append(allProviderHints, []TopologyHint{{affinity, false}})
|
||||
@ -197,37 +197,37 @@ func (m *manager) calculateAffinity(pod v1.Pod, container v1.Container) Topology
|
||||
|
||||
// Iterate over all permutations of hints in 'allProviderHints'. Merge the
|
||||
// hints in each permutation by taking the bitwise-and of their affinity masks.
|
||||
// Return the hint with the narrowest SocketAffinity of all merged
|
||||
// permutations that have at least one socket set. If no merged mask can be
|
||||
// found that has at least one socket set, return the 'defaultHint'.
|
||||
// Return the hint with the narrowest NUMANodeAffinity of all merged
|
||||
// permutations that have at least one NUMA ID set. If no merged mask can be
|
||||
// found that has at least one NUMA ID set, return the 'defaultHint'.
|
||||
bestHint := defaultHint
|
||||
m.iterateAllProviderTopologyHints(allProviderHints, func(permutation []TopologyHint) {
|
||||
// Get the SocketAffinity from each hint in the permutation and see if any
|
||||
// Get the NUMANodeAffinity from each hint in the permutation and see if any
|
||||
// of them encode unpreferred allocations.
|
||||
preferred := true
|
||||
var socketAffinities []socketmask.SocketMask
|
||||
var numaAffinities []socketmask.SocketMask
|
||||
for _, hint := range permutation {
|
||||
// Only consider hints that have an actual SocketAffinity set.
|
||||
if hint.SocketAffinity != nil {
|
||||
// Only consider hints that have an actual NUMANodeAffinity set.
|
||||
if hint.NUMANodeAffinity != nil {
|
||||
if !hint.Preferred {
|
||||
preferred = false
|
||||
}
|
||||
socketAffinities = append(socketAffinities, hint.SocketAffinity)
|
||||
numaAffinities = append(numaAffinities, hint.NUMANodeAffinity)
|
||||
}
|
||||
}
|
||||
|
||||
// Merge the affinities using a bitwise-and operation.
|
||||
mergedAffinity, _ := socketmask.NewSocketMask()
|
||||
mergedAffinity.Fill()
|
||||
mergedAffinity.And(socketAffinities...)
|
||||
mergedAffinity.And(numaAffinities...)
|
||||
|
||||
// Build a mergedHintfrom the merged affinity mask, indicating if an
|
||||
// preferred allocation was used to generate the affinity mask or not.
|
||||
mergedHint := TopologyHint{mergedAffinity, preferred}
|
||||
|
||||
// Only consider mergedHints that result in a SocketAffinity > 0 to
|
||||
// Only consider mergedHints that result in a NUMANodeAffinity > 0 to
|
||||
// replace the current bestHint.
|
||||
if mergedHint.SocketAffinity.Count() == 0 {
|
||||
if mergedHint.NUMANodeAffinity.Count() == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
@ -246,9 +246,9 @@ func (m *manager) calculateAffinity(pod v1.Pod, container v1.Container) Topology
|
||||
}
|
||||
|
||||
// If mergedHint and bestHint has the same preference, only consider
|
||||
// mergedHints that have a narrower SocketAffinity than the
|
||||
// SocketAffinity in the current bestHint.
|
||||
if !mergedHint.SocketAffinity.IsNarrowerThan(bestHint.SocketAffinity) {
|
||||
// mergedHints that have a narrower NUMANodeAffinity than the
|
||||
// NUMANodeAffinity in the current bestHint.
|
||||
if !mergedHint.NUMANodeAffinity.IsNarrowerThan(bestHint.NUMANodeAffinity) {
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -120,8 +120,8 @@ func TestCalculateAffinity(t *testing.T) {
|
||||
name: "TopologyHint not set",
|
||||
hp: []HintProvider{},
|
||||
expected: TopologyHint{
|
||||
SocketAffinity: NewTestSocketMaskFull(),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMaskFull(),
|
||||
Preferred: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -132,8 +132,8 @@ func TestCalculateAffinity(t *testing.T) {
|
||||
},
|
||||
},
|
||||
expected: TopologyHint{
|
||||
SocketAffinity: NewTestSocketMaskFull(),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMaskFull(),
|
||||
Preferred: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -146,8 +146,8 @@ func TestCalculateAffinity(t *testing.T) {
|
||||
},
|
||||
},
|
||||
expected: TopologyHint{
|
||||
SocketAffinity: NewTestSocketMaskFull(),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMaskFull(),
|
||||
Preferred: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -160,46 +160,46 @@ func TestCalculateAffinity(t *testing.T) {
|
||||
},
|
||||
},
|
||||
expected: TopologyHint{
|
||||
SocketAffinity: NewTestSocketMaskFull(),
|
||||
Preferred: false,
|
||||
NUMANodeAffinity: NewTestSocketMaskFull(),
|
||||
Preferred: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "Single TopologyHint with Preferred as true and SocketAffinity as nil",
|
||||
name: "Single TopologyHint with Preferred as true and NUMANodeAffinity as nil",
|
||||
hp: []HintProvider{
|
||||
&mockHintProvider{
|
||||
map[string][]TopologyHint{
|
||||
"resource": {
|
||||
{
|
||||
SocketAffinity: nil,
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: nil,
|
||||
Preferred: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
expected: TopologyHint{
|
||||
SocketAffinity: NewTestSocketMaskFull(),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMaskFull(),
|
||||
Preferred: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "Single TopologyHint with Preferred as false and SocketAffinity as nil",
|
||||
name: "Single TopologyHint with Preferred as false and NUMANodeAffinity as nil",
|
||||
hp: []HintProvider{
|
||||
&mockHintProvider{
|
||||
map[string][]TopologyHint{
|
||||
"resource": {
|
||||
{
|
||||
SocketAffinity: nil,
|
||||
Preferred: false,
|
||||
NUMANodeAffinity: nil,
|
||||
Preferred: false,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
expected: TopologyHint{
|
||||
SocketAffinity: NewTestSocketMaskFull(),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMaskFull(),
|
||||
Preferred: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -209,8 +209,8 @@ func TestCalculateAffinity(t *testing.T) {
|
||||
map[string][]TopologyHint{
|
||||
"resource1": {
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
@ -219,16 +219,16 @@ func TestCalculateAffinity(t *testing.T) {
|
||||
map[string][]TopologyHint{
|
||||
"resource2": {
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
expected: TopologyHint{
|
||||
SocketAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -238,8 +238,8 @@ func TestCalculateAffinity(t *testing.T) {
|
||||
map[string][]TopologyHint{
|
||||
"resource1": {
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
@ -248,16 +248,16 @@ func TestCalculateAffinity(t *testing.T) {
|
||||
map[string][]TopologyHint{
|
||||
"resource2": {
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
expected: TopologyHint{
|
||||
SocketAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -267,8 +267,8 @@ func TestCalculateAffinity(t *testing.T) {
|
||||
map[string][]TopologyHint{
|
||||
"resource1": {
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
@ -277,16 +277,16 @@ func TestCalculateAffinity(t *testing.T) {
|
||||
map[string][]TopologyHint{
|
||||
"resource2": {
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(0, 1),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(0, 1),
|
||||
Preferred: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
expected: TopologyHint{
|
||||
SocketAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -296,8 +296,8 @@ func TestCalculateAffinity(t *testing.T) {
|
||||
map[string][]TopologyHint{
|
||||
"resource1": {
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
@ -306,16 +306,16 @@ func TestCalculateAffinity(t *testing.T) {
|
||||
map[string][]TopologyHint{
|
||||
"resource2": {
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(0, 1),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(0, 1),
|
||||
Preferred: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
expected: TopologyHint{
|
||||
SocketAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -325,8 +325,8 @@ func TestCalculateAffinity(t *testing.T) {
|
||||
map[string][]TopologyHint{
|
||||
"resource1": {
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
@ -335,16 +335,16 @@ func TestCalculateAffinity(t *testing.T) {
|
||||
map[string][]TopologyHint{
|
||||
"resource2": {
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
expected: TopologyHint{
|
||||
SocketAffinity: NewTestSocketMaskFull(),
|
||||
Preferred: false,
|
||||
NUMANodeAffinity: NewTestSocketMaskFull(),
|
||||
Preferred: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -354,8 +354,8 @@ func TestCalculateAffinity(t *testing.T) {
|
||||
map[string][]TopologyHint{
|
||||
"resource1": {
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
@ -364,16 +364,16 @@ func TestCalculateAffinity(t *testing.T) {
|
||||
map[string][]TopologyHint{
|
||||
"resource2": {
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(0),
|
||||
Preferred: false,
|
||||
NUMANodeAffinity: NewTestSocketMask(0),
|
||||
Preferred: false,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
expected: TopologyHint{
|
||||
SocketAffinity: NewTestSocketMask(0),
|
||||
Preferred: false,
|
||||
NUMANodeAffinity: NewTestSocketMask(0),
|
||||
Preferred: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -383,8 +383,8 @@ func TestCalculateAffinity(t *testing.T) {
|
||||
map[string][]TopologyHint{
|
||||
"resource1": {
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
@ -393,16 +393,16 @@ func TestCalculateAffinity(t *testing.T) {
|
||||
map[string][]TopologyHint{
|
||||
"resource2": {
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(1),
|
||||
Preferred: false,
|
||||
NUMANodeAffinity: NewTestSocketMask(1),
|
||||
Preferred: false,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
expected: TopologyHint{
|
||||
SocketAffinity: NewTestSocketMask(1),
|
||||
Preferred: false,
|
||||
NUMANodeAffinity: NewTestSocketMask(1),
|
||||
Preferred: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -413,16 +413,16 @@ func TestCalculateAffinity(t *testing.T) {
|
||||
map[string][]TopologyHint{
|
||||
"resource": {
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
expected: TopologyHint{
|
||||
SocketAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -433,16 +433,16 @@ func TestCalculateAffinity(t *testing.T) {
|
||||
map[string][]TopologyHint{
|
||||
"resource": {
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
expected: TopologyHint{
|
||||
SocketAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -452,12 +452,12 @@ func TestCalculateAffinity(t *testing.T) {
|
||||
map[string][]TopologyHint{
|
||||
"resource1": {
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
},
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
@ -466,16 +466,16 @@ func TestCalculateAffinity(t *testing.T) {
|
||||
map[string][]TopologyHint{
|
||||
"resource2": {
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
expected: TopologyHint{
|
||||
SocketAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -485,12 +485,12 @@ func TestCalculateAffinity(t *testing.T) {
|
||||
map[string][]TopologyHint{
|
||||
"resource1": {
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
},
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
@ -499,16 +499,16 @@ func TestCalculateAffinity(t *testing.T) {
|
||||
map[string][]TopologyHint{
|
||||
"resource2": {
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
expected: TopologyHint{
|
||||
SocketAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -518,12 +518,12 @@ func TestCalculateAffinity(t *testing.T) {
|
||||
map[string][]TopologyHint{
|
||||
"resource1": {
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
},
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
@ -532,16 +532,16 @@ func TestCalculateAffinity(t *testing.T) {
|
||||
map[string][]TopologyHint{
|
||||
"resource2": {
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(0, 1),
|
||||
Preferred: false,
|
||||
NUMANodeAffinity: NewTestSocketMask(0, 1),
|
||||
Preferred: false,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
expected: TopologyHint{
|
||||
SocketAffinity: NewTestSocketMask(0),
|
||||
Preferred: false,
|
||||
NUMANodeAffinity: NewTestSocketMask(0),
|
||||
Preferred: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -551,12 +551,12 @@ func TestCalculateAffinity(t *testing.T) {
|
||||
map[string][]TopologyHint{
|
||||
"resource1": {
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
},
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
@ -565,20 +565,20 @@ func TestCalculateAffinity(t *testing.T) {
|
||||
map[string][]TopologyHint{
|
||||
"resource2": {
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
},
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(0, 1),
|
||||
Preferred: false,
|
||||
NUMANodeAffinity: NewTestSocketMask(0, 1),
|
||||
Preferred: false,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
expected: TopologyHint{
|
||||
SocketAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -588,12 +588,12 @@ func TestCalculateAffinity(t *testing.T) {
|
||||
map[string][]TopologyHint{
|
||||
"resource1": {
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
},
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(0, 1),
|
||||
Preferred: false,
|
||||
NUMANodeAffinity: NewTestSocketMask(0, 1),
|
||||
Preferred: false,
|
||||
},
|
||||
},
|
||||
},
|
||||
@ -602,24 +602,24 @@ func TestCalculateAffinity(t *testing.T) {
|
||||
map[string][]TopologyHint{
|
||||
"resource2": {
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
},
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
},
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(0, 1),
|
||||
Preferred: false,
|
||||
NUMANodeAffinity: NewTestSocketMask(0, 1),
|
||||
Preferred: false,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
expected: TopologyHint{
|
||||
SocketAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -629,34 +629,34 @@ func TestCalculateAffinity(t *testing.T) {
|
||||
map[string][]TopologyHint{
|
||||
"resource1": {
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
},
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(0, 1),
|
||||
Preferred: false,
|
||||
NUMANodeAffinity: NewTestSocketMask(0, 1),
|
||||
Preferred: false,
|
||||
},
|
||||
},
|
||||
"resource2": {
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
},
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
},
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(0, 1),
|
||||
Preferred: false,
|
||||
NUMANodeAffinity: NewTestSocketMask(0, 1),
|
||||
Preferred: false,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
expected: TopologyHint{
|
||||
SocketAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
},
|
||||
},
|
||||
}
|
||||
@ -665,8 +665,8 @@ func TestCalculateAffinity(t *testing.T) {
|
||||
mngr := manager{}
|
||||
mngr.hintProviders = tc.hp
|
||||
actual := mngr.calculateAffinity(v1.Pod{}, v1.Container{})
|
||||
if !actual.SocketAffinity.IsEqual(tc.expected.SocketAffinity) {
|
||||
t.Errorf("Expected SocketAffinity in result to be %v, got %v", tc.expected.SocketAffinity, actual.SocketAffinity)
|
||||
if !actual.NUMANodeAffinity.IsEqual(tc.expected.NUMANodeAffinity) {
|
||||
t.Errorf("Expected NUMANodeAffinity in result to be %v, got %v", tc.expected.NUMANodeAffinity, actual.NUMANodeAffinity)
|
||||
}
|
||||
if actual.Preferred != tc.expected.Preferred {
|
||||
t.Errorf("Expected Affinity preference in result to be %v, got %v", tc.expected.Preferred, actual.Preferred)
|
||||
@ -801,12 +801,12 @@ func TestAdmit(t *testing.T) {
|
||||
map[string][]TopologyHint{
|
||||
"resource": {
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
},
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(0, 1),
|
||||
Preferred: false,
|
||||
NUMANodeAffinity: NewTestSocketMask(0, 1),
|
||||
Preferred: false,
|
||||
},
|
||||
},
|
||||
},
|
||||
@ -823,16 +823,16 @@ func TestAdmit(t *testing.T) {
|
||||
map[string][]TopologyHint{
|
||||
"resource": {
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
},
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
},
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(0, 1),
|
||||
Preferred: false,
|
||||
NUMANodeAffinity: NewTestSocketMask(0, 1),
|
||||
Preferred: false,
|
||||
},
|
||||
},
|
||||
},
|
||||
@ -849,8 +849,8 @@ func TestAdmit(t *testing.T) {
|
||||
map[string][]TopologyHint{
|
||||
"resource": {
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(0, 1),
|
||||
Preferred: false,
|
||||
NUMANodeAffinity: NewTestSocketMask(0, 1),
|
||||
Preferred: false,
|
||||
},
|
||||
},
|
||||
},
|
||||
@ -867,12 +867,12 @@ func TestAdmit(t *testing.T) {
|
||||
map[string][]TopologyHint{
|
||||
"resource": {
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
},
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(0, 1),
|
||||
Preferred: false,
|
||||
NUMANodeAffinity: NewTestSocketMask(0, 1),
|
||||
Preferred: false,
|
||||
},
|
||||
},
|
||||
},
|
||||
@ -889,16 +889,16 @@ func TestAdmit(t *testing.T) {
|
||||
map[string][]TopologyHint{
|
||||
"resource": {
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(0),
|
||||
Preferred: true,
|
||||
},
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
NUMANodeAffinity: NewTestSocketMask(1),
|
||||
Preferred: true,
|
||||
},
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(0, 1),
|
||||
Preferred: false,
|
||||
NUMANodeAffinity: NewTestSocketMask(0, 1),
|
||||
Preferred: false,
|
||||
},
|
||||
},
|
||||
},
|
||||
@ -915,8 +915,8 @@ func TestAdmit(t *testing.T) {
|
||||
map[string][]TopologyHint{
|
||||
"resource": {
|
||||
{
|
||||
SocketAffinity: NewTestSocketMask(0, 1),
|
||||
Preferred: false,
|
||||
NUMANodeAffinity: NewTestSocketMask(0, 1),
|
||||
Preferred: false,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
Loading…
Reference in New Issue
Block a user