

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Graviton インスタンスとコンテナを使用する
<a name="net-graviton"></a>

## 概要:
<a name="net-graviton-overview"></a>

AWS Graviton インスタンスは、Amazon Elastic Compute Cloud (Amazon EC2) で実行されているコンテナを含め、Amazon Elastic Compute Cloud (Amazon EC2) で実行されているクラウドワークロードに最適な価格パフォーマンスを提供する AWS ように によって設計された ARM プロセッサを搭載しています AWS。現在、Amazon EC2 で使用できる Graviton は 3 世代あります。このガイドでは、.NET アプリケーションでの Graviton 2 および 3 の使用に焦点を当てています。これは、Graviton の最新バージョンを使用すると大幅なコスト削減になるためです。Graviton インスタンスは Linux オペレーティングシステムのみを実行することに注意してください。結果として、Graviton インスタンスは Linux で実行されている .NET の強力なサービスですが、Windows オペレーティングシステムやレガシー .NET Framework アプリケーションのオプションではありません。

Graviton 3 は、同等の EC2 インスタンスよりも 60% 効率的であり、パフォーマンスは最大 40% 向上します。このガイドでは、Graviton を使用するコスト上の利点に焦点を当てていますが、Graviton にはパフォーマンスの向上と環境の持続可能性の向上という追加の利点があることに注意してください。

## コストへの影響
<a name="net-graviton-cost"></a>

Graviton に切り替えると、最大 45% のコスト削減を実現できます。レガシー .NET Framework アプリケーションを最新の .NET バージョンにリファクタリングしたら、Graviton インスタンスを使用する機能をロック解除します。Graviton への移行は、.NET 開発者にとって効果的なコスト最適化手法です。

次の表の例では、Graviton インスタンスに移行することで達成できるパフォーマンス向上の可能性を示しています。



