mirror of
https://github.com/prometheus/prometheus
synced 2024-12-28 01:32:19 +00:00
Add dependency on go.uber.org/automaxprocs (#10498)
* add dependency on go.uber.org/automaxprocs Signed-off-by: Tomas Kohout <tomas.kohout1995@gmail.com> Co-authored-by: Peter Bourgon <peterbourgon@users.noreply.github.com> Co-authored-by: Julien Pivotto <roidelapluie@gmail.com>
This commit is contained in:
parent
98039cddfa
commit
c0fd228bad
@ -47,6 +47,7 @@ import (
|
||||
toolkit_web "github.com/prometheus/exporter-toolkit/web"
|
||||
toolkit_webflag "github.com/prometheus/exporter-toolkit/web/kingpinflag"
|
||||
"go.uber.org/atomic"
|
||||
"go.uber.org/automaxprocs/maxprocs"
|
||||
kingpin "gopkg.in/alecthomas/kingpin.v2"
|
||||
klog "k8s.io/klog"
|
||||
klogv2 "k8s.io/klog/v2"
|
||||
@ -149,6 +150,7 @@ type flagConfig struct {
|
||||
enableExpandExternalLabels bool
|
||||
enableNewSDManager bool
|
||||
enablePerStepStats bool
|
||||
enableAutoGOMAXPROCS bool
|
||||
|
||||
prometheusURL string
|
||||
corsRegexString string
|
||||
@ -186,6 +188,9 @@ func (c *flagConfig) setFeatureListOptions(logger log.Logger) error {
|
||||
case "promql-per-step-stats":
|
||||
c.enablePerStepStats = true
|
||||
level.Info(logger).Log("msg", "Experimental per-step statistics reporting")
|
||||
case "auto-gomaxprocs":
|
||||
c.enableAutoGOMAXPROCS = true
|
||||
level.Info(logger).Log("msg", "Automatically set GOMAXPROCS to match Linux container CPU quota")
|
||||
case "":
|
||||
continue
|
||||
case "promql-at-modifier", "promql-negative-offset":
|
||||
@ -382,7 +387,7 @@ func main() {
|
||||
serverOnlyFlag(a, "query.max-samples", "Maximum number of samples a single query can load into memory. Note that queries will fail if they try to load more samples than this into memory, so this also limits the number of samples a query can return.").
|
||||
Default("50000000").IntVar(&cfg.queryMaxSamples)
|
||||
|
||||
a.Flag("enable-feature", "Comma separated feature names to enable. Valid options: agent, exemplar-storage, expand-external-labels, memory-snapshot-on-shutdown, promql-at-modifier, promql-negative-offset, promql-per-step-stats, remote-write-receiver (DEPRECATED), extra-scrape-metrics, new-service-discovery-manager. See https://prometheus.io/docs/prometheus/latest/feature_flags/ for more details.").
|
||||
a.Flag("enable-feature", "Comma separated feature names to enable. Valid options: agent, exemplar-storage, expand-external-labels, memory-snapshot-on-shutdown, promql-at-modifier, promql-negative-offset, promql-per-step-stats, remote-write-receiver (DEPRECATED), extra-scrape-metrics, new-service-discovery-manager, auto-gomaxprocs. See https://prometheus.io/docs/prometheus/latest/feature_flags/ for more details.").
|
||||
Default("").StringsVar(&cfg.featureList)
|
||||
|
||||
promlogflag.AddFlags(a, &cfg.promlogConfig)
|
||||
@ -564,6 +569,12 @@ func main() {
|
||||
ruleManager *rules.Manager
|
||||
)
|
||||
|
||||
if cfg.enableAutoGOMAXPROCS {
|
||||
if _, err := maxprocs.Set(); err != nil {
|
||||
level.Warn(logger).Log("msg", "Failed to set GOMAXPROCS automatically", "err", err)
|
||||
}
|
||||
}
|
||||
|
||||
if !agentMode {
|
||||
opts := promql.EngineOpts{
|
||||
Logger: log.With(logger, "component", "query engine"),
|
||||
|
@ -88,3 +88,12 @@ statistics. Currently this is limited to totalQueryableSamples.
|
||||
|
||||
When disabled in either the engine or the query, per-step statistics are not
|
||||
computed at all.
|
||||
|
||||
## Auto GOMAXPROCS
|
||||
|
||||
`--enable-feature=auto-gomaxprocs`
|
||||
|
||||
When enabled, GOMAXPROCS variable will be automatically set to match the container CPU limit.
|
||||
|
||||
This means that Go runtime will operate as if it had only amount of CPU specified in the container
|
||||
CPU limit and not all CPUs on server where it's running.
|
||||
|
1
go.mod
1
go.mod
@ -65,6 +65,7 @@ require (
|
||||
go.opentelemetry.io/otel/sdk v1.4.1
|
||||
go.opentelemetry.io/otel/trace v1.4.1
|
||||
go.uber.org/atomic v1.9.0
|
||||
go.uber.org/automaxprocs v1.4.0
|
||||
go.uber.org/goleak v1.1.12
|
||||
golang.org/x/net v0.0.0-20220225172249-27dd8689420f
|
||||
golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b
|
||||
|
2
go.sum
2
go.sum
@ -1368,6 +1368,8 @@ go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
|
||||
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
|
||||
go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE=
|
||||
go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
|
||||
go.uber.org/automaxprocs v1.4.0 h1:CpDZl6aOlLhReez+8S3eEotD7Jx0Os++lemPlMULQP0=
|
||||
go.uber.org/automaxprocs v1.4.0/go.mod h1:/mTEdr7LvHhs0v7mjdxDreTz1OG5zdZGqgOnhWiR/+Q=
|
||||
go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
|
||||
go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA=
|
||||
go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
|
||||
|
Loading…
Reference in New Issue
Block a user