Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services AWS ECS任务内存硬限制和软限制_Amazon Web Services_Memory_Cluster Computing_Amazon Ecs - Fatal编程技术网

Amazon web services AWS ECS任务内存硬限制和软限制

Amazon web services AWS ECS任务内存硬限制和软限制,amazon-web-services,memory,cluster-computing,amazon-ecs,Amazon Web Services,Memory,Cluster Computing,Amazon Ecs,我对ECS任务定义的硬内存和软内存限制的目的感到困惑 IIRC软限制是调度程序在实例上为运行任务保留的内存量,硬限制是容器在被破坏之前可以使用的内存量 我的问题是,如果ECS调度器根据软限制将任务分配给实例,则可能会出现这样的情况:使用内存高于软限制但低于硬限制的任务可能会导致实例超过其最大内存(假设所有其他任务使用的内存略低于或等于其软限制) 这是正确的吗 谢谢如果您希望运行的计算工作负载主要是内存限制而不是CPU限制,那么您应该只使用硬限制,而不是软限制。从文档中: 必须为容器定义中的一个或

我对ECS任务定义的硬内存和软内存限制的目的感到困惑

IIRC软限制是调度程序在实例上为运行任务保留的内存量,硬限制是容器在被破坏之前可以使用的内存量

我的问题是,如果ECS调度器根据软限制将任务分配给实例,则可能会出现这样的情况:使用内存高于软限制但低于硬限制的任务可能会导致实例超过其最大内存(假设所有其他任务使用的内存略低于或等于其软限制)

这是正确的吗


谢谢

如果您希望运行的计算工作负载主要是内存限制而不是CPU限制,那么您应该只使用硬限制,而不是软限制。从文档中:

必须为容器定义中的一个或两个memory或memoryReservation指定非零整数。如果同时指定这两个选项,则内存必须大于memoryReservation。如果指定memoryReservation,则该值将从放置容器的容器实例的可用内存资源中减去;否则,将使用内存的值

通过仅为任务指定硬内存限制,可以避免内存不足,因为ECS停止在实例上放置任务,docker会杀死任何试图超过硬内存限制的容器

软内存限制功能是为CPU限制的应用程序而设计的,在这些应用程序中,您希望保留少量的最小内存(软限制),但允许偶尔爆发到硬限制。在这种CPU繁重的工作负载中,您实际上并不太关心容器的特定内存使用值,因为容器在耗尽实例内存之前很长时间就会耗尽CPU,因此您可以根据CPU保留和软内存限制来放置任务。在这种设置中,硬限制只是一种故障保护,以防出现失控或内存泄漏


总之,您应该使用负载测试来评估您的工作负载,看看它是先耗尽CPU还是先耗尽内存。如果您受CPU限制,则可以将软内存限制与可选的硬限制一起使用,就像故障保护一样。如果内存受限,则只需使用硬限制而不需要软限制。

我不同意内存受限任务不需要软限制的说法。合理的软限制有助于ECS首先将not放置在内存不足的实例上。@iGEL任务放置同时考虑了硬限制和软限制