in pkg/scheduler/plugins/numaaware/numaaware.go [189:227]
func filterNodeByPolicy(task *api.TaskInfo, node *api.NodeInfo, nodeResSets map[string]api.ResNumaSets) (fit bool, err error) {
if !(task.NumaInfo == nil || task.NumaInfo.Policy == "" || task.NumaInfo.Policy == "none") {
if node.NumaSchedulerInfo == nil {
return false, fmt.Errorf("numa info is empty")
}
if node.NumaSchedulerInfo.Policies[nodeinfov1alpha1.CPUManagerPolicy] != "static" {
return false, fmt.Errorf("cpu manager policy isn't static")
}
if task.NumaInfo.Policy != node.NumaSchedulerInfo.Policies[nodeinfov1alpha1.TopologyManagerPolicy] {
return false, fmt.Errorf("task topology polocy[%s] is different with node[%s]",
task.NumaInfo.Policy, node.NumaSchedulerInfo.Policies[nodeinfov1alpha1.TopologyManagerPolicy])
}
if _, ok := nodeResSets[node.Name]; !ok {
return false, fmt.Errorf("no topo information")
}
if nodeResSets[node.Name][string(v1.ResourceCPU)].Size() == 0 {
return false, fmt.Errorf("cpu allocatable map is empty")
}
} else {
if node.NumaSchedulerInfo == nil {
return false, nil
}
if node.NumaSchedulerInfo.Policies[nodeinfov1alpha1.CPUManagerPolicy] != "static" {
return false, nil
}
if (node.NumaSchedulerInfo.Policies[nodeinfov1alpha1.TopologyManagerPolicy] == "none") ||
(node.NumaSchedulerInfo.Policies[nodeinfov1alpha1.TopologyManagerPolicy] == "") {
return false, nil
}
}
return true, nil
}