mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-04 09:49:50 +00:00
Simplify logic in devicemanager TopologyHint generation
This commit is contained in:
parent
9f5f401d60
commit
74fe9364c3
@ -20,6 +20,7 @@ import (
|
|||||||
"k8s.io/api/core/v1"
|
"k8s.io/api/core/v1"
|
||||||
"k8s.io/apimachinery/pkg/util/sets"
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
"k8s.io/klog/v2"
|
"k8s.io/klog/v2"
|
||||||
|
pluginapi "k8s.io/kubelet/pkg/apis/deviceplugin/v1beta1"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/cm/topologymanager"
|
"k8s.io/kubernetes/pkg/kubelet/cm/topologymanager"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/cm/topologymanager/bitmask"
|
"k8s.io/kubernetes/pkg/kubelet/cm/topologymanager/bitmask"
|
||||||
)
|
)
|
||||||
@ -103,14 +104,8 @@ func (m *ManagerImpl) generateDeviceTopologyHints(resource string, devices sets.
|
|||||||
// First, update minAffinitySize for the current request size.
|
// First, update minAffinitySize for the current request size.
|
||||||
devicesInMask := 0
|
devicesInMask := 0
|
||||||
for _, device := range m.allDevices[resource] {
|
for _, device := range m.allDevices[resource] {
|
||||||
if device.Topology == nil {
|
if mask.AnySet(m.getNUMANodeIds(device.Topology)) {
|
||||||
continue
|
|
||||||
}
|
|
||||||
for _, node := range device.Topology.Nodes {
|
|
||||||
if mask.IsSet(int(node.ID)) {
|
|
||||||
devicesInMask++
|
devicesInMask++
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if devicesInMask >= request && mask.Count() < minAffinitySize {
|
if devicesInMask >= request && mask.Count() < minAffinitySize {
|
||||||
@ -121,14 +116,8 @@ func (m *ManagerImpl) generateDeviceTopologyHints(resource string, devices sets.
|
|||||||
// NUMA Node combination to satisfy the device request.
|
// NUMA Node combination to satisfy the device request.
|
||||||
numMatching := 0
|
numMatching := 0
|
||||||
for d := range devices {
|
for d := range devices {
|
||||||
if m.allDevices[resource][d].Topology == nil {
|
if mask.AnySet(m.getNUMANodeIds(m.allDevices[resource][d].Topology)) {
|
||||||
continue
|
|
||||||
}
|
|
||||||
for _, node := range m.allDevices[resource][d].Topology.Nodes {
|
|
||||||
if mask.IsSet(int(node.ID)) {
|
|
||||||
numMatching++
|
numMatching++
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -158,3 +147,14 @@ func (m *ManagerImpl) generateDeviceTopologyHints(resource string, devices sets.
|
|||||||
|
|
||||||
return hints
|
return hints
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *ManagerImpl) getNUMANodeIds(topology *pluginapi.TopologyInfo) []int {
|
||||||
|
if topology == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
var ids []int
|
||||||
|
for _, n := range topology.Nodes {
|
||||||
|
ids = append(ids, int(n.ID))
|
||||||
|
}
|
||||||
|
return ids
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user