aws ecs 理解任务和容器的资源分配

news2024/12/26 3:35:34

参考资料

  • 如何在 Amazon ECS 中为任务分配内存?

  • 关于 Amazon ECS 中的 CPU 分配,我需要了解哪些信息?

  • Amazon ECS CloudWatch 指标

  • 任务定义参数

在ecs中可以指定资源的分配逻辑,其实就是cpu和内存分配。

下面这张图对ecs任务和容器的内存资源分配和受限情况进行了总结

注意,下图并没有指出ecs代理和系统关键组件的预留内存

在这里插入图片描述

  • overused,实例内存为300M,容器123分别预留100M,容器2实际使用30M,则容器3能够超额使用容器2的预留内存
  • limit by contention,存在内存争用,因此容器2被限制在reserved
  • limt by avail,容器2的实例使用被可用内存限制
  • limit by hard,容器2的内存使用被硬限制卡住
  • ample memory,容器2使用内存量介于软硬限制之间

ecs实例的内存管理

实例时容器运行的平台,ecs agent会计算实例上的可用资源数量。ecs实例的具体可用内存数量并不等于总的内存。例如,需要为ecs代理和关键系统进程留存内存,避免争用导致系统故障

通过为ecs代理配置以下变量可以为关键组件预留内存,这部分内存任务无法使用

ECS_RESERVED_MEMORY = 256

任务级别资源

Task size

创建任务定义时可以在任务和容器界别定义资源。任务级别资源定义是任务的硬限制

对于fargate平台,任务级别资源定义是必须的。对于ec2平台的ecs环境,任务级别的资源定义是可选的。如果指定了任务级别,则容器级别是可选的

windows平台不支持任务级别资源定义

The task size allows you to specify a fixed size for your task. Task size is required for tasks using the Fargate launch type and is optional for the EC2 or External launch type. Container level memory settings are optional when task size is set. Task size is not supported for Windows containers.

例如,如果指定了任务级别内存值,则容器级别内存值是可选的。在任务运行时,从 Amazon ECS 容器实例的可用内存单位中减去各个参数的值。根据软限制、硬限制或任务定义的任务级别内存进行计算

cpu的单位基准为unit或vcpu,每个vcpu为1024个unit。内存的单位基准为MB或GB

在任务级别设置 cpu 参数时,还将设置任务中容器允许的最大 CPU 资源量。cpu参数中设置的值将成为实例上任务的cpu资源预留。容器级别的cpu不能超过任务级别

在这里插入图片描述

容器级别资源

Container definitions

在容器级别对cpu资源定义(可压缩资源)

运行时没有cpu资源争用,则

  • 任务级别的cpu指定时,容器有cpu资源上限
  • 任务级别的cpu没有指定时,无论容器级别是否指定,容器都可用实例的所有cpu
  • windows平台只支持容器级别,且容器级别为cpu资源上限

如果存在争用,则容器cpu限制为容器级别cpu值

此外,特殊应用程序(容器感知型)不会受到cpu争用的限制,只使用容器级别的限制

在容器级别可以对内存资源定义(不可压缩资源)

存在两个用于向任务分配内存的参数:memoryReservation(软限制)和 memory(硬限制)。

由于fargate在任务级别定义了资源,因此容器级别是可选的

如果为容器级别的 memorymemoryReservation 分别指定一个值,那么 memory 必须大于 memoryReservation。如果指定 memoryReservation,则将从容器所在容器实例的可用内存资源减去该值。没有 **memoryReservation **则使用 memory 的值

软限制和硬限制的区别

If you specify a hard limit (memory), your container will be killed if it attempts to exceed that limit. If you specify a soft limit (memoryReservation), ECS reserves that amount of memory for your container; however, the container can request up to the hard limit (if specified) or all of the available memory on the container instance, whichever is reached first. If you specify both, the hard limit must be greater than the soft limit.

如果容器超出内存硬限制,则会被oomkill。如果指定内存软限制,则会从实例的可用资源中隔离这部分。容器只会在硬限制和实例的可用资源中获取资源。

memoryreservation(软限制)是系统处于内存资源紧张时,容器能够使用的内存(专门为容器预留出的不会被其他容器争用)

硬限制必须大于等于软限制

在这里插入图片描述

任务中所有容器的内存总量必须小于任务的内容值

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/173036.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

搜索本地文件

李国春 处理大量的数据集时将文件整理到一起也是一个重要的工作。本文介绍一个将本地计算机目标文件的绝对路径汇集到一个文本文件的中的脚本。以方便后续批量处理这些文件。 启动RSD,在脚本编辑窗口输入图1中的代码。点击工具条上的小三角开始运行,提…

计网必会:电子邮件、SMTP协议

文章目录SMTP概念SMTP的操作过程——发送邮件-接收邮件细品:发送邮件与HTTP的对比邮件报文格式和MIME邮件访问协议SMTP概念 SMTP是电子邮件中的主要协议,它能使用TCP可靠数据传输服务,从发送方的服务器向接收方发送邮件, SMTP&am…

第四章必备前端基础知识-第二节1:CSS概述和选择器

文章目录一:CSS概述(1)概述(2)语法规范(3)CSS引入方式二:选择器(1)基础选择器①:标签选择器②:类选择器③:id选择器④&…

MyISAM存储引擎中的索引方案

