[レポート] CMP308: Amazon EC2インスタンスのネットワークパフォーマンスの最適化 #reinvent

2018.11.28

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

はじめに

こんにちは、コンサル部の望月です。

EC2インスタンスのネットワークパフォーマンスって気になるよね?ということで、AWS re:Invent 2018のセッション「CMP308: Optimizing Network Performance for Amazon EC2 Instances」 のレポートをお送りします。

セッション概要

Many customers are using Amazon EC2 instances to run applications with high performance networking requirements. In this session, we provide an overview of Amazon EC2 network performance features— including enhanced networking, ENA, and placement groups—and discuss how we are innovating on behalf of our customers to improve networking performance in a scalable and cost-efficient manner. We share best practices and performance tips for getting the best networking performance out of your Amazon EC2 instances.

スピーカー

  • Vishvesh Sahasrabudhe
    • Senior Product Manager
  • Nick Matthews
    • Principal Solutions Architect , AWS

レポート

  • 期待すること
    • パフォーマンスコンセプト
    • ネットワーキングパフォーマンスの特徴
      • Nitro
      • Elastic Network Adapter
    • アーキテクチャのパフォーマンス
      • 帯域幅と制限
    • テスト
  • ベーシックコンセプト
    • 帯域幅
    • レイテンシ
    • スループット
    • 通信の揺れや乱れ
  • 帯域遅延積(通信帯域とラウンドトリップタイム (RTT) の積)
    • 1秒あたりの帯域幅がどれくらいか
      • 大量のパケット(MTU)
    • データを1回でやり取りする
      • 多くのデータを送信する(TCP window size)
  • TCPとレイテンシ
    • レイテンシの大きな要因
      • クロスリージョンの接続性
      • インスタンス間のクラスタリング(HPC)
      • Amazon ElasticCache, memcached
    • オプション
      • 調整方法
        • 大きなMTUを設定
        • TCPチューニング
        • ネットワーク効率を高める
      • 物理的にどうにかする
        • AWS Region の選択: 10's of ms
        • Availability Zone の親和性: milliseconds
        • Placement group: <1 ms
  • パケット/秒と最大送信単位
    • 各パケットには処理のオーバーヘッドがある
    • 大きなパケットは全体のパフォーマンスを向上させる
      • VPCまたはVPCピア内で利用可能なジャンボフレーム (9001 MTU)
  • テストセットアップ
    • ゴール: 遅延を最小限に抑え、TCPチューニングして速度を上げる
    • TCPチューニングの例
      • Initial congestion window
      • TCP receive window
      • TCP congestion control algorithms
      • TCP retransmission timer

  • Networking on AWS
    • Nitro system
      • 軽量なhypervisor
      • Nitro card
      • Nitro security chip
    • Nitro の利点
      • pps performanceが20倍以上
      • インスタンス間のレイテンシを減らす
      • PCIeパススルーでSR-IOVをサポートし、ハイパーバイザーの一貫したパフォーマンスを実現
      • intel ixgbvefとEC2のENA
  • AWSネットワークパフォーマンスの特徴
    • cc2インスタンスからc5 インスタンスまでの間でレイテンシが改善されている

  • ENAドライバの機能
    • 将来的には最大 400 Gbpsのサポート
    • デバイスあたりのキューの増加
    • 低いレイテンシと通信の揺れや乱れ
    • 幅広いAMIのサポート
      • Linux
        • Amazon Linux
        • Amazon Linux2
        • RHEL 7.4+
        • SLES 12+
        • Ubuntu 14.04, 16.04, 18.04
        • CentOS 7(1711)
        • and in the Linux kernel since 4.9
      • Windows Server
        • 2008 R2
        • 2012
        • 2012 R2
        • 2016
        • 2019
      • FreeBSD 11
      • DPDK support starting in 16.04, PMD support
    • オープンソース
    • ENA v2.0 - Laetst release in upstream kernel
      • 低遅延キュー
      • Rx Checksum offload

  • ENAv2 ではさらにレイテンシが改善されている

  • Nitro enhanced networkingの便利

    • T3インスタンス
      • 最大 5 Gbps ネットワークパフォーマンス
    • 小さいサイズの C5, M5, R5 インスタンス
      • 最大 10 Gbps ネットワークパフォーマンス
    • 大きいインスタンスは 10 or 25 Gbpsが維持される
  • NETFLIXの事例が紹介されました

  • DPDKによるネットワークの強化
    • Intel Data Plane Development Kit (DPDK)
    • DPDKの機能
      • kernelとTCP stack bypassによる遅延時間の低減
      • パケット処理の制御を強化
      • 低いCPUオーバーヘッド
  • DPDK on AWS
    • 拡張ネットワークインスタンスでサポート
      • ENA及びIntel ixgbevf
    • DPDKはパケット処理を増やし、制御しながらレイテンシを短縮できる
      • カーネルとTCPのスタックバイパス、割り込みの代わりにPMDを使用するとレイテンシが短縮されます
      • DPDKは、基礎となる制限または最大値を変更しません
  • VPCパフォーマンス
    • 帯域幅の制限
      • VPCあたりの制限なし
      • Availability zoneとサブネットの制限なし
      • インターネットゲートウェイの制限なし
      • NATゲートウェイは10Gbpsを維持でき、10Gbpsを超えてスケールする
  • ネットワークパフォーマンスシナリオ
    • 送信元と送信先が重要
      • プレースメントグループ内
      • VPN接続を介する
      • AWS Direct Connectを使用する
      • Elastic Load Balancingを使用する
      • Amazon S3などのAWSサービスへのアクセス
  • VPC Peeringパフォーマンス
    • 帯域幅の制限
      • リージョン内のVPCピアリングの制限なし
  • インスタンス帯域幅の制限
    • インスタンス間
      • VPCまたはVPCピアリング間で25Gbps
    • Amazon S3宛て
      • VPCエンドポイントと同じリージョンのpublic IPで25Gbps
    • Placement group
      • シングルフロートラフィックに10Gbps
    • その他
      • インスタンスごとに5Gbpsを集約、シングルフロートラフィックに10Gbps
  • virtual private gatewayパフォーマンス
    • 帯域幅の制限
      • インスタンスあたり、出力されるトラフィックに対する5Gbps制限
  • Aviatrix Insane Mode
    • ハイスピードVPN
      • 複数のインスタンスを使い、高帯域幅を得る
      • 転送インスタンスを使用してトラフィックを集約する
      • VPN経由で最大25Gbps
  • Network Load Balancerパフォーマンス
    • 帯域幅の制限
      • 起動時の帯域幅が数ギガ
  • AWS HyperPlaneパフォーマンス
    • アタッチメント
      • Availability zoneごとにひとつのネットワークインターフェイス
      • Availability zoneごとの高可用性
      • ネットワークキャパシティの分割(shard)
      • 数十マイクロ秒のレイテンシ
    • AWS HyperPlane
      • スケーラブルな状態管理
      • マルチテナントのキャパシティがテラビット
      • NLB, NAT Gateway, Amazon EFS及びPrivateLinkをサポート
  • テストの利点
    • 多くの可能性があるパフォーマンス要因
      • 通信の場所、タイプ、サイズ
      • インスタンスタイプ、サイズ
      • Application profile
        • パケットサイズ、プロトコル、CPU/メモリ/ディスク
  • パフォーマンステストをどうするか
    • 自分のアプリケーションや環境で
      • ロードテスト
      • トランザクションテスト
      • "Race track numbers"
    • ベンチマークテスト
      • シナリオテスト: イントラVPC、インターネットトラフィック、VPN
      • 帯域幅、レイテンシ、通信の揺れや乱れ、スループット、packets per second
  • まとめ
    • レイテンシとTCP dynamicsを理解する
      • チューニングしてレイテンシを減らす
    • AWSを理解する
      • 拡張ネットワーク、jumbo MTU、インスタンスファミリ
    • 適切なアーキテクチャを利用する
      • 限界を知る、負荷を分散する
    • テストをする

まとめ

VPCやEC2などネットワーク周りの制限などについて、大変勉強になるセッションでした。

最新のインスタンスで着実にレイテンシなどが改善されており、AMIのサポートも進んでいるため、検討の上、積極的に最新インスタンスを利用していくのがいいかと思いました。