[レポート] The State of The Art – AWS / EC2 Networking #AWSSummit

2016.06.03

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

丹内です。AWS Summit 2日目 D会場(Advanced Tech Track)で行われたセッションに参加してきました。

セッション概要

Speaker: Kevin Miller (Director, Software Development, EC2 Networking, Amazon Web Services, Inc.)

多くのアプリケーションは、ネットワーク I/O バウンドです。 これには、共通のデータベースを使ったアプリケーションや、サービスベースのアーキテクチャが含まれます。 しかし、オペレーティングシステムとアプリケーションは、多くの場合、高いパフォーマンスを実現するためにチューニングされてはいません。 本セッションでは、ネットワークのパフォーマンス低下につながる隠れた問題を明らかにし、可能な限り最高のネットワークパフォーマンスを得るためにそれらを克服する方法をご紹介します。 その他、最新のユースケースを含む AWS のネットワーク設計に関する最新情報も合わせてご紹介します。

TCPの性能改善について

  • チューニングによって137%まで性能向上が期待できる
    • この数字は今回の発表用に行った実験からの数値
  • TCPは多くの通信の基礎になっており、アプリケーションの性能改善に寄与する幅が大きい
  • この発表での説明や実験は、JackとJillという2台のサーバが様々な状況でTCP通信を行うという想定
  • TCPの性能に影響を与える様々なパラメータ
    • 帯域幅遅延積
    • TTT
    • 初期輻輳ウィンドウ
    • パケロス。実験によると、1%の喪失でも50%の速さのロスになってしまう
  • 様々なツールで診断が可能
    • netstat
    • ss -ite。ソケットレベルでの診断。多くの情報を得られる
    • brendangregg/perf-tools。Linuxカーネルレベルでの分析ができる

チューニング

  • Linuxの輻輳制御アルゴリズムを変える。デフォルトははCUBICだが、illinoisなど他にも幾つかある
  • 再送タイマー(パケロスしたとみなす時間)を変える。過大/過小ではない適切な値に設定する必要がある
  • キューイング。どうしても遅れるのでキューしないとバッファが溢れる
  • tc qdiscコマンドでキューストラテジを確認とアルゴリズムの有効化

EC2拡張NW機能

  • NW性能向上、CPU利用率低下、遅延低下、ネットワークジッター低下の効果が得られる
  • 特定のファミリでドライバから利用可能
  • MTUが8949バイトまで利用可能。 普通は1448まで
  • MTUのチューニングを行う。

応用

  • JackとJillのAmazon linuxがランダムビットを送る

実験1

  • HTTPSで0.2%の損失が合ったとして、スループットへの影響を減らしたい。
  • パケロスはtcコマンドでシミュレーション
  • 全てデフォで損失なし->0.2%損失で帯域が4163Mbps->1469Mbps, 28秒から72秒
  • これまでやった内容(初期輻輳ウィンドの増加、サーバ側TCPバッファを倍増、Illinois)で結果が変わる
    • Illinoisで3486Mbps28秒、性能が137%向上

実験2

  • Jack-Jillが大容量データ転送、高RTTパス 例えば隣国など
  • スループットの最大化を目指す
  • デフォで2164Mbps 30.4sだったのがIllinois/クライアント-サーババッファ/AQMで性能が32%向上

実験3

  • 大容量データ転送、低RTT。同じデータセンター内を想定
  • するオーうっとの最大化と転送時間の最小化を目指す
  • デフォで1500バイトMTUだと8866Mbps 74s

実験4

  • トランザクションレートの高いHTTP
  • 遅延の最小化を目指す
  • デフォで2580 195ms
  • Illinois 初期輻輳 186ms 4.2%向上

まとめ

  • NWはブラックボックスという人が多いが、みんあLinuxツールを使って調べることができる
  • 性能調整で性能を伸ばすことができる
  • テスト、測定、変更では、NWを理解してすすめる

感想

AWSに特有の技術というより、AWSの性能を最大限引き出すために必要な一般的な知識、という印象を受けました。 具体的なトラブルシューティングの過程の説明に、AWSの機能を使ってこうする という実践的な内容で、とてもおもしろかったです。