diff options
author | Valerij Fredriksen <valerij92@gmail.com> | 2019-01-11 20:44:41 +0100 |
---|---|---|
committer | Valerij Fredriksen <valerij92@gmail.com> | 2019-01-11 21:20:12 +0100 |
commit | 3fb8c960a2121922cd1a4c36de9597e7440d71fd (patch) | |
tree | e4b83300fde3860c07a82b96cf860da16d60228b /docker-api/src | |
parent | 6d8f6b08da2addc3691d32809dfa4e880636a7d0 (diff) |
Code review fixes
Diffstat (limited to 'docker-api/src')
3 files changed, 14 insertions, 7 deletions
diff --git a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/ContainerResources.java b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/ContainerResources.java index 1a643eafacf..58347a1e8fd 100644 --- a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/ContainerResources.java +++ b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/ContainerResources.java @@ -8,6 +8,7 @@ import java.util.Objects; */ public class ContainerResources { public static final ContainerResources UNLIMITED = ContainerResources.from(0, 0, 0); + private static final int CPU_PERIOD = 100_000; // 100 µs private final double cpus; private final int cpuShares; @@ -37,6 +38,14 @@ public class ContainerResources { return cpus; } + public int cpuQuota() { + return (int) cpus * CPU_PERIOD; + } + + public int cpuPeriod() { + return CPU_PERIOD; + } + public int cpuShares() { return cpuShares; } @@ -50,7 +59,7 @@ public class ContainerResources { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; ContainerResources that = (ContainerResources) o; - return Double.compare(that.cpus, cpus) == 0 && + return Math.abs(that.cpus - cpus) < 0.0001 && cpuShares == that.cpuShares && memoryBytes == that.memoryBytes; } diff --git a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImpl.java b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImpl.java index 36b71b66158..febd3ba4d98 100644 --- a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImpl.java +++ b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImpl.java @@ -26,7 +26,6 @@ import java.util.stream.Collectors; import java.util.stream.IntStream; import java.util.stream.Stream; -import static com.yahoo.vespa.hosted.dockerapi.DockerImpl.CPU_PERIOD; import static com.yahoo.vespa.hosted.dockerapi.DockerImpl.LABEL_NAME_MANAGEDBY; class CreateContainerCommandImpl implements Docker.CreateContainerCommand { @@ -163,8 +162,8 @@ class CreateContainerCommandImpl implements Docker.CreateContainerCommand { containerResources.ifPresent(cr -> hostConfig .withCpuShares(cr.cpuShares()) .withMemory(cr.memoryBytes()) - .withCpuPeriod(cr.cpus() > 0 ? CPU_PERIOD : null) - .withCpuQuota(cr.cpus() > 0 ? (int) (CPU_PERIOD * cr.cpus()) : null)); + .withCpuPeriod(cr.cpuQuota() > 0 ? cr.cpuPeriod() : null) + .withCpuQuota(cr.cpuQuota() > 0 ? cr.cpuQuota() : null)); final CreateContainerCmd containerCmd = docker .createContainerCmd(dockerImage.asString()) diff --git a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImpl.java b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImpl.java index 52824f6050c..5405e283b47 100644 --- a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImpl.java +++ b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImpl.java @@ -48,7 +48,6 @@ public class DockerImpl implements Docker { private static final Logger logger = Logger.getLogger(DockerImpl.class.getName()); static final String LABEL_NAME_MANAGEDBY = "com.yahoo.vespa.managedby"; - static final int CPU_PERIOD = 100_000; // 100 µs private static final String FRAMEWORK_CONTAINER_PREFIX = "/"; private static final Duration WAIT_BEFORE_KILLING = Duration.ofSeconds(10); @@ -246,8 +245,8 @@ public class DockerImpl implements Docker { // See: https://docs.docker.com/config/containers/resource_constraints/#configure-the-default-cfs-scheduler // --cpus requires API 1.25+ on create and 1.29+ on update // NanoCPUs is supported in docker-java as of 3.1.0 on create and not at all on update - .withCpuPeriod(resources.cpus() > 0 ? CPU_PERIOD : null) - .withCpuQuota(resources.cpus() > 0 ? (int) (CPU_PERIOD * resources.cpus()) : null); + .withCpuPeriod(resources.cpuQuota() > 0 ? resources.cpuPeriod() : null) + .withCpuQuota(resources.cpuQuota() > 0 ? resources.cpuQuota() : null); updateContainerCmd.exec(); } catch (NotFoundException e) { |