daemon: deprecate --oom-score-adjust for the daemon
The `oom-score-adjust` option was added ina894aec8d8
, to prevent the daemon from being OOM-killed before other processes. This option was mostly added as a "convenience", as running the daemon as a systemd unit was not yet common. Having the daemon set its own limits is not best-practice, and something better handled by the process-manager starting the daemon. Commitcf7a5be0f2
fixed this option to allow disabling it, and2b8e68ef06
removed the default score adjust. This patch deprecates the option altogether, recommending users to set these limits through the process manager used, such as the "OOMScoreAdjust" option in systemd units. With this patch: dockerd --oom-score-adjust=-500 --validate Flag --oom-score-adjust has been deprecated, and will be removed in the next release. configuration OK echo '{"oom-score-adjust":-500}' > /etc/docker/daemon.json dockerd INFO[2023-04-12T21:34:51.133389627Z] Starting up INFO[2023-04-12T21:34:51.135607544Z] containerd not running, starting managed containerd WARN[2023-04-12T21:34:51.135629086Z] DEPRECATED: The "oom-score-adjust" config parameter and the dockerd "--oom-score-adjust" option will be removed in the next release. docker info Client: Context: default Debug Mode: false ... DEPRECATED: The "oom-score-adjust" config parameter and the dockerd "--oom-score-adjust" option will be removed in the next release Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
parent
49fa3d82b7
commit
5a922dc162
5 changed files with 12 additions and 4 deletions
|
@ -46,7 +46,8 @@ func installConfigFlags(conf *config.Config, flags *pflag.FlagSet) error {
|
||||||
flags.StringVar(&conf.CgroupParent, "cgroup-parent", "", "Set parent cgroup for all containers")
|
flags.StringVar(&conf.CgroupParent, "cgroup-parent", "", "Set parent cgroup for all containers")
|
||||||
flags.StringVar(&conf.RemappedRoot, "userns-remap", "", "User/Group setting for user namespaces")
|
flags.StringVar(&conf.RemappedRoot, "userns-remap", "", "User/Group setting for user namespaces")
|
||||||
flags.BoolVar(&conf.LiveRestoreEnabled, "live-restore", false, "Enable live restore of docker when containers are still running")
|
flags.BoolVar(&conf.LiveRestoreEnabled, "live-restore", false, "Enable live restore of docker when containers are still running")
|
||||||
flags.IntVar(&conf.OOMScoreAdjust, "oom-score-adjust", 0, "Set the oom_score_adj for the daemon")
|
flags.IntVar(&conf.OOMScoreAdjust, "oom-score-adjust", 0, "Set the oom_score_adj for the daemon (deprecated)")
|
||||||
|
_ = flags.MarkDeprecated("oom-score-adjust", "and will be removed in the next release.")
|
||||||
flags.BoolVar(&conf.Init, "init", false, "Run an init in the container to forward signals and reap processes")
|
flags.BoolVar(&conf.Init, "init", false, "Run an init in the container to forward signals and reap processes")
|
||||||
flags.StringVar(&conf.InitPath, "init-path", "", "Path to the docker-init binary")
|
flags.StringVar(&conf.InitPath, "init-path", "", "Path to the docker-init binary")
|
||||||
flags.Int64Var(&conf.CPURealtimePeriod, "cpu-rt-period", 0, "Limit the CPU real-time period in microseconds for the parent cgroup for all containers (not supported with cgroups v2)")
|
flags.Int64Var(&conf.CPURealtimePeriod, "cpu-rt-period", 0, "Limit the CPU real-time period in microseconds for the parent cgroup for all containers (not supported with cgroups v2)")
|
||||||
|
|
|
@ -61,9 +61,11 @@ func (cli *DaemonCli) getPlatformContainerdDaemonOpts() ([]supervisor.DaemonOpt,
|
||||||
// TODO(thaJeztah) change this to use /proc/self/oom_score_adj instead,
|
// TODO(thaJeztah) change this to use /proc/self/oom_score_adj instead,
|
||||||
// which would allow us to set the correct score even if dockerd's score
|
// which would allow us to set the correct score even if dockerd's score
|
||||||
// was set through other means (such as systemd or "manually").
|
// was set through other means (such as systemd or "manually").
|
||||||
supervisor.WithOOMScore(cli.Config.OOMScoreAdjust),
|
supervisor.WithOOMScore(cli.Config.OOMScoreAdjust), //nolint:staticcheck // ignore SA1019 (WithOOMScore is deprecated); will be removed in the next release.
|
||||||
|
}
|
||||||
|
if cli.Config.OOMScoreAdjust != 0 {
|
||||||
|
logrus.Warn(`DEPRECATED: The "oom-score-adjust" config parameter and the dockerd "--oom-score-adjust" option will be removed in the next release.`)
|
||||||
}
|
}
|
||||||
|
|
||||||
return opts, nil
|
return opts, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -68,7 +68,7 @@ type Config struct {
|
||||||
Ulimits map[string]*units.Ulimit `json:"default-ulimits,omitempty"`
|
Ulimits map[string]*units.Ulimit `json:"default-ulimits,omitempty"`
|
||||||
CPURealtimePeriod int64 `json:"cpu-rt-period,omitempty"`
|
CPURealtimePeriod int64 `json:"cpu-rt-period,omitempty"`
|
||||||
CPURealtimeRuntime int64 `json:"cpu-rt-runtime,omitempty"`
|
CPURealtimeRuntime int64 `json:"cpu-rt-runtime,omitempty"`
|
||||||
OOMScoreAdjust int `json:"oom-score-adjust,omitempty"`
|
OOMScoreAdjust int `json:"oom-score-adjust,omitempty"` // Deprecated: configure the daemon's oom-score-adjust using a process manager instead.
|
||||||
Init bool `json:"init,omitempty"`
|
Init bool `json:"init,omitempty"`
|
||||||
InitPath string `json:"init-path,omitempty"`
|
InitPath string `json:"init-path,omitempty"`
|
||||||
SeccompProfile string `json:"seccomp-profile,omitempty"`
|
SeccompProfile string `json:"seccomp-profile,omitempty"`
|
||||||
|
|
|
@ -164,6 +164,9 @@ func (daemon *Daemon) fillPlatformInfo(v *types.Info, sysInfo *sysinfo.SysInfo)
|
||||||
if !v.BridgeNfIP6tables {
|
if !v.BridgeNfIP6tables {
|
||||||
v.Warnings = append(v.Warnings, "WARNING: bridge-nf-call-ip6tables is disabled")
|
v.Warnings = append(v.Warnings, "WARNING: bridge-nf-call-ip6tables is disabled")
|
||||||
}
|
}
|
||||||
|
if daemon.configStore.OOMScoreAdjust != 0 {
|
||||||
|
v.Warnings = append(v.Warnings, `DEPRECATED: The "oom-score-adjust" config parameter and the dockerd "--oom-score-adjust" option will be removed in the next release`)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (daemon *Daemon) fillPlatformVersion(v *types.Version) {
|
func (daemon *Daemon) fillPlatformVersion(v *types.Version) {
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package supervisor // import "github.com/docker/docker/libcontainerd/supervisor"
|
package supervisor // import "github.com/docker/docker/libcontainerd/supervisor"
|
||||||
|
|
||||||
// WithOOMScore defines the oom_score_adj to set for the containerd process.
|
// WithOOMScore defines the oom_score_adj to set for the containerd process.
|
||||||
|
//
|
||||||
|
// Deprecated: setting the oom-score-adjust from the daemon itself is deprecated, and should be handled by the process-manager starting the daemon instead.
|
||||||
func WithOOMScore(score int) DaemonOpt {
|
func WithOOMScore(score int) DaemonOpt {
|
||||||
return func(r *remote) error {
|
return func(r *remote) error {
|
||||||
r.oomScore = score
|
r.oomScore = score
|
||||||
|
|
Loading…
Reference in a new issue