Skip to content
Draft
Show file tree
Hide file tree
Changes from 35 commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
5bace8b
Add cache and sum over time splitting
fionaliao Oct 31, 2025
970467b
Start integrating cache
fionaliao Nov 1, 2025
2e0b840
Rough implementation of nextseries
fionaliao Nov 4, 2025
b99ca91
Start testing
fionaliao Nov 4, 2025
da87495
Tests pass
fionaliao Nov 4, 2025
e2b3b90
Wire up cache via engine
fionaliao Nov 4, 2025
8daac53
Add range query tests
fionaliao Nov 5, 2025
54b8c6d
Add optimisation pass and separate split operator
fionaliao Nov 5, 2025
3852775
Stop creating new ring buffers
fionaliao Nov 5, 2025
0112ea2
Refactor by looking at ir blocks requested rather than recalculating …
fionaliao Nov 5, 2025
3192bb9
Simplify to instant queries only
fionaliao Nov 5, 2025
c7e74d0
Improving tests
fionaliao Nov 11, 2025
57eb4f1
Make cache work in local demo
fionaliao Nov 11, 2025
57de49e
Use filesystem in dev to test with generated blocks
fionaliao Nov 11, 2025
c52be0d
Cleanup
fionaliao Nov 11, 2025
e5ecd19
Fix build
fionaliao Nov 11, 2025
82f5024
Ensure seriesmetadata memory is tracked
fionaliao Nov 12, 2025
3ea29b9
Improve comments
fionaliao Nov 12, 2025
ab743f0
Add method to expand metadata slice returned from the pool
fionaliao Nov 13, 2025
d2b1214
Move cache init into streamingpromql package
fionaliao Nov 13, 2025
0902517
Minor cleanup
fionaliao Nov 13, 2025
3f5e0eb
Fix test post cache init move
fionaliao Nov 13, 2025
b6a77ff
Introduce query splitting materializer
fionaliao Nov 14, 2025
1b1911d
Update pkg/streamingpromql/optimize/plan/querysplitting/optimization_…
fionaliao Nov 14, 2025
5b2cbc7
Merge branch 'main' into intermediate-cache-new
fionaliao Nov 14, 2025
59b00c1
Use google.protobuf.Duration for splitDurationMs
fionaliao Nov 14, 2025
f100964
make format-protobuf
fionaliao Nov 14, 2025
dae7ed0
Refactor cache to have potentially streamable interfaces
fionaliao Nov 14, 2025
38c1bdf
Call Prepare() on uncached operators
fionaliao Nov 14, 2025
3026f30
Run query splitting optimisation pass before CSE
fionaliao Nov 19, 2025
3e73e77
Implement count_over_time (to test CSE interaction)
fionaliao Nov 19, 2025
f7b2961
Add CSE tests (not all passing yet)
fionaliao Nov 19, 2025
1730442
Rough working implementation with cse
fionaliao Nov 19, 2025
0aa6d45
Add tests in prep for storage time alignment
fionaliao Nov 19, 2025
d09f20e
Add QuerySplittingCacheKey() method
fionaliao Nov 20, 2025
14cb530
Implement offset and @ adjustments
fionaliao Nov 21, 2025
d20ae99
Introduce generics for polymorphism
fionaliao Nov 22, 2025
8564d7a
Add a few more function implementations and refactor
fionaliao Nov 22, 2025
c3f4923
Implement rate/increase
fionaliao Nov 28, 2025
b359f1f
Remove unused method
fionaliao Nov 28, 2025
c0610ab
Simplify time range params
fionaliao Nov 28, 2025
f14cbbd
Build fixes
fionaliao Nov 28, 2025
2d6593a
Use new slice from pool when appending and need more capacity
fionaliao Nov 28, 2025
86ffbe1
Clean up
fionaliao Nov 28, 2025
fe7c664
Remove version field (is part of cache key anyway)
fionaliao Dec 10, 2025
a61a9bd
Add more metrics and logging
fionaliao Dec 10, 2025
cc61c18
Merge branch 'main' into intermediate-cache-new
fionaliao Dec 11, 2025
d09cf2b
Don't allow smoothed and anchored modifiers to be split for now
fionaliao Dec 11, 2025
368b791
Use reg param
fionaliao Dec 11, 2025
eafeb13
Add more stats
fionaliao Dec 12, 2025
fab2df0
Fix result getter infinite loop
fionaliao Dec 12, 2025
267ca09
Improve logging
fionaliao Dec 12, 2025
dc73094
Fix rate combine when a middle split has no samples
fionaliao Dec 12, 2025
da99f81
Only run finalize if all actions succeeded
fionaliao Dec 12, 2025
c6da4b2
Add supported query plan version properly
fionaliao Dec 12, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 16 additions & 2 deletions development/mimir-ingest-storage/config/mimir.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -39,14 +39,18 @@ block_builder_scheduler:
startup_observe_time: 5s

