Я пытаюсь оптимизировать и консолидировать наши экземпляры AWS. Частично это включает стандартизацию (где возможно) наших классов экземпляров для оптимального использования резервирований.
У нас есть ряд приложений, использующих EC2 класса m5d, использующих временное хранилище для сверхбыстрого пространства подкачки. У нас также есть несколько кластеров ECS, которые в настоящее время используют EC2 класса r5.
Мне интересно, знает ли кто-нибудь, полезно ли пространство подкачки для экземпляров кластера ECS? Если docker может эффективно использовать пространство подкачки, это может означать, что мы могли бы использовать более дешевые экземпляры «d» общего назначения, вместо того, чтобы использовать более крупные и более дорогие экземпляры класса «r5».
В ECS вы должны указать Резервирование памяти для каждой задачи, и ECS не позволит вам превысить объем доступной памяти. Т.е. если у вашего экземпляра 4 ГБ ОЗУ, и вы отнимаете немного для ОС (скажем, 0,5 ГБ), у вас остается 3,5 ГБ для ваших задач. Вы можете создать задачу 1,5 ГБ и задачу 2 ГБ, но не можете иметь задачи 2x 2 ГБ.
Это означает, что пространство подкачки практически никогда не используется на узлах ECS - задачи должны умещаться в доступной памяти.
Также сомнительно, r5 дороже чем m5d - это зависит от того, ограничены ли вы ЦП или ОЗУ. На сегодняшний день r5. большой с 16 ГБ ОЗУ стоит 0,126 доллара в час, в то время как сопоставимый m5d.xlarge с 16 ГБ оперативной памяти стоит 0,226 доллара в час - немного больше. С M5D вы получаете и ОЗУ, и ЦП, и диск, поэтому он дороже, чем класс R5, оптимизированный для ОЗУ.
На твоем месте я бы посмотрел на Планы экономии AWS которые обеспечивают большую гибкость по сравнению с зарезервированными инстансами. Вы можете выбирать классы экземпляров, размер и даже запускать свои контейнеры в Fargate.
Надеюсь, это поможет :)