Определение задач Amazon ECS - ЦП и память - настроить контейнер на использование 100% доступных ресурсов EC2
Мне бы хотелось, чтобы в кластере ECS работало несколько разных сервисов, каждый из которых должен работать в одном экземпляре EC2. Тип экземпляров EC2 для всех служб одинаков. И я бы хотел, чтобы эти сервисы использовали все имеющиеся у них хостинговые ресурсы EC2.
У меня есть предположение, что если я использую только параметр мягкой памяти (без использования жесткого) в конфигурации задач, это позволит моему экземпляру контейнера использовать всю доступную память на экземпляре EC2, на котором он размещен, и что я не буду ограничение. Это верно?
Что касается типа EC2 (например, t2.micro [vCPU=1, Memory=1Gib])!! Можно ли просто поставить:
{
...
"memory": 1024,
"cpu": 1024,
...
}
Поскольку EC2 должен быть уже настроен с кучей требований к обслуживанию контейнеров.
1 ответ
Правильно ли, что вы пытаетесь, чтобы каждый экземпляр ECS обрабатывал только одну задачу для каждого экземпляра?
Краткий ответ на ваш вопрос: нет. Обычно объем памяти, доступной вашим контейнерам, немного меньше объема памяти, доступного на самой машине. Это так, что операционная система имеет достаточно памяти для продолжения работы. По моему опыту, T2.Small, имеющий 2048 МБ памяти, в итоге будет иметь 2004 МБ для контейнеров.
Когда дело доходит до определения вашей задачи, есть два способа указания памяти. memory
настройка это жесткий предел. Если использование памяти контейнеров достигнет этой величины, контейнер будет прерван. Если с другой стороны, вы указываете memoryReservation
, то много памяти будет зарезервировано для задачи, но она может использовать больше, вплоть до общего объема машины. Ознакомьтесь с документацией по определению задачи для получения более подробной информации.
Важным моментом здесь является то, что только один из memory
а также memoryReservation
являются обязательными. Если оба используются, memoryReservation
должно быть меньше чем memory
, Если вы собираетесь указать только один из них, я бы порекомендовал memoryReservation
, так как это позволит вашей задаче использовать до общего объема памяти на машине. Если используются оба, memoryReservation
будет использоваться при расчете объема памяти, потребляемой задачей.
При размещении задач в экземпляре он смотрит на объем доступной памяти, то есть зарегистрированный объем памяти для экземпляра, за вычетом любых задач, уже помещенных в него. Если это число меньше объема памяти, необходимого для задачи, никакая задача не будет помещена в нее. Если ни у одного экземпляра недостаточно памяти для выполнения задачи, она не будет размещена, и ошибка будет зарегистрирована в Службах. Events
журнал.
Поэтому важно посмотреть на объем памяти, фактически зарегистрированный вашим типом экземпляра, а затем убедиться, что ваш memory
или же memoryReservation
ниже, чем сумма, зарегистрированная вашими инстанциями. В противном случае ваши задачи никогда не будут размещены.
Что касается cpu
это значение не является обязательным, и, если оно не указано, всем задачам в экземпляре разрешена равная часть ЦП, доступная в системе. Если в экземпляре только одна задача, он может использовать весь ЦП экземпляра по умолчанию.