From 3887b0a1a094cdda7d9a1fff8f8c8f19e7915210 Mon Sep 17 00:00:00 2001 From: yanxuean Date: Thu, 12 Oct 2017 16:07:57 +0800 Subject: [PATCH] Add a flag to set OOMScore fix #337 Signed-off-by: yanxuean --- cmd/cri-containerd/options/options.go | 4 ++++ pkg/server/service.go | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/cmd/cri-containerd/options/options.go b/cmd/cri-containerd/options/options.go index 6e7b85e56..8c661fe65 100644 --- a/cmd/cri-containerd/options/options.go +++ b/cmd/cri-containerd/options/options.go @@ -82,6 +82,8 @@ type Config struct { StatsCollectPeriod int `toml:"stats_collect_period"` // SystemdCgroup enables systemd cgroup support. SystemdCgroup bool `toml:"systemd_cgroup"` + // OOMScore adjust the cri-containerd's oom score + OOMScore int `toml:"oom_score"` } // CRIContainerdOptions contains cri-containerd command line and toml options. @@ -143,6 +145,8 @@ func (c *CRIContainerdOptions) AddFlags(fs *pflag.FlagSet) { false, "Enables systemd cgroup support. By default not enabled.") fs.BoolVar(&c.PrintDefaultConfig, "default-config", false, "Print default toml config of cri-containerd and quit.") + fs.IntVar(&c.OOMScore, "oom-score", + -999, "Adjust the cri-containerd's oom score.") } // InitFlags must be called after adding all cli options flags are defined and diff --git a/pkg/server/service.go b/pkg/server/service.go index 4c934ebaa..d9689c0dc 100644 --- a/pkg/server/service.go +++ b/pkg/server/service.go @@ -29,6 +29,7 @@ import ( "github.com/containerd/containerd/content" "github.com/containerd/containerd/images" "github.com/containerd/containerd/plugin" + "github.com/containerd/containerd/sys" "github.com/cri-o/ocicni/pkg/ocicni" "github.com/golang/glog" runcapparmor "github.com/opencontainers/runc/libcontainer/apparmor" @@ -121,6 +122,11 @@ func NewCRIContainerdService(config options.Config) (CRIContainerdService, error return nil, fmt.Errorf("failed to load cgroup for cgroup path %v: %v", config.CgroupPath, err) } } + if config.OOMScore != 0 { + if err := sys.SetOOMScore(os.Getpid(), config.OOMScore); err != nil { + return nil, fmt.Errorf("failed to set OOMScore to %v: %v", config.OOMScore, err) + } + } c := &criContainerdService{ config: config,