[レポート] Boosting .NET application performance with Arm64 and AWS Graviton3 #reinvent #XNT401

2022.12.08

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

いわさです。

AWS re:Invent 2022 にて Breakout Session の Boosting .NET application performance with Arm64 and AWS Graviton3 XNT401 に参加しました。
セッションレポートをお届けします。

動画も公開されています。

セッション概要

Did you know you can achieve 40 percent or higher price performance for your .NET 6+ applications using Arm64 and AWS Graviton3 processors? This session dives into the details on how to compile ASP.NET Core for Arm64 and deploy to Graviton3. Learn how to automate the deployment process with an Arm64-based CI/CD pipeline and benchmark a sample application on both Graviton3 and x86 instances to illustrate the benefits. Also, explore strategies such as threading approaches versus those used in x86-based instances and other optimization techniques that you can use to optimize your .NET 6+ applications on Graviton3.

スピーカー

  • Sreelaxmi Pai, Sr. Modernization Architect, Amazon Web Services
  • Kirk Davis, Principal Solutions Architect, Amazon Web Services

レベル

400 - Expert

アジェンダ

  • Graviton3 について
  • .NET on Graviton3 はコストパフォーマンス良い
  • デモ1: ASP.NET Core を Graviton3 にデプロイ
  • デモ2: Graviton3 と x86 インスタンスでのパフォーマンスを比較

Graviton3 について

  • Graviton2 は x86-64 と比較し最大 40% コストパフォーマンスが良い
  • Graviton3 は Graviton2 と比較しさらに最大 25% 性能が良い
  • 電力効率も良くなってるのでサステナビリティの面からも良い

.NET on Graviton3 はコストパフォーマンス良い

  • EC2 だけじゃなくサーバーレスもいける
    • Lambda on Graviton で .NET 6 のマネージドランタイム
      • 20% 低いコストで性能が 19% あがる
      • AWS Toolkit for Visual Studio や Lambd atools for .NET CLI でもサポート済み
    • Fargate on Graviton

  • そもそも .NET 7 自体に Arm64 向けのパフォーマンス改善が含まれている

このあたりでも紹介されている

Graviton3 と .NET 7 の相性は最高だから使えという話。
ただ .NET 7 は LTS じゃないのでそこは気にしておけと。

このあとは実際に Graviton3 で .NET 7 の ASP.NET アプリケーションを実行したりパフォーマンス測定を行うデモを実施

デモ1: ASP.NET Core を Graviton3 にデプロイ

c7g インスタンスを作成し ASP.NET をデプロイする。
どうやら現時点では Amazon Linux 2 には .NET 7 が必要とするライブラリのバージョンと非互換性があるようで、このデモでは Ubuntu を利用していた。

実行出来た。

デモ2: Graviton3 と x86 インスタンスでのパフォーマンスを比較

  • 次に CI/CD パイプラインから環境別にデプロイ。ソースコードは同じものを使用している
    • Lambda x86-64
    • Lambda Graviton3
    • Fargate x86-64
    • Fargate Graviton3

以下は vCPU など同じ条件にあわせた環境別の比較。Graviton3 環境で高いパフォーマンスが測定されている。

c6i

c7g

サードパーティのコストパフォーマンス比較

いずれの場合も Graviton3 が高いコストパフォーマンスを記録している

さいごに

このセッションでは Graviton3 と .NET 6+ を組み合わせることでコストパフォーマンスの優勢性が得られることが解説されていました。
セッション内では NuGet パッケージなど Arm64 対応されていないものに関する注意点と評価が必要な点についても言及されていましたが、基本的には .NET では Graviton3 が採用出来ないかどうかを優先的に検討するのが良さそうだなと感じました。

参考