View a markdown version of this page

使用 Graviton 实例和容器 - AWS 规范性指导

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Graviton 实例和容器

概述

AWS Graviton 实例由 ARM 处理器提供支持,旨在为在亚马逊弹性计算云 (Amazon EC2) 中运行的云工作负载(包括在其中运行的容器)提供最佳的性价比。 AWS AWS目前,Amazon EC2 上有三代 Graviton 可供使用。本指南重点介绍如何将 Graviton 2 和 3 与 .NET 应用程序配合使用,因为使用 Graviton 的最新版本能够显著节省成本。请记住,Graviton 实例仅运行 Linux 操作系统。因此,Graviton 实例对于在 Linux 上运行的 .NET 应用程序来说是一个非常出色的服务,但对于 Windows 操作系统或遗留的 .NET Framework 应用程序来说则并非可行之选。

Graviton 3 的效率比同类的 EC2 实例高出 60%,性能则提升了最多 40%。本指南重点介绍了使用 Graviton 所带来的成本效益,但需要指出的是,Graviton 还具有提升性能和增强环境可持续性等额外优势。

成本影响

当您切换为使用 Graviton 时,最多可以节省 45% 的成本。在将任何遗留的 .NET Framework 应用程序重构到现代的 .NET 版本之后,您便能够使解锁使用 Graviton 实例的能力。迁移到 Graviton 是一种适用于 .NET 开发者的高效成本优化手段。

下表中的示例展示了通过迁移到 Graviton 实例所能实现的性能改进潜力。

Graviton 性能图

有关上图中用于创建结果的基准测试方法的完整细分和解释,请参阅 Compute 博客中的 “使用 AWS Graviton2 为.NET 5 提供支持:基准”。 AWS

效率提升的原因之一在于 x86 和 Graviton 中的 vCPU 意义存在差异。在 x86 架构中,vCPU 是通过超线程技术实现的一个逻辑内核。在 Graviton 中,vCPU 等同于一个物理内核,这使得 vCPU 能够完全投入到工作负载中。

使用 Graviton2 的结果是,其性价比比同类的 x86/x64 实例高出 40%。Graviton3 相较于 Graviton2 具有以下优势:

  • 性能得到提升,提高达 25% 以上

  • 最高比浮点性能提高两倍

  • 最高比加密工作负载性能快两倍

  • 最高比机器学习性能提高三倍

此外,Graviton3是云中第一个以内存为特色的实例。 DDR5

下表显示了基于 Graviton 的实例与同等的基于 x86 的实例在成本节省方面的差异。

此表显示 Graviton 节省了 19.20% 的成本。

实例类型 架构 vCPU 内存(GB) 每小时成本(按需)
t4g.xlarge ARM 4 16 0.1344 美元
t3.xlarge x86 4 16 0.1664 美元

此表显示 Graviton 节省了 14.99% 的成本。

实例类型 架构 vCPU 内存(GB) 每小时成本(按需)
c7g.4xlarge ARM 16 32 0.5781 美元
c6i.4xlarge x86 16 32 0.6800 美元

在考虑 Graviton 时,测试您的应用程序的性能表现非常重要。Graviton 不能取代扎实的软件开发流程。您可以通过测试来验证是否充分利用了底层计算资源。

成本优化建议

有几种方法可以利用 Graviton 处理器/实例。本部分将指导您了解从使用 x86 架构的计算机转换到 Graviton(ARM)实例所需的各项更改。

更改 Lambda 中的运行时设置

我们建议您在中切换运行时设置 AWS Lambda。有关更多信息,请参阅 Lambda 文档中的修改运行时环境。由于 .NET 是一种编译语言,因此您必须遵循一套构建流程才能使其正常运行。有关如何执行此操作的示例,请参阅。 NET 在 Graviton 上线 GitHub

容器

对于容器化工作负载,请创建多架构容器映像。您可以通过在 Docker 构建命令中指定多个架构来实现这一点。例如:

docker buildx build -t "myImageName:latest" --platform linux/amd64,linux/arm64 --push .

您也可以使用诸如之类的工具 AWS Cloud Development Kit (AWS CDK) 来帮助编排构建。有关 Docker 的示例,请参阅 Docker 文档中的使用 Docker 桌面为 Arm 和 x86 构建多架构映像

Amazon EC2

要从 x86/x64 迁移到 ARM,请在编译步骤中以 ARM 架构为目标。在 Visual Studio 中,你可以创建一个 ARM64 CPU。有关说明,请参阅 Microsoft 文档中的将项目配置为以 Arm64 和其他平台为目标

如果您使用的是 .NET CLI,那么在 ARM 计算机上运行该版本会生成与 Graviton 兼容的版本。要观看演示,请在 Gr AWS aviton2 上开启 Arm64 的情况下观看 “加速.NET 6 性能”。 YouTube依赖项问题会导致编译时间错误,而这些错误可以逐一进行解决。只要存在适用于任何依赖项的 ARM 库,那么转换过程应该会相对简单顺利。

其他资源