Upgrade to Pro — share decks privately, control downloads, hide ads and more …

57_.NET___Lambda_のパフォーマンスを最適化する方法.pdf

iwasa
July 14, 2023
2k

 57_.NET___Lambda_のパフォーマンスを最適化する方法.pdf

iwasa

July 14, 2023
Tweet

More Decks by iwasa

Transcript

  1. アジェンダ 1. Lambda と .NET 2. パフォーマンス向上のアプローチ a. .NET バージョンアップ

    b. Native AOT c. Lambda のアーキテクチャ 3. パフォーマンス比較 4. まとめ
  2. .NET の概要 マイクロソフトによって開発 ❖ .NET Framework と .NET Core ❖

    C#, Visual Basic, F# https://learn.microsoft.com/ja-jp/dotnet/architecture/microservices/net-core-net-framework-containers/net-container-os-targets より
  3. AWS Lambda での .NET サポート • マネージドランタイムで LTS の .NET

    6 • カスタムランタイムで STS の .NET 7 https://aws-labs.net/netonaws.html https://aws.amazon.com/developer/language/net/
  4. Lambda アーキテクチャ • X86_64 と ARM • .NET の ARM

    パフォーマンス改善 https://aws.amazon.com/jp/blogs/news/aws-lambda-functions-powered-by-aws-graviton2-processor-run-your-functions-on-arm-and-get-up-to-34-better-price-performance/
  5. .NET バージョンごとの比較 コールドスタート ウォームスタート p50 p99 p50 p99 .NET Core

    3.1 1004.80 1422.78 6.11 29.40 .NET 6 778.74 1470.50 6.41 31.33 .NET 7 1467.56 2423.83 7.16 45.13 .NET 8 (Preview) 1476.39 1878.51 6.01 28.94
  6. .NET バージョンごとの比較 コールドスタート ウォームスタート p50 p99 p50 p99 .NET Core

    3.1 1004.80 1422.78 6.11 29.40 .NET 6 778.74 1470.50 6.41 31.33 .NET 7 1467.56 2423.83 7.16 45.13 .NET 8 (Preview) 1476.39 1878.51 6.01 28.94
  7. .NET バージョンごとの比較 コールドスタート ウォームスタート p50 p99 p50 p99 .NET Core

    3.1 1004.80 1422.78 6.11 29.40 .NET 6 778.74 1470.50 6.41 31.33 .NET 7 1467.56 2423.83 7.16 45.13 .NET 8 (Preview) 1476.39 1878.51 6.01 28.94
  8. .NET バージョンごとの比較 コールドスタート ウォームスタート p50 p99 p50 p99 .NET Core

    3.1 1004.80 1422.78 6.11 29.40 .NET 6 778.74 1470.50 6.41 31.33 .NET 7 1467.56 2423.83 7.16 45.13 .NET 8 (Preview) 1476.39 1878.51 6.01 28.94
  9. Native AOT の比較 コールドスタート ウォームスタート p50 p99 p50 p99 .NET

    6 778.74 1470.50 6.41 31.33 .NET 7 1467.56 2423.83 7.16 45.13 .NET 7 + Native AOT 372.43 581.62 6.77 45.44 .NET 8 + Native AOT 361.79 515.88 6.01 26.31
  10. Native AOT の比較 コールドスタート ウォームスタート p50 p99 p50 p99 .NET

    6 778.74 1470.50 6.41 31.33 .NET 7 1467.56 2423.83 7.16 45.13 .NET 7 + Native AOT 372.43 581.62 6.77 45.44 .NET 8 + Native AOT 361.79 515.88 6.01 26.31
  11. Native AOT の比較 コールドスタート ウォームスタート p50 p99 p50 p99 .NET

    6 778.74 1470.50 6.41 31.33 .NET 7 1467.56 2423.83 7.16 45.13 .NET 7 + Native AOT 372.43 581.62 6.77 45.44 .NET 8 + Native AOT 361.79 515.88 6.01 26.31
  12. Native AOT の比較 コールドスタート ウォームスタート p50 p99 p50 p99 .NET

    6 778.74 1470.50 6.41 31.33 .NET 7 1467.56 2423.83 7.16 45.13 .NET 7 + Native AOT 372.43 581.62 6.77 45.44 .NET 8 + Native AOT 361.79 515.88 6.01 26.31
  13. CPUアーキテクチャ別の比較 コールドスタート ウォームスタート p50 p99 p50 p99 .NET Core 3.1

    - x86 1004.80 1422.78 6.11 29.40 .NET Core 3.1 - ARM 1122.70 1225.92 5.55 19.85 .NET 6 - x86 778.74 1470.50 6.41 31.33 .NET 6 - ARM 873.59 944.42 5.50 19.53
  14. CPUアーキテクチャ別の比較 コールドスタート ウォームスタート p50 p99 p50 p99 .NET Core 3.1

    - x86 1004.80 1422.78 6.11 29.40 .NET Core 3.1 - ARM 1122.70 1225.92 5.55 19.85 .NET 6 - x86 778.74 1470.50 6.41 31.33 .NET 6 - ARM 873.59 944.42 5.50 19.53
  15. まとめ 1. .NET バージョンは最新のマネージドランタイムを使う 2. Native AOT が使える場合はカスタムランタイムも良い 3. Native

    AOT でコールドスタートの速度が改善される 4. ARM アーキテクチャのほうが速度が改善されるかは処理に依 るが、安定する傾向にありそう