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)