summaryrefslogtreecommitdiffstats
path: root/docker-api/src
diff options
context:
space:
mode:
authorValerij Fredriksen <valerij92@gmail.com>2019-01-11 20:44:41 +0100
committerValerij Fredriksen <valerij92@gmail.com>2019-01-11 21:20:12 +0100
commit3fb8c960a2121922cd1a4c36de9597e7440d71fd (patch)
treee4b83300fde3860c07a82b96cf860da16d60228b /docker-api/src
parent6d8f6b08da2addc3691d32809dfa4e880636a7d0 (diff)
Code review fixes
Diffstat (limited to 'docker-api/src')
-rw-r--r--docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/ContainerResources.java11
-rw-r--r--docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImpl.java5
-rw-r--r--docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImpl.java5
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) {