Что на самом деле означают vCPU в Fargate? - PullRequest
0 голосов
/ 30 августа 2018

Я пытался получить ответы на мой вопрос здесь и здесь , но я понял, что мне нужно конкретно знать о реализации Fargate vCPU. Итак, мой вопрос:

  1. Если я выделю 4 виртуальных ЦП для моей задачи, значит ли это, что мой однопоточное приложение, работающее на контейнере в этой задаче, сможет в полной мере использовать все эти виртуальные ЦП, поскольку они по сути являются только часть времени ядра процессора, которую я могу использовать?
  2. Допустим, я назначил 4vCPU для своей задачи, но на техническом уровне я назначил 4vCPU для физического ядра, которое может свободно обрабатывать один нить (или даже больше с гиперпоточностью). Правильна ли моя логика дело Фаргейта?

p.s. Это приложение node.js, которое запускает сеанс с несколькими игроками, взаимодействующими друг с другом, поэтому я хочу предоставить один процесс node.js с максимальной производительностью.

1 Ответ

0 голосов
/ 02 сентября 2018

Fargate использует ECS (Elastic Container Service) в фоновом режиме для организации контейнеров Fargate. ECS, в свою очередь, использует вычислительные ресурсы, предоставляемые EC2 для размещения контейнеров. Согласно AWS Fargate FAQ :

Amazon Elastic Container Service (ECS) - это масштабируемая, высокопроизводительная служба управления контейнерами, которая поддерживает контейнеры Docker и позволяет легко запускать приложения в управляемом кластере экземпляров Amazon EC2. ...

ECS использует контейнеры, предоставленные Fargate, для автоматического масштабирования, балансировки нагрузки и управления расписанием ваших контейнеров

Это означает, что vCPU по существу совпадает с vCPU экземпляра EC2. Из документов :

Экземпляры Amazon EC2 поддерживают технологию Intel Hyper-Threading, которая позволяет одновременно выполнять несколько потоков на одном ядре ЦП Intel Xeon. Каждый виртуальный процессор представляет собой гиперпоток ядра процессора Intel Xeon, за исключением экземпляров T2.

Итак, чтобы ответить на ваши вопросы:

  1. Если вы выделите 4 виртуальных ЦП однопоточному приложению - оно будет использовать только один виртуальный ЦП, поскольку виртуальный ЦП представляет собой просто гиперпоточность одного ядра.

  2. Когда вы выбираете 4 виртуальных ЦП, вы фактически назначаете 4 гиперпотока одному физическому ядру. Таким образом, ваше однопоточное приложение будет по-прежнему использовать только одно ядро.

Если вы хотите более детально контролировать ресурсы ЦП, такие как выделение нескольких ядер (которые могут использоваться однопоточным приложением), вам, вероятно, придется использовать тип запуска EC2 (и управлять своими собственными серверами), а не используйте Fargate.

...