Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reduce resource consumption of discovery components #1999

Open
mattdurham opened this issue Oct 29, 2024 · 6 comments
Open

Reduce resource consumption of discovery components #1999

mattdurham opened this issue Oct 29, 2024 · 6 comments
Assignees
Labels
enhancement New feature or request

Comments

@mattdurham
Copy link
Collaborator

mattdurham commented Oct 29, 2024

Reduce resource consumption of discovery components

Address high allocs in creation of targets lists

Targets/Discovery are represented as list(map[string]), with discovery running every 5 seconds in very large clusters the garbage collector can spike due to creating these labels. The names especially are repeated. The hard part is implementing the capsule value so hard coded targets still work. This is because in the alloy runtime there is a bug where you cannot convert from list/map to a capsule value.

In reviewing profiles this code was by far the largest allocator.

allTargets := []Target{}

Use case

Reduce memory and cpu consumption

@mattdurham mattdurham added the enhancement New feature or request label Oct 29, 2024
@thampiotr thampiotr self-assigned this Nov 21, 2024
@thampiotr thampiotr changed the title Use unique handle for discovery and generic targets to save GC and memory Reduce resource consumption of discovery components Nov 21, 2024
@thampiotr
Copy link
Contributor

@mattdurham I've re-purposed this issue for the work we've planned earlier this week.

Copy link
Contributor

This issue has not had any activity in the past 30 days, so the needs-attention label has been added to it.
If the opened issue is a bug, check to see if a newer release fixed your issue. If it is no longer relevant, please feel free to close this issue.
The needs-attention label signals to maintainers that something has fallen through the cracks. No action is needed by you; your issue will be kept open and you do not have to respond to this comment. The label will be removed the next time this job runs if there is new activity.
Thank you for your contributions!

@thampiotr
Copy link
Contributor

Some quick look at profiles to get an idea of the issue right now:

In one of our metrics collecting deployments we can see near 60% of CPU time spent on GC:

Image

And near 60% of memory is allocated in discovery code:

Image

This is a large cluster with 1k+ nodes and 20k+ targets.

@thampiotr
Copy link
Contributor

Some low-hanging fruit fix that can be done with less effort for now: #2350

@thampiotr
Copy link
Contributor

The above PR has reduced allocation in one cluster we have by 46% 🎉
Image

The GC is down by 10-15%, but that cluster wasn't too stressed to begin with.

@thampiotr
Copy link
Contributor

thampiotr commented Jan 15, 2025

Another PR that will help reduce by 50% another allocation hotspot in Alloy: #2405
This time it's FanOut and Interceptor code. This can quickly grow in size in large pipelines.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants