Make cpu validation correct
There was an error in validation logic before, should use period instead of quota, and also add check for negative number here, if not with that, it would had cpu.cfs_period_us: invalid argument which is not good for users. Signed-off-by: Kai Qiang Wu(Kennan) <wkqwu@cn.ibm.com>
This commit is contained in:
parent
0b67f4c895
commit
62cb06a6c1
2 changed files with 20 additions and 1 deletions
|
@ -402,7 +402,7 @@ func verifyContainerResources(resources *containertypes.Resources, sysInfo *sysi
|
|||
logrus.Warnf("Your kernel does not support CPU cfs period. Period discarded.")
|
||||
resources.CPUPeriod = 0
|
||||
}
|
||||
if resources.CPUPeriod > 0 && (resources.CPUPeriod < 1000 || resources.CPUQuota > 1000000) {
|
||||
if resources.CPUPeriod != 0 && (resources.CPUPeriod < 1000 || resources.CPUPeriod > 1000000) {
|
||||
return warnings, fmt.Errorf("CPU cfs period can not be less than 1ms (i.e. 1000) or larger than 1s (i.e. 1000000)")
|
||||
}
|
||||
if resources.CPUQuota > 0 && !sysInfo.CPUCfsQuota {
|
||||
|
|
|
@ -415,10 +415,29 @@ func (s *DockerSuite) TestRunWithCpuPeriod(c *check.C) {
|
|||
out, _ := dockerCmd(c, "run", "--cpu-period", "50000", "--name", "test", "busybox", "cat", file)
|
||||
c.Assert(strings.TrimSpace(out), checker.Equals, "50000")
|
||||
|
||||
out, _ = dockerCmd(c, "run", "--cpu-period", "0", "busybox", "cat", file)
|
||||
c.Assert(strings.TrimSpace(out), checker.Equals, "100000")
|
||||
|
||||
out = inspectField(c, "test", "HostConfig.CpuPeriod")
|
||||
c.Assert(out, checker.Equals, "50000", check.Commentf("setting the CPU CFS period failed"))
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestRunWithInvalidCpuPeriod(c *check.C) {
|
||||
testRequires(c, cpuCfsPeriod)
|
||||
out, _, err := dockerCmdWithError("run", "--cpu-period", "900", "busybox", "true")
|
||||
c.Assert(err, check.NotNil)
|
||||
expected := "CPU cfs period can not be less than 1ms (i.e. 1000) or larger than 1s (i.e. 1000000)"
|
||||
c.Assert(out, checker.Contains, expected)
|
||||
|
||||
out, _, err = dockerCmdWithError("run", "--cpu-period", "2000000", "busybox", "true")
|
||||
c.Assert(err, check.NotNil)
|
||||
c.Assert(out, checker.Contains, expected)
|
||||
|
||||
out, _, err = dockerCmdWithError("run", "--cpu-period", "-3", "busybox", "true")
|
||||
c.Assert(err, check.NotNil)
|
||||
c.Assert(out, checker.Contains, expected)
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestRunWithKernelMemory(c *check.C) {
|
||||
testRequires(c, kernelMemorySupport)
|
||||
|
||||
|
|
Loading…
Reference in a new issue