Browse Source

Fix cfs period calculation

Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
Michael Crosby 8 years ago
parent
commit
aff99136b4
2 changed files with 2 additions and 5 deletions
  1. 1 4
      daemon/daemon_unix.go
  2. 1 1
      integration-cli/docker_cli_run_unix_test.go

+ 1 - 4
daemon/daemon_unix.go

@@ -112,11 +112,8 @@ func getCPUResources(config containertypes.Resources) *specs.CPU {
 	}
 	}
 
 
 	if config.NanoCPUs > 0 {
 	if config.NanoCPUs > 0 {
-		// We set the highest value possible (1s), as is specified in:
 		// https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt
 		// https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt
-		//    	cpu.cfs_period_us=1s
-		// The purpose is to get the highest precision
-		period := uint64(1 * time.Second / time.Microsecond)
+		period := uint64(100 * time.Millisecond / time.Microsecond)
 		quota := uint64(config.NanoCPUs) * period / 1e9
 		quota := uint64(config.NanoCPUs) * period / 1e9
 		cpu.Period = &period
 		cpu.Period = &period
 		cpu.Quota = &quota
 		cpu.Quota = &quota

+ 1 - 1
integration-cli/docker_cli_run_unix_test.go

@@ -1577,7 +1577,7 @@ func (s *DockerSuite) TestRunWithNanoCPUs(c *check.C) {
 	file1 := "/sys/fs/cgroup/cpu/cpu.cfs_quota_us"
 	file1 := "/sys/fs/cgroup/cpu/cpu.cfs_quota_us"
 	file2 := "/sys/fs/cgroup/cpu/cpu.cfs_period_us"
 	file2 := "/sys/fs/cgroup/cpu/cpu.cfs_period_us"
 	out, _ := dockerCmd(c, "run", "--cpus", "0.5", "--name", "test", "busybox", "sh", "-c", fmt.Sprintf("cat %s && cat %s", file1, file2))
 	out, _ := dockerCmd(c, "run", "--cpus", "0.5", "--name", "test", "busybox", "sh", "-c", fmt.Sprintf("cat %s && cat %s", file1, file2))
-	c.Assert(strings.TrimSpace(out), checker.Equals, "500000\n1000000")
+	c.Assert(strings.TrimSpace(out), checker.Equals, "50000\n100000")
 
 
 	out = inspectField(c, "test", "HostConfig.NanoCpus")
 	out = inspectField(c, "test", "HostConfig.NanoCpus")
 	c.Assert(out, checker.Equals, "5e+08", check.Commentf("setting the Nano CPUs failed"))
 	c.Assert(out, checker.Equals, "5e+08", check.Commentf("setting the Nano CPUs failed"))