blocks_storage:
s3:
bucket_name: mimir-blocks
backend: filesystem
filesystem:
dir: /blocks-data
tsdb:
dir: /data
head_postings_for_matchers_cache_force: true
block_postings_for_matchers_cache_force: true

bucket_store:
bucket_index:
max_stale_period: 168h

index_cache:
backend: memcached
memcached:
Expand Down Expand Up @@ -85,6 +89,16 @@ ruler_storage:
memcached:
addresses: dns+memcached:11211

querier:
mimir_query_engine:
instant_query_splitting:
enabled: true
split_interval: 2h
intermediate_results_cache:
backend: memcached
memcached:
addresses: dns+memcached:11211

query_scheduler:
service_discovery_mode: "ring"

Expand Down
3 changes: 2 additions & 1 deletion development/mimir-ingest-storage/docker-compose.jsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -379,7 +379,8 @@ std.manifestYamlDoc({
extraArguments: [],
debug: false,
debugPort: self.publishedHttpPort + 3000,
extraVolumes: [],
// Temp: add volume for filesystem while testing query splitting
extraVolumes: ['.blocks-data:/blocks-data:delegated'],
memberlistBindPort: self.publishedHttpPort + 2000,
},

Expand Down
14 changes: 14 additions & 0 deletions development/mimir-ingest-storage/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
"volumes":
- "./config:/mimir/config"
- "./activity:/activity"
- ".blocks-data:/blocks-data:delegated"
"block-builder-0":
"build":
"context": "."
Expand All @@ -49,6 +50,7 @@
"volumes":
- "./config:/mimir/config"
- "./activity:/activity"
- ".blocks-data:/blocks-data:delegated"
"block-builder-scheduler-0":
"build":
"context": "."
Expand All @@ -74,6 +76,7 @@
"volumes":
- "./config:/mimir/config"
- "./activity:/activity"
- ".blocks-data:/blocks-data:delegated"
"compactor":
"build":
"context": "."
Expand All @@ -99,6 +102,7 @@
"volumes":
- "./config:/mimir/config"
- "./activity:/activity"
- ".blocks-data:/blocks-data:delegated"
"distributor-1":
"build":
"context": "."
Expand All @@ -124,6 +128,7 @@
"volumes":
- "./config:/mimir/config"
- "./activity:/activity"
- ".blocks-data:/blocks-data:delegated"
"grafana":
"environment":
- "GF_AUTH_ANONYMOUS_ENABLED=true"
Expand Down Expand Up @@ -335,6 +340,7 @@
"volumes":
- "./config:/mimir/config"
- "./activity:/activity"
- ".blocks-data:/blocks-data:delegated"
"query-frontend":
"build":
"context": "."
Expand All @@ -360,6 +366,7 @@
"volumes":
- "./config:/mimir/config"
- "./activity:/activity"
- ".blocks-data:/blocks-data:delegated"
"query-scheduler":
"build":
"context": "."
Expand All @@ -385,6 +392,7 @@
"volumes":
- "./config:/mimir/config"
- "./activity:/activity"
- ".blocks-data:/blocks-data:delegated"
"redpanda_console":
"environment":
- "KAFKA_BROKERS=kafka_1:9092,kafka_2:9092,kafka_3:9092"
Expand Down Expand Up @@ -416,6 +424,7 @@
"volumes":
- "./config:/mimir/config"
- "./activity:/activity"
- ".blocks-data:/blocks-data:delegated"
"store-gateway-zone-a-1":
"build":
"context": "."
Expand All @@ -441,6 +450,7 @@
"volumes":
- "./config:/mimir/config"
- "./activity:/activity"
- ".blocks-data:/blocks-data:delegated"
"store-gateway-zone-b-1":
"build":
"context": "."
Expand All @@ -466,6 +476,7 @@
"volumes":
- "./config:/mimir/config"
- "./activity:/activity"
- ".blocks-data:/blocks-data:delegated"
"tempo":
"command":
- "-config.file=/etc/config/tempo.yaml"
Expand Down Expand Up @@ -502,6 +513,7 @@
"volumes":
- "./config:/mimir/config"
- "./activity:/activity"
- ".blocks-data:/blocks-data:delegated"
"usage-tracker-zone-a-1":
"build":
"context": "."
Expand All @@ -527,6 +539,7 @@
"volumes":
- "./config:/mimir/config"
- "./activity:/activity"
- ".blocks-data:/blocks-data:delegated"
"usage-tracker-zone-b-0":
"build":
"context": "."
Expand All @@ -552,3 +565,4 @@
"volumes":
- "./config:/mimir/config"
- "./activity:/activity"
- ".blocks-data:/blocks-data:delegated"
4 changes: 4 additions & 0 deletions pkg/querier/querier.go
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,10 @@ func (cfg *Config) Validate() error {
return errStreamingStoreGatewayBufferSize
}

if err := cfg.EngineConfig.MimirQueryEngine.InstantQuerySplitting.Validate(); err != nil {
return fmt.Errorf("invalid instant query splitting config: %w", err)
}

return nil
}

Expand Down
Loading