From 30bca1e1d5c962deb9b52de33fa928f142ff1a52 Mon Sep 17 00:00:00 2001 From: Maciej Borsz Date: Thu, 9 Mar 2023 17:09:36 +0000 Subject: [PATCH] Avoid metric lookup in Parallelizer.Util on every work piece --- pkg/scheduler/framework/parallelize/parallelism.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pkg/scheduler/framework/parallelize/parallelism.go b/pkg/scheduler/framework/parallelize/parallelism.go index 6b137d31e9a..94441b97d9c 100644 --- a/pkg/scheduler/framework/parallelize/parallelism.go +++ b/pkg/scheduler/framework/parallelize/parallelism.go @@ -54,10 +54,11 @@ func chunkSizeFor(n, parallelism int) int { // Until is a wrapper around workqueue.ParallelizeUntil to use in scheduling algorithms. // A given operation will be a label that is recorded in the goroutine metric. func (p Parallelizer) Until(ctx context.Context, pieces int, doWorkPiece workqueue.DoWorkPieceFunc, operation string) { + goroutinesMetric := metrics.Goroutines.WithLabelValues(operation) withMetrics := func(piece int) { - metrics.Goroutines.WithLabelValues(operation).Inc() - defer metrics.Goroutines.WithLabelValues(operation).Dec() + goroutinesMetric.Inc() doWorkPiece(piece) + goroutinesMetric.Dec() } workqueue.ParallelizeUntil(ctx, p.parallelism, pieces, withMetrics, workqueue.WithChunkSize(chunkSizeFor(pieces, p.parallelism)))