[レポート] Amazon EC2 インスタンスとパフォーマンス最適化のベストプラクティス #reinvent #CMP307

CMP307 - Deep Dive on Amazon EC2 Instances & Performance Optimization Best Practicesに参加してきましたのでレポートをお届けします。
2018.11.27

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

こんにちは。サービスグループの武田です。日本では早朝でしょうか。

今年がre:Invent初参加です。そしてこのセッションレポートがre:Inventの初エントリとなります。そんなわけで、CMP307-R - [REPEAT] Deep Dive on Amazon EC2 Instances & Performance Optimization Best Practices に参加してきましたのでレポートをお届けします。

セッション概要

Amazon EC2 provides a broad selection of instance types to accommodate a diverse mix of workloads. In this session, we provide an overview of the Amazon EC2 instance platform, key platform features, and the concept of instance generations. We dive into the current generation design choices of the different instance families, including the General Purpose, Compute Optimized, Storage Optimized, Memory Optimized, and GPU instance families. We also detail best practices and share performance tips for getting the most out of your Amazon EC2 instances.

アジェンダ

  • Infrastructure
  • Instances
  • Performance
  • Tools

セッションメモ

Infrastructure

  • コンピュータプラットフォームは18個のリージョンと1個のローカルリージョンという世界規模で展開している
  • AZは55個になる
    • 5個の新規リージョン、15個の新規AZがまもなくリリースされる
  • エッジネットワークは138箇所に存在し、29ヵ国62サイトで11のリージョナルエッジキャッシュがある

Instances

  • インスタンスタイプについて(例として c5d.9xlarge)
    • c: インスタンスファミリー
    • 5: インスタンスの世代
    • d: 追加機能(すべてのインスタンスに付いているわけではない)
    • 9xlarge: インスタンスサイズ
  • 175ものインスタンスタイプから、ワークロード、機能、オプションなどさまざまな要件に合ったものが選択できる
  • アプリケーションおよびワークロードによって、Intel、NVIDIA、AMDから最適なものが選択できる
  • アクセラレーテッドコンピューティングのためにGPUとFPGAもある
  • どのハイパーバイザを選択すればいいか?
    • Xen: 以前の選択肢
    • Custom KVM based hypervisor: 現在の選択肢
    • Bare metal: AWSではハイパーバイザを提供していない
  • AWS Nitro System
    • ほぼ100%のコンピュータリソースが使用できる
  • EC2 bare metal
    • 直接ハードウェアへのアクセスが必要であれば選択肢となる
  • Amazon Machine Image(AMI)とは?
    • インスタンスを起動するための情報を提供する
    • ひとつのAMIから複数のインスタンスが起動できる
    • 他にもいろいろ
  • AMIを探す
    • AWS ConsoleやAWS Marketplaceから探せる
    • AMI IDがわかればAWS CLIなどからも起動できる
    • 最新のOSを使うようにする
  • Amazon Linux 2
    • 5年間のLTS
    • AWSに最適化
    • Dockerイメージも提供されている

Performance

  • ENAをインストールし、AMIで有効化する
  • NVMeをインストールする
  • CPUを重度に使用するアプリケーションの場合、マルチスレッドのチューニングをする
  • Clocksourceの変更
    • Xenベースインスタンスの場合pvclockからtscに変更する
    • Nitroインスタンスはkvm-clockのままでOK
  • ワークロードに合わせてCPUステート制御を行う
  • Xen spinlock
    • ロックが高価な処理の場合、無効にする
  • numactlによるNUMAの制御
  • インスタンスストアの使用
  • ネットワークパフォーマンス
    • プレースメントグループを使用する
    • MTUをチューニングする
    • 複数のElastic Netwoek Interfaceを使用する
    • Packet Receive Interruptを分散させる
    • Receive Packet Steeringをセットアップする

Tools

  • lstopo
  • turbostat
  • htop
  • nethogs
  • perf
  • iperf3

まとめ

EC2のDeep Diveということで、リージョンやEC2の基本的なところから、パフォーマンスに関することまで濃い内容でした。仮想化環境のチューニングをやっている方からするとClocksourceの変更などは常識なのかもしれませんが、私は知らない範囲だったため勉強になりました。EC2はAWSの基幹とも言えるサービスで年々アップデートされているので、常に最新の情報をキャッチアップしていきたいですね。

現場からは以上です。

AWS News BlogやWhite Paperもぜひ見てね、とのことでした。