diff --git a/pkg/scheduler/framework/runtime/framework.go b/pkg/scheduler/framework/runtime/framework.go index 1dbce09ff11..b1275e62775 100644 --- a/pkg/scheduler/framework/runtime/framework.go +++ b/pkg/scheduler/framework/runtime/framework.go @@ -734,6 +734,7 @@ func (f *frameworkImpl) RunFilterPlugins( if state.SkipFilterPlugins.Has(pl.Name()) { continue } + metrics.PluginEvaluationTotal.WithLabelValues(pl.Name(), Filter).Inc() if status := f.runFilterPlugin(ctx, pl, state, pod, nodeInfo); !status.IsSuccess() { if !status.IsUnschedulable() { // Filter plugins are not supposed to return any status other than diff --git a/pkg/scheduler/metrics/metrics.go b/pkg/scheduler/metrics/metrics.go index 335cba29396..f5c3eda1ce9 100644 --- a/pkg/scheduler/metrics/metrics.go +++ b/pkg/scheduler/metrics/metrics.go @@ -189,6 +189,14 @@ var ( StabilityLevel: metrics.ALPHA, }, []string{"plugin", "profile"}) + PluginEvaluationTotal = metrics.NewCounterVec( + &metrics.CounterOpts{ + Subsystem: SchedulerSubsystem, + Name: "plugin_evaluation_total", + Help: "Number of attempts to schedule pods by each plugin and the extension point (only Filter is supported now.).", + StabilityLevel: metrics.ALPHA, + }, []string{"plugin", "extension_point"}) + metricsList = []metrics.Registerable{ scheduleAttempts, e2eSchedulingLatency, @@ -207,6 +215,7 @@ var ( PermitWaitDuration, CacheSize, unschedulableReasons, + PluginEvaluationTotal, } )