Query profiles parquet data from Queriers
- Dominant language
- Go
- Stars
- 11.7k
- Forks
- 802
- Avg merge
- 1d 19h
- Merged PRs (30d)
- 80
Description
As of now when we query from profiles we ask ingesters and store-gateways for profiling data. Most of data selection and aggregations/merge happens on those two components. This is where most of the CPU usage is on the read path.
Store-gateways are not really scalable since only 3 replicas of store-gateways has one given block per tenant, it also means some gateway will be more challenged than others which can cause unbalance usage ressources.
This is why I propose we stop selecting and merging data from store-gateways. We should only requests SeriesIndex+Labels per block to store-gateway then we should query directly parquet files from queriers and merge the data there. In fact I think store-gateways should only provide cache for tsdb and parquet file index.
This will reduce cost of operations since store-gateways have disk and will be less challenged but also improve scalability of the read path.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by tracing profile reads across ingesters, store-gateways, and queriers, focusing on SeriesIndex, labels, and parquet data selection and merging. Done means profile queries no longer select and merge data in store-gateways, while queriers query and merge the parquet data with the required behavior preserved.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- backend, data, distributed-systems, performance
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100