From 2ca8a4e58ed37b1140d8d71b48eea1b2a396b71e Mon Sep 17 00:00:00 2001 From: Piotr <17101802+thampiotr@users.noreply.github.com> Date: Mon, 13 Jan 2025 16:58:06 +0000 Subject: [PATCH 1/2] Intern strings in discovery components to reduce memory consumption. --- internal/component/discovery/discovery.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/internal/component/discovery/discovery.go b/internal/component/discovery/discovery.go index 03670814e1..5a081cc536 100644 --- a/internal/component/discovery/discovery.go +++ b/internal/component/discovery/discovery.go @@ -9,6 +9,7 @@ import ( "sync" "time" + "github.com/josharian/intern" "github.com/prometheus/common/model" "github.com/prometheus/prometheus/discovery" "github.com/prometheus/prometheus/discovery/targetgroup" @@ -274,10 +275,10 @@ func toAlloyTargets(cache map[string]*targetgroup.Group) []Target { // first add the group labels, and then the // target labels, so that target labels take precedence. for k, v := range group.Labels { - tLabels[string(k)] = string(v) + tLabels[intern.String(string(k))] = intern.String(string(v)) } for k, v := range target { - tLabels[string(k)] = string(v) + tLabels[intern.String(string(k))] = intern.String(string(v)) } allTargets = append(allTargets, tLabels) } From 42c113f059dceab69212d057ef69f0e3cda2c211 Mon Sep 17 00:00:00 2001 From: Piotr <17101802+thampiotr@users.noreply.github.com> Date: Wed, 15 Jan 2025 11:48:04 +0000 Subject: [PATCH 2/2] wip --- internal/component/discovery/discovery.go | 1 + internal/component/discovery/relabel/relabel.go | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/internal/component/discovery/discovery.go b/internal/component/discovery/discovery.go index 5a081cc536..4ab9f7342b 100644 --- a/internal/component/discovery/discovery.go +++ b/internal/component/discovery/discovery.go @@ -262,6 +262,7 @@ func (c *Component) runDiscovery(ctx context.Context, d DiscovererWithMetrics) { } func toAlloyTargets(cache map[string]*targetgroup.Group) []Target { + // TODO(thampiotr): HOT SPOT #1 targetsCount := 0 for _, group := range cache { targetsCount += len(group.Targets) diff --git a/internal/component/discovery/relabel/relabel.go b/internal/component/discovery/relabel/relabel.go index 6613c6c801..a7d4e63874 100644 --- a/internal/component/discovery/relabel/relabel.go +++ b/internal/component/discovery/relabel/relabel.go @@ -5,13 +5,14 @@ import ( "fmt" "sync" + "github.com/prometheus/prometheus/model/labels" + "github.com/prometheus/prometheus/model/relabel" + "github.com/grafana/alloy/internal/component" alloy_relabel "github.com/grafana/alloy/internal/component/common/relabel" "github.com/grafana/alloy/internal/component/discovery" "github.com/grafana/alloy/internal/featuregate" "github.com/grafana/alloy/internal/service/livedebugging" - "github.com/prometheus/prometheus/model/labels" - "github.com/prometheus/prometheus/model/relabel" ) func init() { @@ -92,9 +93,11 @@ func (c *Component) Update(args component.Arguments) error { c.rcs = relabelConfigs for _, t := range newArgs.Targets { + // TODO(thampiotr): HOT SPOT #2 lset := componentMapToPromLabels(t) relabelled, keep := relabel.Process(lset, relabelConfigs...) if keep { + // TODO(thampiotr): HOT SPOT #3 targets = append(targets, promLabelsToComponent(relabelled)) } componentID := livedebugging.ComponentID(c.opts.ID)