Я запускаю свое приложение как контейнер докеров как в Docker Swarm UCP (используя файл compose.yml), так и в Mesos (используя файл marathon.json).
Я добавил ограничения ресурсов в оба файла.
compose.yml:
resources:
limits:
cpus: '0.50'
memory: 50M
reservations:
cpus: '0.25'
memory: 20M
marathon.json:
"cpus": 0.50,
"mem": 128.0,
"disk": 5.0
Я обнаружил, что память - это жесткий предел, а процессор - мягкий. то есть лимит процессора предназначен только для веса и приоритета. Если mesos cpu равен 1 и если два приложения работают, одно с 0,4 процессора, а другое с 0,6 процессора, то первое приложение получит 40% циклов процессора, а приложение 2 получит 60% циклов процессора.
Тогда какой здесь лимит и резервирование в файле compose.yml?
Теперь я пытаюсь понять то, что ниже
Как именно работает эта ограниченность ресурсов?
Что произойдет, если контейнер превысит эти значения?


reservations означает, что контейнер не запускается на узле этого узла, у которого недостаточно свободных ресурсов для соблюдения этого ограничения.
limits означает, что когда процесс в контейнере достигает этого предела и пытается выделить больше, он будет принудительно уничтожен.