diff --git a/daemon/daemon_unix.go b/daemon/daemon_unix.go index 6a13c3ff3d..561543d3fe 100644 --- a/daemon/daemon_unix.go +++ b/daemon/daemon_unix.go @@ -166,12 +166,12 @@ func verifyPlatformContainerSettings(daemon *Daemon, hostConfig *runconfig.HostC return warnings, fmt.Errorf("Invalid value: %v, valid memory swappiness range is 0-100.", swappiness) } } - if hostConfig.CPUPeriod > 0 && !daemon.SystemConfig().CpuCfsPeriod { + if hostConfig.CPUPeriod > 0 && !daemon.SystemConfig().CPUCfsPeriod { warnings = append(warnings, "Your kernel does not support CPU cfs period. Period discarded.") logrus.Warnf("Your kernel does not support CPU cfs period. Period discarded.") hostConfig.CPUPeriod = 0 } - if hostConfig.CPUQuota > 0 && !daemon.SystemConfig().CpuCfsQuota { + if hostConfig.CPUQuota > 0 && !daemon.SystemConfig().CPUCfsQuota { warnings = append(warnings, "Your kernel does not support CPU cfs quota. Quota discarded.") logrus.Warnf("Your kernel does not support CPU cfs quota. Quota discarded.") hostConfig.CPUQuota = 0 diff --git a/daemon/info.go b/daemon/info.go index 387c399520..6b0a4b23ff 100644 --- a/daemon/info.go +++ b/daemon/info.go @@ -64,7 +64,7 @@ func (daemon *Daemon) SystemInfo() (*types.Info, error) { DriverStatus: daemon.GraphDriver().Status(), IPv4Forwarding: !daemon.SystemConfig().IPv4ForwardingDisabled, BridgeNfIptables: !daemon.SystemConfig().BridgeNfCallIptablesDisabled, - BridgeNfIp6tables: !daemon.SystemConfig().BridgeNfCallIp6tablesDisabled, + BridgeNfIp6tables: !daemon.SystemConfig().BridgeNfCallIP6tablesDisabled, Debug: os.Getenv("DEBUG") != "", NFd: fileutils.GetTotalUsedFds(), NGoroutines: runtime.NumGoroutine(), @@ -93,8 +93,8 @@ func (daemon *Daemon) SystemInfo() (*types.Info, error) { v.MemoryLimit = daemon.SystemConfig().MemoryLimit v.SwapLimit = daemon.SystemConfig().SwapLimit v.OomKillDisable = daemon.SystemConfig().OomKillDisable - v.CpuCfsPeriod = daemon.SystemConfig().CpuCfsPeriod - v.CpuCfsQuota = daemon.SystemConfig().CpuCfsQuota + v.CpuCfsPeriod = daemon.SystemConfig().CPUCfsPeriod + v.CpuCfsQuota = daemon.SystemConfig().CPUCfsQuota } if httpProxy := os.Getenv("http_proxy"); httpProxy != "" { diff --git a/hack/make/validate-lint b/hack/make/validate-lint index 8fc6a331e1..1036356beb 100644 --- a/hack/make/validate-lint +++ b/hack/make/validate-lint @@ -65,6 +65,7 @@ packages=( pkg/streamformatter pkg/stringid pkg/stringutils + pkg/sysinfo pkg/systemd pkg/symlink pkg/tailfile diff --git a/pkg/sysinfo/sysinfo.go b/pkg/sysinfo/sysinfo.go index 8f905aa089..93bd37f1a3 100644 --- a/pkg/sysinfo/sysinfo.go +++ b/pkg/sysinfo/sysinfo.go @@ -3,23 +3,43 @@ package sysinfo // SysInfo stores information about which features a kernel supports. // TODO Windows: Factor out platform specific capabilities. type SysInfo struct { + // Whether the kernel supports AppArmor or not AppArmor bool + *cgroupMemInfo - *cgroupCpuInfo - IPv4ForwardingDisabled bool - BridgeNfCallIptablesDisabled bool - BridgeNfCallIp6tablesDisabled bool - CgroupDevicesEnabled bool + *cgroupCPUInfo + + // Whether IPv4 forwarding is supported or not, if this was disabled, networking will not work + IPv4ForwardingDisabled bool + + // Whether bridge-nf-call-iptables is supported or not + BridgeNfCallIptablesDisabled bool + + // Whether bridge-nf-call-ip6tables is supported or not + BridgeNfCallIP6tablesDisabled bool + + // Whether the cgroup has the mountpoint of "devices" or not + CgroupDevicesEnabled bool } type cgroupMemInfo struct { - MemoryLimit bool - SwapLimit bool - OomKillDisable bool + // Whether memory limit is supported or not + MemoryLimit bool + + // Whether swap limit is supported or not + SwapLimit bool + + // Whether OOM killer disalbe is supported or not + OomKillDisable bool + + // Whether memory swappiness is supported or not MemorySwappiness bool } -type cgroupCpuInfo struct { - CpuCfsPeriod bool - CpuCfsQuota bool +type cgroupCPUInfo struct { + // Whether CPU CFS(Completely Fair Scheduler) period is supported or not + CPUCfsPeriod bool + + // Whether CPU CFS(Completely Fair Scheduler) quota is supported or not + CPUCfsQuota bool } diff --git a/pkg/sysinfo/sysinfo_freebsd.go b/pkg/sysinfo/sysinfo_freebsd.go index 25896f9935..22ae0d95a9 100644 --- a/pkg/sysinfo/sysinfo_freebsd.go +++ b/pkg/sysinfo/sysinfo_freebsd.go @@ -1,6 +1,6 @@ package sysinfo -// TODO FreeBSD +// New returns an empty SysInfo for freebsd for now. func New(quiet bool) *SysInfo { sysInfo := &SysInfo{} return sysInfo diff --git a/pkg/sysinfo/sysinfo_linux.go b/pkg/sysinfo/sysinfo_linux.go index f864dcddab..9498654d69 100644 --- a/pkg/sysinfo/sysinfo_linux.go +++ b/pkg/sysinfo/sysinfo_linux.go @@ -14,14 +14,14 @@ import ( func New(quiet bool) *SysInfo { sysInfo := &SysInfo{} sysInfo.cgroupMemInfo = checkCgroupMem(quiet) - sysInfo.cgroupCpuInfo = checkCgroupCpu(quiet) + sysInfo.cgroupCPUInfo = checkCgroupCPU(quiet) _, err := cgroups.FindCgroupMountpoint("devices") sysInfo.CgroupDevicesEnabled = err == nil sysInfo.IPv4ForwardingDisabled = !readProcBool("/proc/sys/net/ipv4/ip_forward") sysInfo.BridgeNfCallIptablesDisabled = !readProcBool("/proc/sys/net/bridge/bridge-nf-call-iptables") - sysInfo.BridgeNfCallIp6tablesDisabled = !readProcBool("/proc/sys/net/bridge/bridge-nf-call-ip6tables") + sysInfo.BridgeNfCallIP6tablesDisabled = !readProcBool("/proc/sys/net/bridge/bridge-nf-call-ip6tables") // Check if AppArmor is supported. if _, err := os.Stat("/sys/kernel/security/apparmor"); !os.IsNotExist(err) { @@ -58,8 +58,8 @@ func checkCgroupMem(quiet bool) *cgroupMemInfo { return info } -func checkCgroupCpu(quiet bool) *cgroupCpuInfo { - info := &cgroupCpuInfo{} +func checkCgroupCPU(quiet bool) *cgroupCPUInfo { + info := &cgroupCPUInfo{} mountPoint, err := cgroups.FindCgroupMountpoint("cpu") if err != nil { if !quiet { @@ -68,13 +68,13 @@ func checkCgroupCpu(quiet bool) *cgroupCpuInfo { return info } - info.CpuCfsPeriod = cgroupEnabled(mountPoint, "cpu.cfs_period_us") - if !quiet && !info.CpuCfsPeriod { + info.CPUCfsPeriod = cgroupEnabled(mountPoint, "cpu.cfs_period_us") + if !quiet && !info.CPUCfsPeriod { logrus.Warn("Your kernel does not support cgroup cfs period") } - info.CpuCfsQuota = cgroupEnabled(mountPoint, "cpu.cfs_quota_us") - if !quiet && !info.CpuCfsQuota { + info.CPUCfsQuota = cgroupEnabled(mountPoint, "cpu.cfs_quota_us") + if !quiet && !info.CPUCfsQuota { logrus.Warn("Your kernel does not support cgroup cfs quotas") } return info diff --git a/pkg/sysinfo/sysinfo_windows.go b/pkg/sysinfo/sysinfo_windows.go index b4d31519f8..8889318c39 100644 --- a/pkg/sysinfo/sysinfo_windows.go +++ b/pkg/sysinfo/sysinfo_windows.go @@ -1,6 +1,6 @@ package sysinfo -// TODO Windows +// New returns an empty SysInfo for windows for now. func New(quiet bool) *SysInfo { sysInfo := &SysInfo{} return sysInfo