我正在尝试优化和整合我们的 AWS 实例。其中一部分涉及标准化(在可能的情况下)我们的实例类,以优化使用预留。
我们有许多使用 m5d 类 EC2 的应用程序,将临时存储用于超快速交换空间。我们还有许多 ECS 集群,它们目前正在使用 r5 类 EC2。
我想知道是否有人知道交换空间对 ECS 集群实例是否有用?如果 docker 能够有效地使用交换空间,那么这可能意味着我们可以使用更便宜的通用“d”实例,而不必使用更大更昂贵的“r5”类实例。
我正在尝试优化和整合我们的 AWS 实例。其中一部分涉及标准化(在可能的情况下)我们的实例类,以优化使用预留。
我们有许多使用 m5d 类 EC2 的应用程序,将临时存储用于超快速交换空间。我们还有许多 ECS 集群,它们目前正在使用 r5 类 EC2。
我想知道是否有人知道交换空间对 ECS 集群实例是否有用?如果 docker 能够有效地使用交换空间,那么这可能意味着我们可以使用更便宜的通用“d”实例,而不必使用更大更昂贵的“r5”类实例。
使用 ECS,您必须为每个任务指定内存预留,ECS 不会让您超额订阅可用内存。即,如果您的实例有 4GB RAM,而您为操作系统带走了一点内存(比如 0.5GB),那么您的任务就剩下 3.5GB。您可以创建 1.5GB 任务和 2GB 任务,但不能创建 2x 2GB 任务。
这意味着交换空间几乎不会在 ECS 节点上使用 - 任务应该适合可用内存。
r5是否比m5d更贵也是值得怀疑的- 这取决于您是否受到 CPU 或 RAM 的限制。截至今天,具有 16GB RAM 的r5.large的成本为 0.126 美元/小时,而具有 16GB RAM 的类似m5d.xlarge的成本为 0.226 美元/小时 - 相当多。使用 M5D,您可以获得 RAM、CPU 和磁盘,因此它比 RAM 优化的 R5 类更昂贵。
如果我是您,我会考虑AWS Saving Plans,它为您提供比预留实例更高的灵活性。您可以选择实例类、大小,甚至可以在 Fargate 中运行您的容器。
希望有帮助:)
交换空间对于 ECS 集群实例很有用或至少可用。您可以在 Amazon ECS 开发人员指南中找到非常好的文档。
基本上有两个任务定义参数可以用来控制交换的使用:
maxSwap
和swappiness
. 即使您默认不提供任何这些参数,ECS 也会使用交换空间。为了避免交换使用,您需要将值设置为0
.