Avoid metric lookup in Parallelizer.Util on every work piece

This commit is contained in:
Maciej Borsz 2023-03-09 17:09:36 +00:00
parent f90643435e
commit 30bca1e1d5

View File

@ -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)))