![\[Graviton のパフォーマンスのグラフ\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/optimize-costs-microsoft-workloads/images/graph_graviton_performance.png)


前述の図の結果の作成に使用されるベンチマークアプローチの完全な内訳と説明については、 AWS コンピューティングブログの[「Powering .NET 5 with AWS Graviton2: Benchmarks](https://aws.amazon.com/blogs/compute/powering-net-5-with-aws-graviton2-benchmark-results/)」を参照してください。

効率向上の理由の 1 つは、x86 と Graviton における vCPU の意味の違いです。x86 アーキテクチャでは、vCPU はハイパースレッディングによって達成される論理コアです。Graviton では、vCPU は物理コアに相当し、vCPU をワークロードに完全にコミットできます。

Graviton2 での結果は、同等の x86/x64 インスタンスよりも 40% 優れた価格パフォーマンスを示しています。Graviton2 に対して、Graviton3 は以下を提供します。
+ パフォーマンスプロファイルが強化され、パフォーマンスが 25% 向上
+ 浮動小数点のパフォーマンスが最大 2 倍向上
+ 暗号化ワークロードのパフォーマンスが最大 2 倍高速化
+ 機械学習のパフォーマンスが最大 3 倍向上

さらに、Graviton3 は、DDR5 メモリを搭載したクラウド上の最初のインスタンスです。

次の表は、Graviton ベースのインスタンスと、同等の x86 ベースのインスタンスとのコスト削減の違いを示しています。

この表は、Graviton による 19.20% のコスト削減を示しています。


****  

| インスタンスタイプ | アーキテクチャ | vCPU | メモリ (GB) | 時間単位のコスト (オンデマンド) | 
| --- | --- | --- | --- | --- | 
| t4g.xlarge | ARM | 4 | 16 | 0.1344 USD | 
| t3.xlarge | x86 | 4 | 16 | 0.1664 USD | 

この表は、Graviton による 14.99% のコスト削減を示しています。


****  

| インスタンスタイプ | アーキテクチャ | vCPU | メモリ (GB) | 時間単位のコスト (オンデマンド) | 
| --- | --- | --- | --- | --- | 
| c7g.4xlarge | ARM | 16 | 32 | 0.5781 USD | 
| c6i.4xlarge | x86 | 16 | 32 | 0.6800 USD | 

Graviton を検討するときは、アプリケーションのパフォーマンスプロファイルをテストすることが重要です。Graviton は、強固なソフトウェア開発プラクティスに代わるものではありません。テストを使用して、基盤となるコンピューティングリソースを最大限に活用しているかどうかを確認できます。

## コスト最適化の推奨事項
<a name="net-graviton-rec"></a>

Graviton プロセッサ/インスタンスを利用する方法はいくつかあります。このセクションでは、x86 アーキテクチャマシンの使用から Graviton (ARM) インスタンスへの移行に必要な変更点について説明します。

### Lambda でランタイム設定を変更する
<a name="net-graviton-rec-runtime-lambda"></a>

ランタイム設定を切り替えることをお勧めします AWS Lambda。詳細については、Lambda ドキュメントの「[ランタイム環境の変更](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-modify.html)」を参照してください。.NET はコンパイルされた言語であるため、これを機能させるにはビルドプロセスに従う必要があります。これを行う方法の例については、GitHub の「[.NET on Graviton](https://github.com/aws/aws-graviton-getting-started/blob/main/dotnet.md)」を参照してください。

### コンテナ
<a name="net-graviton-rec-containers"></a>

コンテナ化されたワークロードの場合は、マルチアーキテクチャコンテナイメージを作成します。これを行うには、Docker ビルドコマンドで複数のアーキテクチャを指定します。例えば、次のようになります。

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

などのツールを使用してビルドを AWS Cloud Development Kit (AWS CDK) オーケストレーションすることもできます。 [https://aws.amazon.com/blogs/devops/build-and-deploy-net-web-applications-to-arm-powered-aws-graviton-2-amazon-ecs-clusters-using-aws-cdk/](https://aws.amazon.com/blogs/devops/build-and-deploy-net-web-applications-to-arm-powered-aws-graviton-2-amazon-ecs-clusters-using-aws-cdk/)Docker の例については、Docker ドキュメントの「[Building Multi-Arch Images for Arm and x86 with Docker Desktops](https://www.docker.com/blog/multi-arch-images/)」を参照してください。

### Amazon EC2
<a name="net-graviton-rec-ec2"></a>

x86/x64 から ARM に移行するには、コンパイルステップで ARM アーキテクチャをターゲットにします。Visual Studio では、ARM64 CPU を作成できます。手順については、Microsoft ドキュメントの「[To configure a project to target Arm64 and other platforms](https://learn.microsoft.com/en-us/visualstudio/ide/how-to-configure-projects-to-target-platforms?view=vs-2022)」を参照してください。

.NET CLI を使用している場合、ARM マシンでビルドを実行すると、Graviton 互換ビルドが生成されます。デモを確認するには、YouTube で [Accelerate .NET 6 performance with Arm64 on AWS Graviton2](https://www.youtube.com/watch?v=iMlyZI9NhFw) をご覧ください。依存関係の問題により、コンパイル時エラーが発生しますが、個別に対処できます。依存関係に対して ARM ライブラリが存在する限り、移行は比較的容易であるはずです。

## その他のリソース
<a name="net-graviton-resources"></a>
+ [ARM 用のコンテナを構築し、Amazon ECS の Graviton インスタンスとスポットインスタンスで保存する方法](https://aws.amazon.com/blogs/containers/how-to-build-your-containers-for-arm-and-save-with-graviton-and-spot-instances-on-amazon-ecs/) (AWS ブログ)
+ [AWS LambdaAWS Graviton2 プロセッサを搭載した関数 – 関数をアームで実行し、最大 34% の価格パフォーマンスを向上](https://aws.amazon.com/blogs/aws/aws-lambda-functions-powered-by-aws-graviton2-processor-run-your-functions-on-arm-and-get-up-to-34-better-price-performance/) (AWS ブログ)
+ [Arm-based AWS Graviton2 プロセッサへの AWS Lambda 関数の移行](https://aws.amazon.com/blogs/compute/migrating-aws-lambda-functions-to-arm-based-aws-graviton2-processors/) (AWS ブログ)
+ [を使用して .NET ウェブアプリケーションを構築して ARM 搭載 AWS の Graviton 2 Amazon ECS クラスターにデプロイする AWS CDK](https://aws.amazon.com/blogs/devops/build-and-deploy-net-web-applications-to-arm-powered-aws-graviton-2-amazon-ecs-clusters-using-aws-cdk/) (AWS ブログ)
+ [Graviton Fast Start – ワークロードを Graviton AWS に移動するのに役立つ新しいプログラム](https://aws.amazon.com/blogs/aws/graviton-fast-start-a-new-program-to-help-move-your-workloads-to-aws-graviton/) (AWS ブログ)
+ [AWS Graviton2 を使用した .NET 5 の強化: ベンチマーク](https://aws.amazon.com/blogs/compute/powering-net-5-with-aws-graviton2-benchmark-results/) (AWS ブログ)