diff --git a/pkg/scheduler/api/devices/nvidia/vgpu/device_info.go b/pkg/scheduler/api/devices/nvidia/vgpu/device_info.go index a15dbbd854..2da54485b8 100644 --- a/pkg/scheduler/api/devices/nvidia/vgpu/device_info.go +++ b/pkg/scheduler/api/devices/nvidia/vgpu/device_info.go @@ -180,7 +180,7 @@ func (gs *GPUDevices) Release(kubeClient kubernetes.Interface, pod *v1.Pod) erro } func (gs *GPUDevices) FilterNode(pod *v1.Pod) (int, string, error) { - klog.V(3).Infoln("4pdvgpuDeviceSharing:Into FitInPod", pod.Name) + klog.V(5).Infoln("4pdvgpu DeviceSharing starts filtering pods", pod.Name) if VGPUEnable { fit, _, err := checkNodeGPUSharingPredicate(pod, gs, true) if err != nil || !fit { @@ -188,7 +188,7 @@ func (gs *GPUDevices) FilterNode(pod *v1.Pod) (int, string, error) { return devices.Unschedulable, fmt.Sprintf("4pdvgpuDeviceSharing %s", err.Error()), err } } - klog.V(3).Infoln("4pdvgpu DeviceSharing:FitInPod successed") + klog.V(5).Infoln("4pdvgpu DeviceSharing successfully filters pods") return devices.Success, "", nil } diff --git a/pkg/scheduler/plugins/predicates/predicates.go b/pkg/scheduler/plugins/predicates/predicates.go index 4fbd6a9927..198133df46 100644 --- a/pkg/scheduler/plugins/predicates/predicates.go +++ b/pkg/scheduler/plugins/predicates/predicates.go @@ -351,8 +351,7 @@ func (pp *predicatesPlugin) OnSessionOpen(ssn *framework.Session) { podTopologySpreadFilter := plugin.(*podtopologyspread.PodTopologySpread) state := k8sframework.NewCycleState() - skipPlugins := sets.New[string]() - state.SkipFilterPlugins = skipPlugins + skipPlugins := make(map[api.TaskID]sets.Set[string]) ssn.AddPrePredicateFn(pp.Name(), func(task *api.TaskInfo) error { // Check NodePorts @@ -376,7 +375,14 @@ func (pp *predicatesPlugin) OnSessionOpen(ssn *framework.Session) { if predicate.podAffinityEnable { _, status := podAffinityFilter.PreFilter(context.TODO(), state, task.Pod) if status.IsSkip() { - state.SkipFilterPlugins.Insert(interpodaffinity.Name) + taskKey := api.PodKey(task.Pod) + if _, ok := skipPlugins[taskKey]; !ok { + plugins := sets.New[string]() + skipPlugins[taskKey] = plugins + } + skipPlugins[taskKey].Insert(interpodaffinity.Name) + klog.V(3).Infof("pod(%s/%s) affinity require information is nil, plugin InterPodAffinity is skipped", + task.Namespace, task.Name) } else if !status.IsSuccess() { return fmt.Errorf("plugin %s pre-predicates failed %s", interpodaffinity.Name, status.Message()) } @@ -491,7 +497,16 @@ func (pp *predicatesPlugin) OnSessionOpen(ssn *framework.Session) { // Check PodAffinity if predicate.podAffinityEnable { - if !state.SkipFilterPlugins.Has(interpodaffinity.Name) { + isSkipInterPodAffinity := false + taskKey := api.PodKey(task.Pod) + if plugins, ok := skipPlugins[taskKey]; ok { + if plugins.Has(interpodaffinity.Name) { + isSkipInterPodAffinity = true + klog.V(5).Infof("pod(%s/%s) affinity require information is nil, plugin InterPodAffinity is skip for node %s", + task.Namespace, task.Name, node.Name) + } + } + if !isSkipInterPodAffinity { status := podAffinityFilter.Filter(context.TODO(), state, task.Pod, nodeInfo) podAffinityStatus := framework.ConvertPredicateStatus(status) if podAffinityStatus.Code != api.Success {