From 451a535401856ba917e0da8fb1fa5bd94c75b3a4 Mon Sep 17 00:00:00 2001 From: Iman Tabrizian Date: Tue, 8 Oct 2019 12:25:16 -0400 Subject: [PATCH] feat: feat: change the `pod_preemption_victims` to Histogram --- pkg/scheduler/metrics/metrics.go | 12 +++++++----- pkg/scheduler/scheduler.go | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/pkg/scheduler/metrics/metrics.go b/pkg/scheduler/metrics/metrics.go index cd056ce0c16..1db760135a3 100644 --- a/pkg/scheduler/metrics/metrics.go +++ b/pkg/scheduler/metrics/metrics.go @@ -195,11 +195,13 @@ var ( StabilityLevel: metrics.ALPHA, }, ) - PreemptionVictims = metrics.NewGauge( - &metrics.GaugeOpts{ - Subsystem: SchedulerSubsystem, - Name: "pod_preemption_victims", - Help: "Number of selected preemption victims", + PreemptionVictims = metrics.NewHistogram( + &metrics.HistogramOpts{ + Subsystem: SchedulerSubsystem, + Name: "pod_preemption_victims", + Help: "Number of selected preemption victims", + // we think #victims>50 is pretty rare, therefore [50, +Inf) is considered a single bucket. + Buckets: metrics.LinearBuckets(5, 5, 10), StabilityLevel: metrics.ALPHA, }) PreemptionAttempts = metrics.NewCounter( diff --git a/pkg/scheduler/scheduler.go b/pkg/scheduler/scheduler.go index 8aef5f4c050..8422f769a10 100644 --- a/pkg/scheduler/scheduler.go +++ b/pkg/scheduler/scheduler.go @@ -437,7 +437,7 @@ func (sched *Scheduler) preempt(state *framework.CycleState, fwk framework.Frame sched.Recorder.Eventf(victim, preemptor, v1.EventTypeNormal, "Preempted", "Preempting", "Preempted by %v/%v on node %v", preemptor.Namespace, preemptor.Name, nodeName) } - metrics.PreemptionVictims.Set(float64(len(victims))) + metrics.PreemptionVictims.Observe(float64(len(victims))) } // Clearing nominated pods should happen outside of "if node != nil". Node could // be nil when a pod with nominated node name is eligible to preempt again,