Vishnu Mohan created MESOS-8342:
-----------------------------------

             Summary: Make the Docker containerizer exhibit the same behavior 
as Mesos/UCR which sets `memory.memsw.limit_in_bytes` to be equal to 
`memory.limit_in_bytes` when `MESOS_CGROUPS_LIMIT_SWAP=true`
                 Key: MESOS-8342
                 URL: https://issues.apache.org/jira/browse/MESOS-8342
             Project: Mesos
          Issue Type: Improvement
          Components: containerization
    Affects Versions: 1.4.1
            Reporter: Vishnu Mohan


Please add support for the functionality afforded by the {{\--memory-swap}} and 
{{\--memory-swappiness}} {{docker run}} options to the Docker Containerizer: 
https://github.com/apache/mesos/blob/1.4.x/src/docker/docker.hpp#L193-L194

ATM the Docker containerizer does not honor {{MESOS_CGROUPS_LIMIT_SWAP=true}}, 
and depending on the OS {{swappiness}} configuration, the Docker Engine will 
(typically) set {{memory.memsw.limit_in_bytes}} to twice the value of 
{{memory.limit_in_bytes}}

This means that all Docker containers can/will swap up to 2x their allocation 
before being OOM-killed by the Docker Engine which can cause a huge performance 
problem.

The only real workaround, for now, is to ensure that all apps that are launched 
by the Docker containerizer (at least those that are launched via Marathon) 
also pass {{\--memory-swap=<memory_allocation>}} and/or pass 
{{\--memory-swappiness=0}}, depending on the version of the Docker Engine, 
({{docker run --help}}), as arbitrary Docker params, assuming the scheduler 
supports it, which is operationally cumbersome.

Ideally, the Docker containerizer would exhibit the same behavior as Mesos/UCR 
which sets {{memory.memsw.limit_in_bytes}} to be equal to 
{{memory.limit_in_bytes}} when {{MESOS_CGROUPS_LIMIT_SWAP=true}}

Ref: 
https://docs.docker.com/engine/admin/resource_constraints/#prevent-a-container-from-using-swap



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to