From af5b3575d0a2a63f6ec87fb58feb28b30419110a Mon Sep 17 00:00:00 2001 From: Dmitrii Stepanov Date: Thu, 20 Mar 2025 14:41:13 +0300 Subject: [PATCH] [#1690] qos: Do not export zero metrics counters Signed-off-by: Dmitrii Stepanov --- internal/qos/limiter.go | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/internal/qos/limiter.go b/internal/qos/limiter.go index 8f00791c5..e92cef652 100644 --- a/internal/qos/limiter.go +++ b/internal/qos/limiter.go @@ -211,13 +211,26 @@ func (n *mClockLimiter) startMetricsCollect() { continue } metrics := n.metrics.Load().metrics - for tag, s := range n.readStats { - metrics.SetOperationTagCounters(shardID, "read", tag, s.pending.Load(), s.inProgress.Load(), s.completed.Load(), s.resourceExhausted.Load()) - } - for tag, s := range n.writeStats { - metrics.SetOperationTagCounters(shardID, "write", tag, s.pending.Load(), s.inProgress.Load(), s.completed.Load(), s.resourceExhausted.Load()) - } + exportMetrics(metrics, n.readStats, shardID, "read") + exportMetrics(metrics, n.writeStats, shardID, "write") } } }() } + +func exportMetrics(metrics Metrics, stats map[string]*stat, shardID, operation string) { + var pending uint64 + var inProgress uint64 + var completed uint64 + var resExh uint64 + for tag, s := range stats { + pending = s.pending.Load() + inProgress = s.inProgress.Load() + completed = s.completed.Load() + resExh = s.resourceExhausted.Load() + if pending == 0 && inProgress == 0 && completed == 0 && resExh == 0 { + continue + } + metrics.SetOperationTagCounters(shardID, operation, tag, pending, inProgress, completed, resExh) + } +} -- 2.45.3