diff --git a/go/controller/cmd/main.go b/go/controller/cmd/main.go index e15fc2690..c6d3f7b4f 100644 --- a/go/controller/cmd/main.go +++ b/go/controller/cmd/main.go @@ -64,6 +64,7 @@ import ( agentv1alpha1 "github.com/kagent-dev/kagent/go/controller/api/v1alpha1" "github.com/kagent-dev/kagent/go/controller/internal/controller" + "github.com/kagent-dev/kagent/go/internal/goruntime" // +kubebuilder:scaffold:imports ) @@ -142,7 +143,11 @@ func main() { opts.BindFlags(flag.CommandLine) flag.Parse() - ctrl.SetLogger(zap.New(zap.UseFlagOptions(&opts))) + logger := zap.New(zap.UseFlagOptions(&opts)) + + ctrl.SetLogger(logger) + + goruntime.SetMaxProcs(logger) setupLog.Info("Starting KAgent Controller", "version", Version, "git_commit", GitCommit, "build_date", BuildDate) diff --git a/go/go.mod b/go/go.mod index 03b91ab8c..bf2e223e6 100644 --- a/go/go.mod +++ b/go/go.mod @@ -17,6 +17,7 @@ require ( github.com/spf13/pflag v1.0.6 github.com/spf13/viper v1.20.1 github.com/stretchr/testify v1.10.0 + go.uber.org/automaxprocs v1.6.0 gorm.io/driver/postgres v1.6.0 gorm.io/gorm v1.30.0 k8s.io/api v0.33.2 diff --git a/go/go.sum b/go/go.sum index ada49288d..8e722a373 100644 --- a/go/go.sum +++ b/go/go.sum @@ -176,6 +176,8 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= +github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= diff --git a/go/internal/goruntime/cpu.go b/go/internal/goruntime/cpu.go new file mode 100644 index 000000000..efbd54489 --- /dev/null +++ b/go/internal/goruntime/cpu.go @@ -0,0 +1,19 @@ +package goruntime + +import ( + "fmt" + "strings" + + "github.com/go-logr/logr" + "go.uber.org/automaxprocs/maxprocs" +) + +func SetMaxProcs(logger logr.Logger) { + l := func(format string, a ...interface{}) { + logger.Info(fmt.Sprintf(strings.TrimPrefix(format, "maxprocs: "), a...)) + } + + if _, err := maxprocs.Set(maxprocs.Logger(l)); err != nil { + logger.Error(err, "Failed to set GOMAXPROCS automatically") + } +}