From 022640f46c03ee15af98ccc24bd39c50b037f0ad Mon Sep 17 00:00:00 2001 From: Charles Korn Date: Mon, 2 Oct 2023 15:52:25 +1100 Subject: [PATCH 1/5] Enable ingester to querier chunks streaming and ingester query request minimisation by default. --- cmd/mimir/config-descriptor.json | 14 ++++----- cmd/mimir/help-all.txt.tmpl | 8 ++--- cmd/mimir/help.txt.tmpl | 4 +++ .../mimir/configure/about-versioning.md | 2 -- .../configuration-parameters/index.md | 31 +++++++++---------- pkg/querier/querier.go | 12 +++---- 6 files changed, 35 insertions(+), 36 deletions(-) diff --git a/cmd/mimir/config-descriptor.json b/cmd/mimir/config-descriptor.json index 471969a0913..8d41740819a 100644 --- a/cmd/mimir/config-descriptor.json +++ b/cmd/mimir/config-descriptor.json @@ -1722,10 +1722,9 @@ "required": false, "desc": "Request ingesters stream chunks. Ingesters will only respond with a stream of chunks if the target ingester supports this, and this preference will be ignored by ingesters that do not support this.", "fieldValue": null, - "fieldDefaultValue": false, + "fieldDefaultValue": true, "fieldFlag": "querier.prefer-streaming-chunks-from-ingesters", - "fieldType": "boolean", - "fieldCategory": "experimental" + "fieldType": "boolean" }, { "kind": "field", @@ -1747,7 +1746,7 @@ "fieldDefaultValue": 256, "fieldFlag": "querier.streaming-chunks-per-ingester-buffer-size", "fieldType": "int", - "fieldCategory": "experimental" + "fieldCategory": "advanced" }, { "kind": "field", @@ -1766,10 +1765,9 @@ "required": false, "desc": "If true, when querying ingesters, only the minimum required ingesters required to reach quorum will be queried initially, with other ingesters queried only if needed due to failures from the initial set of ingesters. Enabling this option reduces resource consumption for the happy path at the cost of increased latency for the unhappy path.", "fieldValue": null, - "fieldDefaultValue": false, + "fieldDefaultValue": true, "fieldFlag": "querier.minimize-ingester-requests", - "fieldType": "boolean", - "fieldCategory": "experimental" + "fieldType": "boolean" }, { "kind": "field", @@ -1780,7 +1778,7 @@ "fieldDefaultValue": 3000000000, "fieldFlag": "querier.minimize-ingester-requests-hedging-delay", "fieldType": "duration", - "fieldCategory": "experimental" + "fieldCategory": "advanced" }, { "kind": "field", diff --git a/cmd/mimir/help-all.txt.tmpl b/cmd/mimir/help-all.txt.tmpl index 705e3948cae..9cea71ea3e7 100644 --- a/cmd/mimir/help-all.txt.tmpl +++ b/cmd/mimir/help-all.txt.tmpl @@ -1660,11 +1660,11 @@ Usage of ./cmd/mimir/mimir: -querier.max-samples int Maximum number of samples a single query can load into memory. This config option should be set on query-frontend too when query sharding is enabled. (default 50000000) -querier.minimize-ingester-requests - [experimental] If true, when querying ingesters, only the minimum required ingesters required to reach quorum will be queried initially, with other ingesters queried only if needed due to failures from the initial set of ingesters. Enabling this option reduces resource consumption for the happy path at the cost of increased latency for the unhappy path. + If true, when querying ingesters, only the minimum required ingesters required to reach quorum will be queried initially, with other ingesters queried only if needed due to failures from the initial set of ingesters. Enabling this option reduces resource consumption for the happy path at the cost of increased latency for the unhappy path. (default true) -querier.minimize-ingester-requests-hedging-delay duration - [experimental] Delay before initiating requests to further ingesters when request minimization is enabled and the initially selected set of ingesters have not all responded. Ignored if -querier.minimize-ingester-requests is not enabled. (default 3s) + Delay before initiating requests to further ingesters when request minimization is enabled and the initially selected set of ingesters have not all responded. Ignored if -querier.minimize-ingester-requests is not enabled. (default 3s) -querier.prefer-streaming-chunks-from-ingesters - [experimental] Request ingesters stream chunks. Ingesters will only respond with a stream of chunks if the target ingester supports this, and this preference will be ignored by ingesters that do not support this. + Request ingesters stream chunks. Ingesters will only respond with a stream of chunks if the target ingester supports this, and this preference will be ignored by ingesters that do not support this. (default true) -querier.prefer-streaming-chunks-from-store-gateways [experimental] Request store-gateways stream chunks. Store-gateways will only respond with a stream of chunks if the target store-gateway supports this, and this preference will be ignored by store-gateways that do not support this. -querier.query-ingesters-within duration @@ -1692,7 +1692,7 @@ Usage of ./cmd/mimir/mimir: -querier.store-gateway-client.tls-server-name string Override the expected name on the server certificate. -querier.streaming-chunks-per-ingester-buffer-size uint - [experimental] Number of series to buffer per ingester when streaming chunks from ingesters. (default 256) + Number of series to buffer per ingester when streaming chunks from ingesters. (default 256) -querier.streaming-chunks-per-store-gateway-buffer-size uint [experimental] Number of series to buffer per store-gateway when streaming chunks from store-gateways. (default 256) -querier.timeout duration diff --git a/cmd/mimir/help.txt.tmpl b/cmd/mimir/help.txt.tmpl index 132819ee4be..365cb011c04 100644 --- a/cmd/mimir/help.txt.tmpl +++ b/cmd/mimir/help.txt.tmpl @@ -457,6 +457,10 @@ Usage of ./cmd/mimir/mimir: Maximum number of split (by time) or partial (by shard) queries that will be scheduled in parallel by the query-frontend for a single input query. This limit is introduced to have a fairer query scheduling and avoid a single query over a large time range saturating all available queriers. (default 14) -querier.max-samples int Maximum number of samples a single query can load into memory. This config option should be set on query-frontend too when query sharding is enabled. (default 50000000) + -querier.minimize-ingester-requests + If true, when querying ingesters, only the minimum required ingesters required to reach quorum will be queried initially, with other ingesters queried only if needed due to failures from the initial set of ingesters. Enabling this option reduces resource consumption for the happy path at the cost of increased latency for the unhappy path. (default true) + -querier.prefer-streaming-chunks-from-ingesters + Request ingesters stream chunks. Ingesters will only respond with a stream of chunks if the target ingester supports this, and this preference will be ignored by ingesters that do not support this. (default true) -querier.scheduler-address string Address of the query-scheduler component, in host:port format. The host should resolve to all query-scheduler instances. This option should be set only when query-scheduler component is in use and -query-scheduler.service-discovery-mode is set to 'dns'. -querier.timeout duration diff --git a/docs/sources/mimir/configure/about-versioning.md b/docs/sources/mimir/configure/about-versioning.md index b7898bfe4ee..5c031fec151 100644 --- a/docs/sources/mimir/configure/about-versioning.md +++ b/docs/sources/mimir/configure/about-versioning.md @@ -112,9 +112,7 @@ The following features are currently experimental: - `-ingester.client.circuit-breaker.cooldown-period` - Querier - Use of Redis cache backend (`-blocks-storage.bucket-store.metadata-cache.backend=redis`) - - Streaming chunks from ingester to querier (`-querier.prefer-streaming-chunks-from-ingesters`, `-querier.streaming-chunks-per-ingester-buffer-size`) - Streaming chunks from store-gateway to querier (`-querier.prefer-streaming-chunks-from-store-gateways`, `-querier.streaming-chunks-per-store-gateway-buffer-size`) - - Ingester query request minimisation (`-querier.minimize-ingester-requests`, `-querier.minimize-ingester-requests-hedging-delay`) - Limiting queries based on the estimated number of chunks that will be used (`-querier.max-estimated-fetched-chunks-per-query-multiplier`) - Max concurrency for tenant federated queries (`-tenant-federation.max-concurrent`) - Query-frontend diff --git a/docs/sources/mimir/references/configuration-parameters/index.md b/docs/sources/mimir/references/configuration-parameters/index.md index 13be095fd58..9f28dbd4f7d 100644 --- a/docs/sources/mimir/references/configuration-parameters/index.md +++ b/docs/sources/mimir/references/configuration-parameters/index.md @@ -1213,11 +1213,11 @@ store_gateway_client: # CLI flag: -querier.shuffle-sharding-ingesters-enabled [shuffle_sharding_ingesters_enabled: | default = true] -# (experimental) Request ingesters stream chunks. Ingesters will only respond -# with a stream of chunks if the target ingester supports this, and this -# preference will be ignored by ingesters that do not support this. +# Request ingesters stream chunks. Ingesters will only respond with a stream of +# chunks if the target ingester supports this, and this preference will be +# ignored by ingesters that do not support this. # CLI flag: -querier.prefer-streaming-chunks-from-ingesters -[prefer_streaming_chunks_from_ingesters: | default = false] +[prefer_streaming_chunks_from_ingesters: | default = true] # (experimental) Request store-gateways stream chunks. Store-gateways will only # respond with a stream of chunks if the target store-gateway supports this, and @@ -1225,8 +1225,8 @@ store_gateway_client: # CLI flag: -querier.prefer-streaming-chunks-from-store-gateways [prefer_streaming_chunks_from_store_gateways: | default = false] -# (experimental) Number of series to buffer per ingester when streaming chunks -# from ingesters. +# (advanced) Number of series to buffer per ingester when streaming chunks from +# ingesters. # CLI flag: -querier.streaming-chunks-per-ingester-buffer-size [streaming_chunks_per_ingester_series_buffer_size: | default = 256] @@ -1235,18 +1235,17 @@ store_gateway_client: # CLI flag: -querier.streaming-chunks-per-store-gateway-buffer-size [streaming_chunks_per_store_gateway_series_buffer_size: | default = 256] -# (experimental) If true, when querying ingesters, only the minimum required -# ingesters required to reach quorum will be queried initially, with other -# ingesters queried only if needed due to failures from the initial set of -# ingesters. Enabling this option reduces resource consumption for the happy -# path at the cost of increased latency for the unhappy path. +# If true, when querying ingesters, only the minimum required ingesters required +# to reach quorum will be queried initially, with other ingesters queried only +# if needed due to failures from the initial set of ingesters. Enabling this +# option reduces resource consumption for the happy path at the cost of +# increased latency for the unhappy path. # CLI flag: -querier.minimize-ingester-requests -[minimize_ingester_requests: | default = false] +[minimize_ingester_requests: | default = true] -# (experimental) Delay before initiating requests to further ingesters when -# request minimization is enabled and the initially selected set of ingesters -# have not all responded. Ignored if -querier.minimize-ingester-requests is not -# enabled. +# (advanced) Delay before initiating requests to further ingesters when request +# minimization is enabled and the initially selected set of ingesters have not +# all responded. Ignored if -querier.minimize-ingester-requests is not enabled. # CLI flag: -querier.minimize-ingester-requests-hedging-delay [minimize_ingester_requests_hedging_delay: | default = 3s] diff --git a/pkg/querier/querier.go b/pkg/querier/querier.go index bba619fdbff..49ae1ba68d7 100644 --- a/pkg/querier/querier.go +++ b/pkg/querier/querier.go @@ -52,12 +52,12 @@ type Config struct { ShuffleShardingIngestersEnabled bool `yaml:"shuffle_sharding_ingesters_enabled" category:"advanced"` - PreferStreamingChunksFromIngesters bool `yaml:"prefer_streaming_chunks_from_ingesters" category:"experimental"` + PreferStreamingChunksFromIngesters bool `yaml:"prefer_streaming_chunks_from_ingesters"` PreferStreamingChunksFromStoreGateways bool `yaml:"prefer_streaming_chunks_from_store_gateways" category:"experimental"` - StreamingChunksPerIngesterSeriesBufferSize uint64 `yaml:"streaming_chunks_per_ingester_series_buffer_size" category:"experimental"` + StreamingChunksPerIngesterSeriesBufferSize uint64 `yaml:"streaming_chunks_per_ingester_series_buffer_size" category:"advanced"` StreamingChunksPerStoreGatewaySeriesBufferSize uint64 `yaml:"streaming_chunks_per_store_gateway_series_buffer_size" category:"experimental"` - MinimizeIngesterRequests bool `yaml:"minimize_ingester_requests" category:"experimental"` - MinimiseIngesterRequestsHedgingDelay time.Duration `yaml:"minimize_ingester_requests_hedging_delay" category:"experimental"` + MinimizeIngesterRequests bool `yaml:"minimize_ingester_requests"` + MinimiseIngesterRequestsHedgingDelay time.Duration `yaml:"minimize_ingester_requests_hedging_delay" category:"advanced"` // PromQL engine config. EngineConfig engine.Config `yaml:",inline"` @@ -86,11 +86,11 @@ func (cfg *Config) RegisterFlags(f *flag.FlagSet) { f.DurationVar(&cfg.MaxQueryIntoFuture, "querier.max-query-into-future", 10*time.Minute, "Maximum duration into the future you can query. 0 to disable.") f.DurationVar(&cfg.QueryStoreAfter, queryStoreAfterFlag, 12*time.Hour, "The time after which a metric should be queried from storage and not just ingesters. 0 means all queries are sent to store. If this option is enabled, the time range of the query sent to the store-gateway will be manipulated to ensure the query end is not more recent than 'now - query-store-after'.") f.BoolVar(&cfg.ShuffleShardingIngestersEnabled, "querier.shuffle-sharding-ingesters-enabled", true, fmt.Sprintf("Fetch in-memory series from the minimum set of required ingesters, selecting only ingesters which may have received series since -%s. If this setting is false or -%s is '0', queriers always query all ingesters (ingesters shuffle sharding on read path is disabled).", validation.QueryIngestersWithinFlag, validation.QueryIngestersWithinFlag)) - f.BoolVar(&cfg.PreferStreamingChunksFromIngesters, "querier.prefer-streaming-chunks-from-ingesters", false, "Request ingesters stream chunks. Ingesters will only respond with a stream of chunks if the target ingester supports this, and this preference will be ignored by ingesters that do not support this.") + f.BoolVar(&cfg.PreferStreamingChunksFromIngesters, "querier.prefer-streaming-chunks-from-ingesters", true, "Request ingesters stream chunks. Ingesters will only respond with a stream of chunks if the target ingester supports this, and this preference will be ignored by ingesters that do not support this.") f.BoolVar(&cfg.PreferStreamingChunksFromStoreGateways, "querier.prefer-streaming-chunks-from-store-gateways", false, "Request store-gateways stream chunks. Store-gateways will only respond with a stream of chunks if the target store-gateway supports this, and this preference will be ignored by store-gateways that do not support this.") const minimiseIngesterRequestsFlagName = "querier.minimize-ingester-requests" - f.BoolVar(&cfg.MinimizeIngesterRequests, minimiseIngesterRequestsFlagName, false, "If true, when querying ingesters, only the minimum required ingesters required to reach quorum will be queried initially, with other ingesters queried only if needed due to failures from the initial set of ingesters. Enabling this option reduces resource consumption for the happy path at the cost of increased latency for the unhappy path.") + f.BoolVar(&cfg.MinimizeIngesterRequests, minimiseIngesterRequestsFlagName, true, "If true, when querying ingesters, only the minimum required ingesters required to reach quorum will be queried initially, with other ingesters queried only if needed due to failures from the initial set of ingesters. Enabling this option reduces resource consumption for the happy path at the cost of increased latency for the unhappy path.") f.DurationVar(&cfg.MinimiseIngesterRequestsHedgingDelay, minimiseIngesterRequestsFlagName+"-hedging-delay", 3*time.Second, "Delay before initiating requests to further ingesters when request minimization is enabled and the initially selected set of ingesters have not all responded. Ignored if -"+minimiseIngesterRequestsFlagName+" is not enabled.") // Why 256 series / ingester/store-gateway? From fb16aca5442c4a9b539e8c8a148a2640c291eacd Mon Sep 17 00:00:00 2001 From: Charles Korn Date: Mon, 2 Oct 2023 16:02:01 +1100 Subject: [PATCH 2/5] Add changelog entry. --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d9f589bc8de..7ef9cb4739d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,8 @@ * [CHANGE] General: enabled `-log.buffered` by default. The `-log.buffered` has been deprecated and will be removed in Mimir 2.13. #6131 * [CHANGE] Ingester: changed default `-blocks-storage.tsdb.series-hash-cache-max-size-bytes` setting from `1GB` to `350MB`. The new default cache size is enough to store the hashes for all series in a ingester, assuming up to 2M in-memory series per ingester and using the default 13h retention period for local TSDB blocks in the ingesters. #6129 * [CHANGE] Query-frontend: removed `cortex_query_frontend_workers_enqueued_requests_total`. Use `cortex_query_frontend_enqueue_duration_seconds_count` instead. #6121 +* [CHANGE] Ingester / querier: enable ingester to querier chunks streaming by default and mark it as not experimental. #6174 +* [CHANGE] Ingester / querier: enable ingester query request minimisation by default and mark it as not experimental. #6174 * [FEATURE] Query-frontend: add experimental support for query blocking. Queries are blocked on a per-tenant basis and is configured via the limit `blocked_queries`. #5609 * [FEATURE] Vault: Added support for new Vault authentication methods: `AppRole`, `Kubernetes`, `UserPass` and `Token`. #6143 * [ENHANCEMENT] Ingester: exported summary `cortex_ingester_inflight_push_requests_summary` tracking total number of inflight requests in percentile buckets. #5845 From 33fcc1d99eb0461610ddc443fc25f974a44e5e46 Mon Sep 17 00:00:00 2001 From: Charles Korn Date: Mon, 9 Oct 2023 00:53:50 +0000 Subject: [PATCH 3/5] Update CHANGELOG.md Co-authored-by: Marco Pracucci --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7ef9cb4739d..c0ea9817ef5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,8 +9,8 @@ * [CHANGE] General: enabled `-log.buffered` by default. The `-log.buffered` has been deprecated and will be removed in Mimir 2.13. #6131 * [CHANGE] Ingester: changed default `-blocks-storage.tsdb.series-hash-cache-max-size-bytes` setting from `1GB` to `350MB`. The new default cache size is enough to store the hashes for all series in a ingester, assuming up to 2M in-memory series per ingester and using the default 13h retention period for local TSDB blocks in the ingesters. #6129 * [CHANGE] Query-frontend: removed `cortex_query_frontend_workers_enqueued_requests_total`. Use `cortex_query_frontend_enqueue_duration_seconds_count` instead. #6121 -* [CHANGE] Ingester / querier: enable ingester to querier chunks streaming by default and mark it as not experimental. #6174 -* [CHANGE] Ingester / querier: enable ingester query request minimisation by default and mark it as not experimental. #6174 +* [CHANGE] Ingester / querier: enable ingester to querier chunks streaming by default and mark it as stable. #6174 +* [CHANGE] Ingester / querier: enable ingester query request minimisation by default and mark it as stable. #6174 * [FEATURE] Query-frontend: add experimental support for query blocking. Queries are blocked on a per-tenant basis and is configured via the limit `blocked_queries`. #5609 * [FEATURE] Vault: Added support for new Vault authentication methods: `AppRole`, `Kubernetes`, `UserPass` and `Token`. #6143 * [ENHANCEMENT] Ingester: exported summary `cortex_ingester_inflight_push_requests_summary` tracking total number of inflight requests in percentile buckets. #5845 From 5582e505154a49b6474233a1836b27b04ca20022 Mon Sep 17 00:00:00 2001 From: Charles Korn Date: Tue, 10 Oct 2023 14:35:23 +1100 Subject: [PATCH 4/5] Mark prefer_streaming_chunks_from_ingesters and minimize_ingester_requests as experimental so we can remove them without deprecation in a later release --- cmd/mimir/config-descriptor.json | 6 ++++-- cmd/mimir/help-all.txt.tmpl | 4 ++-- cmd/mimir/help.txt.tmpl | 4 ---- .../references/configuration-parameters/index.md | 16 ++++++++-------- pkg/querier/querier.go | 4 ++-- 5 files changed, 16 insertions(+), 18 deletions(-) diff --git a/cmd/mimir/config-descriptor.json b/cmd/mimir/config-descriptor.json index 05ca5e9f597..1abf4a29ec7 100644 --- a/cmd/mimir/config-descriptor.json +++ b/cmd/mimir/config-descriptor.json @@ -1724,7 +1724,8 @@ "fieldValue": null, "fieldDefaultValue": true, "fieldFlag": "querier.prefer-streaming-chunks-from-ingesters", - "fieldType": "boolean" + "fieldType": "boolean", + "fieldCategory": "experimental" }, { "kind": "field", @@ -1767,7 +1768,8 @@ "fieldValue": null, "fieldDefaultValue": true, "fieldFlag": "querier.minimize-ingester-requests", - "fieldType": "boolean" + "fieldType": "boolean", + "fieldCategory": "experimental" }, { "kind": "field", diff --git a/cmd/mimir/help-all.txt.tmpl b/cmd/mimir/help-all.txt.tmpl index 71d86f79ba0..fca3d36f79d 100644 --- a/cmd/mimir/help-all.txt.tmpl +++ b/cmd/mimir/help-all.txt.tmpl @@ -1660,11 +1660,11 @@ Usage of ./cmd/mimir/mimir: -querier.max-samples int Maximum number of samples a single query can load into memory. This config option should be set on query-frontend too when query sharding is enabled. (default 50000000) -querier.minimize-ingester-requests - If true, when querying ingesters, only the minimum required ingesters required to reach quorum will be queried initially, with other ingesters queried only if needed due to failures from the initial set of ingesters. Enabling this option reduces resource consumption for the happy path at the cost of increased latency for the unhappy path. (default true) + [experimental] If true, when querying ingesters, only the minimum required ingesters required to reach quorum will be queried initially, with other ingesters queried only if needed due to failures from the initial set of ingesters. Enabling this option reduces resource consumption for the happy path at the cost of increased latency for the unhappy path. (default true) -querier.minimize-ingester-requests-hedging-delay duration Delay before initiating requests to further ingesters when request minimization is enabled and the initially selected set of ingesters have not all responded. Ignored if -querier.minimize-ingester-requests is not enabled. (default 3s) -querier.prefer-streaming-chunks-from-ingesters - Request ingesters stream chunks. Ingesters will only respond with a stream of chunks if the target ingester supports this, and this preference will be ignored by ingesters that do not support this. (default true) + [experimental] Request ingesters stream chunks. Ingesters will only respond with a stream of chunks if the target ingester supports this, and this preference will be ignored by ingesters that do not support this. (default true) -querier.prefer-streaming-chunks-from-store-gateways [experimental] Request store-gateways stream chunks. Store-gateways will only respond with a stream of chunks if the target store-gateway supports this, and this preference will be ignored by store-gateways that do not support this. -querier.query-ingesters-within duration diff --git a/cmd/mimir/help.txt.tmpl b/cmd/mimir/help.txt.tmpl index 365cb011c04..132819ee4be 100644 --- a/cmd/mimir/help.txt.tmpl +++ b/cmd/mimir/help.txt.tmpl @@ -457,10 +457,6 @@ Usage of ./cmd/mimir/mimir: Maximum number of split (by time) or partial (by shard) queries that will be scheduled in parallel by the query-frontend for a single input query. This limit is introduced to have a fairer query scheduling and avoid a single query over a large time range saturating all available queriers. (default 14) -querier.max-samples int Maximum number of samples a single query can load into memory. This config option should be set on query-frontend too when query sharding is enabled. (default 50000000) - -querier.minimize-ingester-requests - If true, when querying ingesters, only the minimum required ingesters required to reach quorum will be queried initially, with other ingesters queried only if needed due to failures from the initial set of ingesters. Enabling this option reduces resource consumption for the happy path at the cost of increased latency for the unhappy path. (default true) - -querier.prefer-streaming-chunks-from-ingesters - Request ingesters stream chunks. Ingesters will only respond with a stream of chunks if the target ingester supports this, and this preference will be ignored by ingesters that do not support this. (default true) -querier.scheduler-address string Address of the query-scheduler component, in host:port format. The host should resolve to all query-scheduler instances. This option should be set only when query-scheduler component is in use and -query-scheduler.service-discovery-mode is set to 'dns'. -querier.timeout duration diff --git a/docs/sources/mimir/references/configuration-parameters/index.md b/docs/sources/mimir/references/configuration-parameters/index.md index 2213e4cad03..b871dedc1bb 100644 --- a/docs/sources/mimir/references/configuration-parameters/index.md +++ b/docs/sources/mimir/references/configuration-parameters/index.md @@ -1213,9 +1213,9 @@ store_gateway_client: # CLI flag: -querier.shuffle-sharding-ingesters-enabled [shuffle_sharding_ingesters_enabled: | default = true] -# Request ingesters stream chunks. Ingesters will only respond with a stream of -# chunks if the target ingester supports this, and this preference will be -# ignored by ingesters that do not support this. +# (experimental) Request ingesters stream chunks. Ingesters will only respond +# with a stream of chunks if the target ingester supports this, and this +# preference will be ignored by ingesters that do not support this. # CLI flag: -querier.prefer-streaming-chunks-from-ingesters [prefer_streaming_chunks_from_ingesters: | default = true] @@ -1235,11 +1235,11 @@ store_gateway_client: # CLI flag: -querier.streaming-chunks-per-store-gateway-buffer-size [streaming_chunks_per_store_gateway_series_buffer_size: | default = 256] -# If true, when querying ingesters, only the minimum required ingesters required -# to reach quorum will be queried initially, with other ingesters queried only -# if needed due to failures from the initial set of ingesters. Enabling this -# option reduces resource consumption for the happy path at the cost of -# increased latency for the unhappy path. +# (experimental) If true, when querying ingesters, only the minimum required +# ingesters required to reach quorum will be queried initially, with other +# ingesters queried only if needed due to failures from the initial set of +# ingesters. Enabling this option reduces resource consumption for the happy +# path at the cost of increased latency for the unhappy path. # CLI flag: -querier.minimize-ingester-requests [minimize_ingester_requests: | default = true] diff --git a/pkg/querier/querier.go b/pkg/querier/querier.go index 49ae1ba68d7..4fd3f40d691 100644 --- a/pkg/querier/querier.go +++ b/pkg/querier/querier.go @@ -52,11 +52,11 @@ type Config struct { ShuffleShardingIngestersEnabled bool `yaml:"shuffle_sharding_ingesters_enabled" category:"advanced"` - PreferStreamingChunksFromIngesters bool `yaml:"prefer_streaming_chunks_from_ingesters"` + PreferStreamingChunksFromIngesters bool `yaml:"prefer_streaming_chunks_from_ingesters" category:"experimental"` // Enabled by default as of Mimir 2.11, remove altogether in 2.12. PreferStreamingChunksFromStoreGateways bool `yaml:"prefer_streaming_chunks_from_store_gateways" category:"experimental"` StreamingChunksPerIngesterSeriesBufferSize uint64 `yaml:"streaming_chunks_per_ingester_series_buffer_size" category:"advanced"` StreamingChunksPerStoreGatewaySeriesBufferSize uint64 `yaml:"streaming_chunks_per_store_gateway_series_buffer_size" category:"experimental"` - MinimizeIngesterRequests bool `yaml:"minimize_ingester_requests"` + MinimizeIngesterRequests bool `yaml:"minimize_ingester_requests" category:"experimental"` // Enabled by default as of Mimir 2.11, remove altogether in 2.12. MinimiseIngesterRequestsHedgingDelay time.Duration `yaml:"minimize_ingester_requests_hedging_delay" category:"advanced"` // PromQL engine config. From c073ada2875ec72857f4d3185faf7407b2916905 Mon Sep 17 00:00:00 2001 From: Charles Korn Date: Wed, 11 Oct 2023 06:09:27 +0000 Subject: [PATCH 5/5] Update about-versioning.md --- docs/sources/mimir/configure/about-versioning.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/sources/mimir/configure/about-versioning.md b/docs/sources/mimir/configure/about-versioning.md index 5c031fec151..7613c0a0020 100644 --- a/docs/sources/mimir/configure/about-versioning.md +++ b/docs/sources/mimir/configure/about-versioning.md @@ -112,7 +112,9 @@ The following features are currently experimental: - `-ingester.client.circuit-breaker.cooldown-period` - Querier - Use of Redis cache backend (`-blocks-storage.bucket-store.metadata-cache.backend=redis`) + - Streaming chunks from ingester to querier (`-querier.prefer-streaming-chunks-from-ingesters`) - Streaming chunks from store-gateway to querier (`-querier.prefer-streaming-chunks-from-store-gateways`, `-querier.streaming-chunks-per-store-gateway-buffer-size`) + - Ingester query request minimisation (`-querier.minimize-ingester-requests`) - Limiting queries based on the estimated number of chunks that will be used (`-querier.max-estimated-fetched-chunks-per-query-multiplier`) - Max concurrency for tenant federated queries (`-tenant-federation.max-concurrent`) - Query-frontend