12991: Propagate memory and CPU limits to docker container.
authorTom Clegg <tclegg@veritasgenetics.com>
Mon, 5 Feb 2018 22:00:27 +0000 (17:00 -0500)
committerTom Clegg <tclegg@veritasgenetics.com>
Mon, 5 Feb 2018 22:05:50 +0000 (17:05 -0500)
Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tclegg@veritasgenetics.com>

services/crunch-run/crunchrun.go

index a9f1c25d37fa1714868d371c245dc7aa8d041543..0facb3135b155f1ce75c54d457e35b0e56c9b628 100644 (file)
@@ -952,6 +952,7 @@ func (runner *ContainerRunner) CreateContainer() error {
 
        runner.ContainerConfig.Volumes = runner.Volumes
 
+       maxRAM := int64(runner.Container.RuntimeConstraints.RAM)
        runner.HostConfig = dockercontainer.HostConfig{
                Binds: runner.Binds,
                LogConfig: dockercontainer.LogConfig{
@@ -959,6 +960,10 @@ func (runner *ContainerRunner) CreateContainer() error {
                },
                Resources: dockercontainer.Resources{
                        CgroupParent: runner.setCgroupParent,
+                       NanoCPUs:     int64(runner.Container.RuntimeConstraints.VCPUs) * 1000000000,
+                       Memory:       maxRAM, // RAM
+                       MemorySwap:   maxRAM, // RAM+swap
+                       KernelMemory: maxRAM, // kernel portion
                },
        }