Fargate 在后台使用 ECS(弹性容器服务)来编排 Fargate 容器。ECS 反过来又依赖 EC2 提供的计算资源来托管容器。根据 AWS Fargate常见问题解答:
Amazon Elastic Container Service (ECS) 是一种高度可扩展的高性能容器管理服务,它支持 Docker 容器并允许您在 Amazon EC2 实例的托管集群上轻松运行应用程序...
ECS 使用 Fargate 配置的容器来自动扩展、负载平衡和管理容器的调度
这意味着 vCPU 本质上与 EC2 实例 vCPU 相同。从文档:
Amazon EC2 实例支持 Intel 超线程技术,该技术使多个线程能够在单个 Intel Xeon CPU 内核上同时运行。每个 vCPU 都是 Intel Xeon CPU 内核的超线程,T2 实例除外。
所以回答你的问题:
如果您将 4 个 vCPU 分配给一个单线程应用程序 - 它只会使用一个 vCPU,因为 vCPU 只是一个单核的超线程。
当您选择 4 个 vCPU 时,您实际上是在将 4 个超线程分配给单个物理内核。因此,您的单线程应用程序仍将仅使用单个内核。
如果您想要对 CPU 资源进行更细粒度的控制——例如分配多个内核(可由单线程应用程序使用)——您可能必须使用 EC2 启动类型(并管理您自己的服务器)而不是使用 Fargate。
2021 年编辑:评论中指出,大多数 EC2 实例实际上每个 CPU 核心有 2 个超线程。一些专门的实例,例如 c6g 和 m6g,每个核心有 1 个线程,但大多数 EC2 实例有 2 个线程/核心。因此,ECS/Fargate 使用的实例很可能每个内核也有 2 个线程。有关更多详细信息,请参阅doco