-
Notifications
You must be signed in to change notification settings - Fork 625
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
feat: configurable symbols partitioning #3820
base: main
Are you sure you want to change the base?
Conversation
526af93
to
01dfd02
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm.
I wonder if this can be a relabeling configuration instead of just one dimension.
it could allow different configurations per tenants
In addition it would allow to merge partitions between similar service_names (cortex-dev-001/compactor, cortext-dev-002/compactor)
Yes, it is supposed to be used in conjunction with relabeling rules. For example, you specify your label as symbols partition –
This is a service-level parameter, actually. Use of relabeling rules should allow for that.
Yes, this can be solved with relabeling rules. |
sorry, for some reason I did not think of using an existing relabeling rules |
01dfd02
to
bffdee6
Compare
Should we add some doc for this? |
@knylander-grafana Thanks for the reminder! I completely forgot to update the generated config docs. I think we're good for now and don't need anything more detailed at this point |
I've tested the change in one of the dev environments and can confirm that a strict partition-service mapping will cause an increase in memory usage. This was expected, but I'm not sure if we want to allocate more memory / scale-out ingesters In the meantime, I cannot say that it fully addresses the compaction performance issue. |
can we try merging some of the partitions? for example mimir-dev-.* => mimir ? |
That would work, but I'd like to avoid overly specific configurations
Now I'm sure that the environment was malfunctioning. I'm going to repeat the test under more reliable conditions |
Resolves #3262
The PR adds a configuration option (
-pyroscopedb.symbols-partition-label
) to control how symbols are partitioned.Currently, we infer the partition key based on the main binary mapping, aiming to create shared partitions for binaries with the same name. This helps optimize memory usage during writes when the same binary runs in different contexts. As a fallback, the
service_name
label value is used as the symbols partition key.However, this approach is quite fragile and may result in poor performance during query or compaction operations.