Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Add automatic memory limit handling #6059

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Changes from 1 commit
Commits
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
Prev Previous commit
Next Next commit
support in operator
Signed-off-by: dongjiang <[email protected]>
dongjiang1989 committed Jan 16, 2025
commit 9687f94e9372a030b3b98984f2dce3aee1777c61
3 changes: 3 additions & 0 deletions operator/cmd/operator/app/operator.go
Original file line number Diff line number Diff line change
@@ -39,6 +39,7 @@ import (
ctrlctx "github.com/karmada-io/karmada/operator/pkg/controller/context"
"github.com/karmada-io/karmada/operator/pkg/controller/karmada"
"github.com/karmada-io/karmada/operator/pkg/scheme"
"github.com/karmada-io/karmada/pkg/goruntime"
"github.com/karmada-io/karmada/pkg/sharedcli"
"github.com/karmada-io/karmada/pkg/sharedcli/klogflag"
"github.com/karmada-io/karmada/pkg/version"
@@ -99,6 +100,8 @@ func Run(ctx context.Context, o *options.Options) error {
klog.Infof("karmada-operator version: %s", version.Get())
klog.InfoS("Golang settings", "GOGC", os.Getenv("GOGC"), "GOMAXPROCS", os.Getenv("GOMAXPROCS"), "GOTRACEBACK", os.Getenv("GOTRACEBACK"))

goruntime.SetMemLimit(o.MemlimitRatio)

manager, err := createControllerManager(ctx, o)
if err != nil {
klog.Errorf("Failed to build controller manager: %v", err)
7 changes: 7 additions & 0 deletions operator/cmd/operator/app/options/options.go
Original file line number Diff line number Diff line change
@@ -57,6 +57,10 @@ type Options struct {
HealthProbeBindAddress string
// ConcurrentKarmadaSyncs is the number of karmada objects that are allowed to sync concurrently.
ConcurrentKarmadaSyncs int

// The ratio of reserved GOMEMLIMIT memory to the detected maximum container or system memory.
// Defaults to 0.9.
MemlimitRatio float64
}

// NewOptions creates a new Options with a default config.
@@ -75,6 +79,7 @@ func NewOptions() *Options {
KubeAPIQPS: 50,
KubeAPIBurst: 100,
ConcurrentKarmadaSyncs: 5,
MemlimitRatio: 0.9,
}
return &o
}
@@ -91,6 +96,8 @@ func (o *Options) AddFlags(fs *pflag.FlagSet, allControllers []string, disabledB
"named 'foo', '-foo' disables the controller named 'foo'.\nAll controllers: %s .\nDisabled-by-default controllers: %s .",
strings.Join(allControllers, ", "), strings.Join(disabledByDefaultControllers, ", ")))
fs.IntVar(&o.ConcurrentKarmadaSyncs, "concurrent-karmada-syncs", o.ConcurrentKarmadaSyncs, "The number of karmada objects that are allowed to sync concurrently.")
fs.Float64Var(&o.MemlimitRatio, "auto-gomemlimit-ratio", 0.9, "The ratio of reserved GOMEMLIMIT memory to the detected maximum container or system memory. The value must be greater than 0 and less than or equal to 1.")

options.BindLeaderElectionFlags(&o.LeaderElection, fs)
}


Unchanged files with check annotations Beta

profileflag.ListenAndServe(o.ProfileOpts)
goruntime.SetMemLimit(o.MemlimitRatio)

Check failure on line 117 in cmd/karmada-search/app/karmada-search.go

GitHub Actions / Test on Kubernetes (v1.30.0)

undefined: goruntime

Check failure on line 117 in cmd/karmada-search/app/karmada-search.go

GitHub Actions / init with config file (v1.31.0)

undefined: goruntime

Check failure on line 117 in cmd/karmada-search/app/karmada-search.go

GitHub Actions / Test on Kubernetes (v1.31.0)

undefined: goruntime

Check failure on line 117 in cmd/karmada-search/app/karmada-search.go

GitHub Actions / Test on Kubernetes (v1.29.0)

undefined: goruntime

Check failure on line 117 in cmd/karmada-search/app/karmada-search.go

GitHub Actions / init with config file (v1.30.0)

undefined: goruntime

Check failure on line 117 in cmd/karmada-search/app/karmada-search.go

GitHub Actions / init with config file (v1.29.0)

undefined: goruntime

Check failure on line 117 in cmd/karmada-search/app/karmada-search.go

GitHub Actions / Test on Kubernetes (v1.31.0)

undefined: goruntime

Check failure on line 117 in cmd/karmada-search/app/karmada-search.go

GitHub Actions / Test on Kubernetes (v1.30.0)

undefined: goruntime

Check failure on line 117 in cmd/karmada-search/app/karmada-search.go

GitHub Actions / Test on Kubernetes (v1.29.0)

undefined: goruntime

Check failure on line 117 in cmd/karmada-search/app/karmada-search.go

GitHub Actions / Test on Kubernetes (v1.31.0)

undefined: goruntime

Check failure on line 117 in cmd/karmada-search/app/karmada-search.go

GitHub Actions / Test on Kubernetes (v1.30.0)

undefined: goruntime

Check failure on line 117 in cmd/karmada-search/app/karmada-search.go

GitHub Actions / Test on Kubernetes (v1.29.0)

undefined: goruntime

Check failure on line 117 in cmd/karmada-search/app/karmada-search.go

GitHub Actions / compile

undefined: goruntime

Check failure on line 117 in cmd/karmada-search/app/karmada-search.go

GitHub Actions / lint

undefined: goruntime (typecheck)

Check failure on line 117 in cmd/karmada-search/app/karmada-search.go

GitHub Actions / lint

undefined: goruntime) (typecheck)

Check failure on line 117 in cmd/karmada-search/app/karmada-search.go

GitHub Actions / lint

undefined: goruntime) (typecheck)
config, err := config(o, registryOptions...)
if err != nil {
_ "k8s.io/component-base/logs/json/register" // for JSON log format registration
controllerruntime "sigs.k8s.io/controller-runtime"
"github.com/karmada-io/karmada/cmd/karmada-search/app"

Check failure on line 26 in cmd/karmada-search/main.go

GitHub Actions / lint

could not import github.com/karmada-io/karmada/cmd/karmada-search/app (-: # github.com/karmada-io/karmada/cmd/karmada-search/app
)
func main() {
aaapp "github.com/karmada-io/karmada/cmd/aggregated-apiserver/app"
cmapp "github.com/karmada-io/karmada/cmd/controller-manager/app"
deschapp "github.com/karmada-io/karmada/cmd/descheduler/app"
searchapp "github.com/karmada-io/karmada/cmd/karmada-search/app"

Check failure on line 31 in hack/tools/gencomponentdocs/gen_component_docs.go

GitHub Actions / lint

could not import github.com/karmada-io/karmada/cmd/karmada-search/app (-: # github.com/karmada-io/karmada/cmd/karmada-search/app
adapterapp "github.com/karmada-io/karmada/cmd/metrics-adapter/app"
estiapp "github.com/karmada-io/karmada/cmd/scheduler-estimator/app"
schapp "github.com/karmada-io/karmada/cmd/scheduler/app"