From 79c2fbc6e7e660eb5acb6f64646e457130d637fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Mierzwa?= Date: Thu, 3 Jun 2021 12:38:57 +0100 Subject: [PATCH] feat(backend): use automaxprocs for GOMAXPROCS --- CHANGELOG.md | 7 +++++++ README.md | 3 +++ cmd/karma/main.go | 5 +++++ go.mod | 1 + go.sum | 2 ++ 5 files changed, 18 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f1512f0e4..d9f70e1d0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [unreleased] + +### Added + +- Use [uber-go/automaxprocs](https://github.com/uber-go/automaxprocs) + to automatically adjust `GOMAXPROCS` to match Linux container CPU quota. + ## v0.86 ### Added diff --git a/README.md b/README.md index 571a6914d..f76e820b7 100644 --- a/README.md +++ b/README.md @@ -262,6 +262,9 @@ Images are built automatically for: - release tags in git - `ghcr.io/prymitive/karma:vX.Y.Z` - main branch commits - `ghcr.io/prymitive/karma:latest` +_NOTE_ karma uses [uber-go/automaxprocs](https://github.com/uber-go/automaxprocs) +to automatically adjust `GOMAXPROCS` to match Linux container CPU quota. + #### Examples To start a release image run: diff --git a/cmd/karma/main.go b/cmd/karma/main.go index 729f5a43d..00bf44839 100644 --- a/cmd/karma/main.go +++ b/cmd/karma/main.go @@ -25,6 +25,7 @@ import ( "github.com/prymitive/karma/internal/transform" "github.com/prymitive/karma/internal/uri" "github.com/prymitive/karma/ui" + "go.uber.org/automaxprocs/maxprocs" "github.com/getsentry/sentry-go" sentryhttp "github.com/getsentry/sentry-go/http" @@ -454,6 +455,10 @@ func serve(errorHandling pflag.ErrorHandling) error { return err } + _, _ = maxprocs.Set(maxprocs.Logger(func(format string, v ...interface{}) { + log.Debug().Msgf(format, v) + })) + if config.Config.History.Enabled { go historyPoller.run(config.Config.History.Workers) } diff --git a/go.mod b/go.mod index a01153b1d..f068c9208 100644 --- a/go.mod +++ b/go.mod @@ -32,6 +32,7 @@ require ( github.com/rs/zerolog v1.22.0 github.com/spf13/pflag v1.0.5 go.mongodb.org/mongo-driver v1.5.2 // indirect + go.uber.org/automaxprocs v1.4.0 golang.org/x/net v0.0.0-20210525063256-abc453219eb5 // indirect golang.org/x/sys v0.0.0-20210531080801-fdfd190a6549 // indirect gopkg.in/go-playground/colors.v1 v1.2.0 diff --git a/go.sum b/go.sum index 03a36daaf..8720be682 100644 --- a/go.sum +++ b/go.sum @@ -641,6 +641,8 @@ go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +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/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA=