AWS ECS EC2上的任务定义CPU预留

问题描述

我正在使用EC2实例在ECS上构建集群。我对在任务定义中指定CPU预留感到好奇。当我将CPU预留保留为空或写0时,AWS如何在EC2实例内部管理任务?

我已经阅读了这篇文章:https://aws.amazon.com/blogs/containers/how-amazon-ecs-manages-cpu-and-memory-resources/

在这里它说:

当您未为容器指定任何CPU单位时,ECS会为cgroup强制实施两个Linux CPU份额(这是允许的最小值)。

我真的不确定这意味着什么,对于Tasks来说有什么不同,因为这是专门针对容器的?

解决方法

Cgroup是Linux内核的一项功能,它允许分发和层次结构在您的主机上运行的服务。

这使您的容器能够彼此独立运行(它们将可以访问一部分可用的CPU),同时还可以提供更高优先级的任务,以便在需要时获得对CPU的访问权限。

CPU份额定义您的容器可以访问的整体CPU数量,当您添加更多容器时,这将成为每个容器之间的分配比例。根据您的情况,每个容器将获得2个容器,如果有4个容器,则每个容器的可用CPU的比例为0.25。

如果您在任务中定义限制,则可以限制主机上可以使用的最大资源,然后将CPU份额按比例分配。但是,这将影响新容器的调度(如果没有足够的资源来执行任务,并且未启用自动缩放功能,则无法调度您选择的任务)。

cgroup上有一些文档here,这是技术性的,因此,如果您对Linux缺乏经验,可能会有些困惑。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...