MyISAM存储引擎中的索引 我们知道 InnoDB存储引擎中索引即数据,也就是聚集索引的那棵B树的叶子节点中已经把所有完整的用户记录都包含了,而MyISAM引擎也使用BTree作为索引结构,但是却 将索引和数据分开存储,其特点如下&#xff1…

ElasticSearch Docker 部署实例

文章目录前言基本环境构建Java安装docker安装es部署安装ES验证安装安装kibana设置密码进入es容器安装Vim修改es容器配置文件设置es访问密码设置Kibana密码理想状态方案二修改挂载安装IK分词器安装ik分词器在线安装离线安装前言 虽然说要停更,但是有些东西还是需要记…

SpringMVC | SSM整合(SpringMVC+Spring+MyBatis)

0️⃣概述👾SSM与三层架构对应关系SpringMVC —— 表示层(controller、view)Spring —— 业务逻辑层(service)MyBatis —— 数据访问层(dao、pojo)👾配置文件spring-config.xml ——…

vue全家桶之vuex详解

文章目录Vuex 概述1.1 组件之间共享数据的方式1.2 Vuex 是什么1.3 使用 Vuex 统一管理状态的好处什么样的数据适合存储到 Vuex 中2. Vuex 的基本使用3. Vuex 的核心概念3.1 核心概念概述3.2 State3.3 Mutation3.4 Action3.5 GetterVuex 概述 1.1 组件之间共享数据的方式 父向…

NET.前端基础

均摘自C语言中文网 网页一般由三部分组成,分别是 HTML(超文本标记语言)、CSS(层叠样式表)和 JavaScript(简称“JS”动态脚本语言),它们三者在网页中分别承担着不同的任务。 HTML …

74. 搜索二维矩阵

74.搜索二维矩阵一、题目描述二、解题思路2.1 二分查找行2.2 二分查找列三、提交结果一、题目描述 二、解题思路 采用两次二分的方式,第一次二分用于找到target在二维矩阵中的行标,第二次二分只需要对找到的行进行二分查找即可。 2.1 二分查找行 初始…

10.3 定制操作

文章目录向算法传递函数谓词排序算法lambda表达式可调用对象介绍lambdafind_if 和 find_each的介绍lambda的捕获和返回值捕获引用捕获隐式捕获可变lambda指定lambda返回的类型函数体参数绑定标准库bind函数占位符_n具体使用bind的参数使用bind重排参数顺序绑定引用参数向算法传…

svg动画图形绘制

先介绍下绘制图形的标签 1:线段:line 2:矩形:rect 3: 圆形:circle 4:多边形:polyline(不会自动连接起点和终点) 5: 多边形:polygon (会自动连接起点和终点) v…

SAP FICO 理解统驭科目记账与特殊记账

统驭科目记账与特殊记账 【背景】 统驭科目通常分为三类:资产(A)、客户(D)和供应商(K),在创建会计科目时可在”控制数据“选项卡下进行选择。 在创建客户/供应商主数据的时候&#…

Vue插槽Slot的使用

1、认识插槽Slot 在开发中,我们会经常封装一个个可复用的组件: 前面我们会通过props传递给组件一些数据,让组件来进行展示;但是为了让这个组件具备更强的通用性,我们不能将组件中的内容限制为固定的div、span等等这些…

【零基础】学python数据结构与算法笔记15-欧几里得、RSA

文章目录前言95.欧几里得算法96.RSA算法介绍97.RSA算法测试98.算法课程总结总结前言 学习python数据结构与算法,学习常用的算法, b站学习链接 95.欧几里得算法 求最大公约数 欧几里得算法:gcd(a,b) gcd(b,a mod b) #mod取余 例&#xff1a…

04.自定义类型:结构体

1 结构体的声明 1.1 结构的基础知识 结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。 1.2 结构的声明 struct tag { member-list;//成员列表 }variable-list;//变量列表 EG: 描述一位学生: struct Stu {char name[…

Comparable+Comparator+Cloneable接口

文章目录ComparableComparatorCloneable浅拷贝深拷贝Comparable 当我们需要对一个自己写的类进行排序(Collections.sort和Arrays.sort)的时候,,就要使用到Comparable接口。 该接口中有一个compareTo方法,该方法其实就是一比较规则。 public interface…

货币银行学

建立大脑知识库 外汇储备不宜太高,2022年是3万亿。 美元贬值,大宗商品会更贵。 大宗商品 [1] (Commodities)是指可进入流通领域,但非零售环节,具有商品属性并用于工农业生产与消费使用的大批量买卖的物质商…

Oracle Id生成算法 —— 雪花算法

背景 近几日,被主键ID生成折磨的不太行,于是就在寻找一种合适的主键生成策略,选择一种合适的主键生成策略,可以大大降低主键ID的维护成本。 主键ID生成方法 最常用的4种主键ID生成方法 UUID:全局唯一性&#xff0c…

【框架】Spring

1、IOC 1、自动化配置 xml文件 注册bean 属性注入:setter,构造方法,p命名空间,外部注入 复杂属性:对象ref,数组array,list,map 依赖注入:ctx.getBean()Java配置类 Conf…

InterruptedException异常解析

Either re-interrupt this method or rethrow the “InterruptedException”. 请重新中断此方法或重新引发“InterruptedException”。 文章目录问题描述问题解析sonar检测提示规则解决方案问题描述 public void run () {try {while (true) {// do stuff}}catch (InterruptedE…