Fargate中的vCPU真正意味着什么?

时间:2018-08-30 07:00:37

标签: amazon-web-services aws-ecs aws-fargate

我试图获取有关问题QProcess::systemEnvironmenthere的答案,但我知道我需要特别了解vCPU的Fargate实现。所以我的问题是:

  1. 如果我为任务分配了4个vCPU,这意味着我 在此任务中运行在容器上的单线程应用将能够完全使用所有这些vCPU,因为它们实际上只是一个 我可以使用的处理器核心时间的一部分?
  2. 比方说,我为任务分配了4个vCPU,但在技术层面上,我 将4个vCPU分配给可以自由处理一个的物理内核 线程(甚至在超线程中更多)。我的逻辑是否正确 Fargate案?

p.s。这是一个node.js应用程序,它与多个相互交互的播放器运行会话,因此我确实想提供一个具有最大容量的单个 node.js进程。

1 个答案:

答案 0 :(得分:2)

Fargate在后台使用ECS(弹性容器服务)来编排Fargate容器。反过来,ECS依靠EC2提供给主机容器的计算资源。根据AWS Fargate FAQ's

  

Amazon Elastic Container Service(ECS)是一种高度可扩展的高性能容器管理服务,它支持Docker容器,并允许您在Amazon EC2实例的托管集群上轻松运行应用程序   ...

     

ECS使用Fargate提供的容器来自动扩展,负载均衡和管理容器的调度

这意味着vCPU本质上与EC2实例vCPU相同。来自docs

  

Amazon EC2实例支持Intel超线程技术,该技术使多个线程可以在单个Intel Xeon CPU内核上同时运行。除T2实例外,每个vCPU都是Intel Xeon CPU内核的超线程。

所以回答您的问题:

  1. 如果将4个vCPU分配给单个线程应用程序-它只会使用一个vCPU,因为vCPU只是单个内核的超线程。

  2. 当您选择4个vCPU时,实际上是将4个超线程分配给单个物理核心。因此,您的单线程应用程序仍将仅使用单个内核。

如果您想对CPU资源进行更精细的控制-例如分配多个内核(可以由一个线程的应用程序使用)-您可能必须使用EC2启动类型(并管理您自己的服务器),而不是使用Fargate。