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

データセンターネットワークでの輻輳対策どうしてる?

 データセンターネットワークでの輻輳対策どうしてる?

JANOG53での登壇資料です。

https://www.janog.gr.jp/meeting/janog53/dcqos/

LY Corporation Tech

January 18, 2024
Tweet

More Decks by LY Corporation Tech

Other Decks in Technology

Transcript

  1. © LY Corporation 深澤 開 / Fukazawa Kai 所属: ネットワーク開発チーム兼バックボーンネットワークチーム

    元Hadoopエンジニアの現ネットワークエンジニア 業務: データセンターおよびバックボーンネットワークの運⽤ 過去のJANOG登壇: Yahoo! JAPAN アメリカデータセンタとネットワーク変遷 :: JANOG52 ⼩林 正幸 / Masayuki Kobayashi 所属: ネットワーク開発チーム シニアネットワークエンジニア 業務: データセンターネットワーク運⽤, AI/HPC⽤ネットワーク設計などを担当 過去のJANOG登壇: LINEのネットワークをゼロから再設計した話 :: JANOG43 2 登壇者紹介
  2. © LY Corporation 5 ワークロードの混在と複雑化する通信品質要求 データセンターネットワークのいま Frontend Fabric • Compute

    node(CPU)の通信 • NWリソースを共有する • パケットロスが起きる前提 • 多様なアプリのflowが混在 Backend Fabric • HPC Acceleratorの通信 • クラスタ間通信でNWを専有 • パケットロスが許容されない • 特定アプリのflowが占有傾向
  3. © LY Corporation 6 どこで輻輳が発⽣するのか データセンターネットワークと輻輳 • In-cast congestion •

    複数の送信元が1つの宛先にデータを 同時に送信する多対⼀の通信 • 受信側バッファでtail dropが発⽣する • 現在のデータセンターネットワークで 問題になりやすい • 発⽣したときの対応が難しい • Fabric congestion • 不均衡なトラフィック分散やフローの偏り によってファブリック内のバッファで パケットロスが発⽣する • DLBやGLB ※での対策が推奨される • Out-cast congestion • 特定の出⼒キューが総リンク帯域幅を超え る速度でデータを送信するときに発⽣する • 送信元が特定されるため対応は⽐較的容易 In-cast Congestion Out-cast Congestion Fabric Congestion ※ Dynamic Load Balancing / Global Load Balancing
  4. © LY Corporation 7 In-cast congestion データセンターネットワークと輻輳 輻輳の制御 ≒ バッファの制御

    Active Queue Management (AQM) In-castはデータセンターネットワークの特性上、回避が困難
  5. © LY Corporation Bimodalなデータセンタートラフィック Mice Flow • 存続期間が短く低レートな通信 • データセンターのフローの⼤部分を占めるが、総トラフィック量の1~2割程度

    • 遅延の影響を受けやすく、クエリや制御メッセージで構成される • アプリケーションの性能低下を防ぐため、パケットロスを最⼩限またはゼロにする必要がある Elephant Flow • 存続期間が⻑く⾼レートな通信 • データセンターの総トラフィック量のほとんどが少数のElephant Flow • バックアップや分散処理などの⼤規模なデータ転送が該当し、⾼いスループットを必要とする 8 どんな通信が輻輳を起こすのか データセンターネットワークと輻輳
  6. © LY Corporation 9 公平性(fairness)の担保 データセンターネットワークと輻輳 High Throughput Workloads Low

    Latency Workloads 可能な限り最⼤のスループットと低い遅延を様々なワークロードに提供したい しかし、スイッチのバッファ内のフローを動的に区別し運⽤することは⼀般的に難しい
  7. © LY Corporation アプリケーションによってパケットロスへの許容度と回復⼒が異なる Lossy • 現在の多くのアプリケーションはパケットロスをTCPの再送などでカバーしている • パケットロスが起きることを前提とした設計で、厳密なパケット順序付け制御が必要ない •

    ホスト側のTCP輻輳制御アルゴリズムのスタンドアロンで運⽤されることが⼀般的 Lossless • パケットロスを許容せず、厳密なパケット順序付け制御が必要になる • 昨今導⼊が進んでいるAIのGPUクラスタネットワークなどがこれに該当する • ホストがネットワーク機器からのフィードバックを受ける形で厳密に運⽤される 10 Lossy vs Lossless 輻輳と回復⼒
  8. © LY Corporation アプリケーションによってパケットロスへの許容度と回復⼒が異なる Lossy • 現在の多くのアプリケーションはパケットロスをTCPの再送などでカバーしている • パケットロスが起きることを前提とした設計で、厳密なパケット順序付け制御が必要ない •

    ホスト側のTCP輻輳制御アルゴリズムのスタンドアロンで運⽤されることが⼀般的 Lossless • パケットロスを許容せず、厳密なパケット順序付け制御が必要になる • 昨今導⼊が進んでいるAIのGPUクラスタネットワークなどがこれに該当する • ホストがネットワーク機器からのフィードバックを受ける形で厳密に運⽤される 11 Lossy vs Lossless 輻輳と回復⼒ 本プログラムの検証対象
  9. © LY Corporation 12 分類とメリット・デメリット 輻輳への対応策 # 実現⽅法 NW運⽤者視点のメリット NW運⽤者視点のデメリット

    1 専⽤のネットワークを構築する NWリソースを占有可能 機器と運⽤のコストが増加 2 輻輳に強いハードウェアを導⼊する ホスト側に設定が不要 機器コストが増加 3 輻輳制御の設定をチューニングする 機器コストを削減可能 ホスト側にも設定が必要 ⼤きく分けて3パターン
  10. © LY Corporation 13 分類とメリット・デメリット 輻輳への対応策 # 実現⽅法 NW運⽤者視点のメリット NW運⽤者視点のデメリット

    1 専⽤のネットワークを構築する NWリソースを占有可能 機器と運⽤のコストが増加 2 輻輳に強いハードウェアを導⼊する ホスト側に設定が不要 機器コストが増加 3 輻輳制御の設定をチューニングする 機器コストを削減可能 ホスト側にも設定が必要 これまで旧ヤフーではシステムの特性ごとに専⽤構成のネットワークを構築してきた また通常のバッファ容量の機器では輻輳が予想される環境では、⼤容量バッファの機器も導⼊してきた CPU-Centric NW IaaS Lossy, Shallow Buffer Data-Centric NW Hadoop Lossy, Deep Buffer HPC-Centric NW AI/ML GPU Lossless, Shallow Buffer
  11. © LY Corporation 課題 • ⽤途別の専⽤構成が乱⽴しインフラがフラグメント化、構築・運⽤のコストが増加している • ⼤容量なバッファを持つ機器を運⽤しているが、 そのコストの妥当性が不明 •

    LossyなNWでも異なる機器や設定を運⽤しなければならないことの負荷が⼤きい 我々のモチベーション • ハードウェアや構成・設定のバリエーションを増やしたくない • 可能な限り構築・運⽤のコストパフォーマンスの⾼い標準構成を定義したい • 今後の機種選定やconfiguration, コスト算出の根拠となるデータが欲しい 14 これからのデータセンターネットワークが⽬指す形 課題とモチベーション
  12. © LY Corporation 15 まとめると このプログラムの背景 旧ヤフーのHadoop環境などでは、NW品質の安定を⽬的として⼤容量バッファの機器を導⼊してきた 実際にどれくらいの効果が出ているか測定が出来ておらず、適したコストで運⽤できているか不明だった 運⽤をはじめて数年経ったいま、改めて振り返ると改善点があるのではないか? また最近はAI/MLなど様々なワークロードを収容する必要がありそれぞれ要求が異なってくる

    運⽤の観点で、採⽤するハードウェアの種類や設定のバラエティを増やしたくない 可能な限り構築・運⽤のコストパフォーマンスの⾼い標準構成を定義したい 我々に本当に必要だったハードウェア要件と輻輳管理の⼿法を確⽴させるための根拠が欲しいので、 既存の課題を振り返りデータセンターネットワークでの輻輳制御⼿法を再考したい!!
  13. © LY Corporation 17 バッファ実装と輻輳通知をフィードバックするかしないか バッファ管理⼿法の組み合わせ Deep Buffer Shallow Buffer

    Host Only (スイッチのFBなし) Network Assisted (スイッチのFBあり) H-TCP, CUBIC, BBR, ... ECN, PFC DCTCP Switch Bufferの選択 フィードバック有無 TCP輻輳制御アルゴリズムの選択
  14. © LY Corporation 19 VOQ (Virtual Output Queuing) Deep Buffer

    • Switch ASICに搭載されたGB単位の⼤容量メモリ(HBM)でバーストトラフィックを吸収する⽅式 • HOLB※の対策として、各⼊⼒ポートに出⼒ポート分の仮想出⼒キュー(VOQ)が実装されている • ポート数Nのスイッチの場合、NxNのVOQになる ※ HOLB (Head of Line Blocking)
  15. © LY Corporation • バッファサイズは⼤きければ良いというものではない • パケットがバッファ内にストアされることによって⽣じる遅延の問題(Bufferbloat)がある • 遅延に敏感なアプリケーションでは品質低下につながる •

    Loss-basedなTCP輻輳制御アルゴリズムとの相性が良くないとされている • パケットロスが発⽣するまでバッファを埋め尽くす動作をするため • 対策として CoDel (Controlled Delay) などのAQMアルゴリズムが考案されている • キューイング遅延が閾値を超えたパケットを破棄する • ネットワーク機器に実装されているBufferbloat対策の実装については不明(調査不⾜) 20 Bufferbloat問題 Deep Buffer
  16. © LY Corporation 22 Explicit Congestion Notification ECN • バッファの閾値を超えたパケットのECNビットにマーキングし受信側に輻輳を通知する仕組み

    • 通知された受信側はECN Echo(ECE)を返し、それを受信した送信側は送信レートの調整を⾏う • 送信側と受信側のホストで事前にECN Capabilityのネゴシエーションが必要 • Lossless Ethernet(RoCEv2)の場合は、TCP ECE相当の役割をCNP(Infiniband BTH)が担う Congestion Point https://www.janog.gr.jp/meeting/lt-night-1/download_file/view/16/1
  17. © LY Corporation 23 Priority-based Flow Control PFC • 輻輳が発⽣したTraffic

    Class(0~7)のキューからPAUSEフレームを隣接ノードに送信 • PAUSEフレームを受信したノードはそのTCに対応するキューからのパケットの送信を⼀時停⽌ • 特にLossless EthernetでECNと併⽤されることが⼀般的 https://www.janog.gr.jp/meeting/janog52/wp- content/uploads/2023/06/janog52-aiml400-uchida-koshoji.pdf
  18. © LY Corporation • RDMAなどのLossless Ethernetであれば両⽅設定するのがベストプラクティス • DCQCN (ECN +

    PFC) + ETS(送信キューのQoS) • PFCはパケットの送信を⽌めてしまうため、最後の⼿段と理解している • ジョブ完了時間が伸びてしまうと予想される • 可能な限りECNでカバーして、それでも輻輳しているときにPFCが働くように設計したい • HadoopなどTCPでLossyなネットワークでECNを使う場合、PFCも設定すべきなのか? • Losslessを要求されない環境なら不要と考えている • 議論したいポイントのひとつ 24 輻輳通知の使い分け ECNとPFCは両⽅必要なのか?
  19. © LY Corporation 26 Delay-based vs Latency-based TCP輻輳制御アルゴリズム • 動的に輻輳ウィンドウサイズ(cwnd)を調整し⾼いスループットを維持するための仕組み

    • TCP輻輳制御アルゴリズムはフィードバック形式の違いで分類される • Loss-based (パケットロス) • Delay-based (遅延) • Hybrid • 輻輳制御(ウィンドウサイズ調整)のトリガーに何を⽤いるかの違い • 基本的にインターネット環境での利⽤を想定しているものがほとんど • データセンター⽤にもっとアグレッシブな制御をしたいという需要がある • DCNWはend-to-endで管理された環境のため、専⽤の輻輳制御アルゴリズムを使いたい
  20. © LY Corporation 27 Data Center TCP DCTCP • データセンターネットワーク向けのTCP輻輳制御アルゴリズム

    • RFC8257: https://datatracker.ietf.org/doc/html/rfc8257 • ECNに依存する技術で、ネットワークの実際の輻輳レベルに応じて緩やかに送信レート減少させる • 従来のECNは単純な輻輳検知しかできないが、輻輳しているデータ量を推定し制御するアルゴリズム • Shallow Bufferのスイッチでも⾼いスループットを出せることを⽬的にしている • 既存のTCPと同じネットワークに共存できないという課題もある
  21. © LY Corporation 28 まとめ データセンターネットワーク輻輳対策⼿法 ⽅式 特徴 考慮事項 Deep

    Buffer • バーストトラフィックに強い • ホスト側の設定を変更できない場合に有⽤ • Bufferbloatの対策が必要 • Shallow Bufferの機器より⾼価 Shallow Buffer ‒ Host Only • 従来のNW機器で運⽤可能 • ホスト側の設定を変更できない場合に有⽤ • バーストトラフィックに弱い • ホスト側の輻輳制御⽅式に依存 Shallow Buffer ‒ NW Assisted • 適切な設定で機器コストを抑えて構築可能 • 設定次第である程度の公平性を担保可能 • ホスト側の設定変更が必要 • NW側はバッファの閾値調整が必要 • ホスト側の輻輳制御が重要 結局どれを選ぶべきなのか? 検証で確認
  22. © LY Corporation 1. まず既存の商⽤環境でどの程度の輻輳が起きているか把握する • Deep Bufferを採⽤しているHadoop環境(Lossy)を対象にバッファの使⽤状況を調査・可視化 • Hadoopの分散処理の特性上、TCP

    In-castが最も発⽣していると考えられる環境のため 2. Deep Bufferによる恩恵がどの程度なのか、Shallow Bufferの機器と同⼀条件で⽐較 • 機器をShallow Bufferのモデルに⼊れ替えて同じジョブを実⾏し⽐較 • ジョブの完了時間に差があるのか、通信影響が出るのかを実際のワークロードを使って検証 3. Shallow Bufferの機器でもDeep Bufferと同等のアプリケーション性能を実現できるか検証 • 輻輳制御の設定をスイッチとホストの両⽅で⾏うことでジョブ完了時間を⽐較 30 やること ⽅針
  23. © LY Corporation • Vendor Specificな製品や機能の⽐較 • 可能な限り標準的な技術の組み合わせで実現したいため • Losslessが要求されるネットワークの輻輳制御については今回の検証スコープからは除外

    • 商⽤と同程度の検証環境が現時点で⽤意できないため (GPUやNICの納期・コストの観点) • 要求特性が⼤きく異なることから専⽤NWで構築している • 専⽤NWで構築しているのでfairnessの観点はそこまで考慮しないため (他のアプリケーションのフローと混在しない) 31 やらないこと ⽅針
  24. © LY Corporation • オープンソースの⼤規模な分散処理ミドルウェア • 主に2つのコンポーネントで構成されている • HDFS •

    分散ファイルシステム • YARN • 分散リソース制御システム • その他にも多様なHadoopエコシステムが存在 • 参考 • Apache Hadoop • 分散処理技術「Hadoop」とは 32 Architecture Hadoop Overview YARN Architecture
  25. © LY Corporation 33 (参考) Hadoop の利⽤実績 • 10年以上前から利⽤し、最も⼤きいHadoopクラスタでは120PB以上のデータを保管 •

    OSSコミニティのコミッター(PMC)も在籍しており、⽇々クラスタの性能向上へ取り組んでいる • Apache Hadoop - Yahoo!デベロッパーネットワーク • HDFSをメジャーバージョンアップして新機能のRouter-based Federationを本番導⼊してみた - Yahoo! JAPAN Tech Blog • 数千rpsを処理する⼤規模システムの配信ログをHadoopで分析できるようにする 〜 ショッピン グのレコメンドシステム改修 - Yahoo! JAPAN Tech Blog
  26. © LY Corporation 35 Architecture MapReduce Overview • Map:⼊⼒データに対して、各Compute Nodeで処理を⾏う

    • Shuffle:Map Phaseで⽣成したデータを特定レコードでまとめるためにデータ転送を⾏う • Reduce:Shuffle Phaseで受け取ったデータを集約する
  27. © LY Corporation 36 Hadoop でどのようなときに多対⼀の通信が発⽣するのか Hadoop Incast-congestion Network Design

    MapReduce Data Node: HDFSのデータを保存しているノード Compute Node : データ処理を⾏うノード
  28. © LY Corporation 38 Hadoop でどのようなときに多対⼀の通信が発⽣するのか Hadoop Incast-congestion Network Design

    MapReduce Shuffle Phase: Map処理したデータがReduce処理のためにCompute Node間で転送される
  29. © LY Corporation 39 Hadoop でどのようなときに多対⼀の通信が発⽣するのか Hadoop Incast-congestion Network Design

    MapReduce Reduce Phase: 各Compute Nodeが結果を集約するCompute Nodeへデータ転送を⾏う
  30. © LY Corporation • Hadoop検証クラスタの⼀部を利⽤ • 商⽤環境と同じハードウェアと構成 • Data Node

    • 7台 • Compute Node • 14台 • Data Node / Compute Nodeは それぞれ専⽤のLeaf switchに接続 • 検証で利⽤したスイッチのBuffer仕様 • Deep Buffer 8GB (Jericho+) • Shallow Buffer 32MB (Trident 3) 41 構成 検証環境 4 x 100G 4 x 100G 25G 25G 下記の条件でジョブ完了時間がどうなるか検証 • LeafをBuffer仕様の異なるモデルに変更 • ECN設定の有無 DiscardsやQueueの可視化にはVender製品を利⽤
  31. © LY Corporation • 種類 • TeraSort (Hadoopに標準搭載されているベンチマーク) • 処理フレームワーク

    • MapReduce • Tez (MapReduceに⽐べてIn-castの通信が少ない) • データサイズ • 10G (低負荷) / 200G (⾼負荷) • 実⾏環境 • トラフィック負荷なし • キューの競合のない状態で完了時間がどの程度か確認するためジョブのみ実⾏ • トラフィック負荷あり - Compute Node間でトラフィック(10~25Gbps)を流しながら実⾏ • 実際の環境で複数のジョブが実⾏されている状況を想定し計測 42 実⾏するHadoopジョブと環境 検証環境 参考:Apache Tezの解説 | Hadoop Advent Calendar 2016 #07
  32. © LY Corporation 1. Deep Buffer と Shallow Buffer の単純⽐較

    (ECN設定なし) • Network Assistが無いHost Onlyな輻輳制御でDeep BufferとShallow Bufferのパフォーマンス検証 2. ECN 設定の有無の⽐較 • Network AssistとしてShallow BufferでECNを設定した場合の輻輳制御の効果を検証 3. ECN+PFC と PFCのみ の⽐較 • Network AssistとしてShallow BufferでECNに加えてPFCの設定の必要性を検証 4. サーバの輻輳制御アルゴリズムの違いの⽐較 • サーバ側の輻輳制御アルゴリズムをNetwork Assist(ECN)と密接に連携させた場合の効果を検証 43 各パターンとその⽬的 検証パターン
  33. © LY Corporation 44 Deep Buffer と Shallow Buffer の⽐較

    (ECN設定なし) 検証パターン1 • Compute NodeのLeafをDeep Bufferの機種とShallow Bufferの機種で⽐較 • ECN などの輻輳制御の設定はなし ※ Data NodeのLeafをShallow Bufferの機種にしての検証は検証機器と検証環境の都合から未実施
  34. © LY Corporation 45 ECN 設定の有無の⽐較 検証パターン2 ECNを、 • Compute

    Nodeで有効化 → Shuffle, Reduceの通信にECNが効果を発揮する想定 • Data Nodeで有効化 → Mapの通信でのData NodeとCompute Nodeのデータ転送で効果を発揮する想定 • Compute Node とData Node の両⽅で有効化 → MapReduce の全ての通信で効果を発揮する想定
  35. © LY Corporation 46 ECN 設定の有無の⽐較 検証パターン2 ECNを • Compute

    Nodeで有効化 → Shuffle, Reduceの通信にECNが効果を発揮する想定 • Data Nodeで有効化 → Mapの通信でのData NodeとCompute Nodeのデータ転送で効果を発揮する想定 • Compute Node とData Node の両⽅で有効化 → MapReduce の全ての通信で効果を発揮する想定
  36. © LY Corporation 47 ECN+PFC と PFCのみの⽐較 検証パターン3 • Compute

    NodeでECN+PFCを有効にしたものとPFCのみを有効にしたものを⽐較 • ECNによってPFCのPAUSEフレームの送信を抑制できることの確認が⽬的
  37. © LY Corporation 48 サーバの輻輳制御アルゴリズムの違いでの⽐較 検証パターン4 • サーバ側のECNの設定をDCTCPに変更し、H-TCPと⽐較 • net.ipv4.tcp_congestion_control=dctcp

    • net.ipv4.tcp_ecn_fallback の設定はサーバのkernelバージョンが理由で設定できず • Spine/Leaf Switch のECN設定はH-TCPの場合と同様
  38. © LY Corporation 50 Summary 期待する検証結果 ⽅式 Queueの利⽤状況 ジョブ完了時間 1

    Deep Buffer • 負荷が⾼い状態でもDiscardsや Queue Dropsなどを抑えることができている • 短い 2 Shallow Buffer (Host Only, Non-ECN) • 負荷が⾼い状態でDiscardsや Queue Dropsが頻繁 に発⽣ • ⻑い 3 Shallow Buffer (ECN Only) • 負荷が⾼い状態でもDiscardsや Queue Dropsなどを抑えることができる • 1と同程度 4 Shallow Buffer (ECN + PFC) • ECNを利⽤することでPFCカウンターの増加を 抑えることができる • 1と同程度 5 Shallow Buffer (ECN + DCTCP) • 3よりもDiscardsやQueue Dropsなどを抑えること ができる • 3よりも短い
  39. © LY Corporation 51 Summary 検証結果 ⽅式 Queueの利⽤状況 ジョブ完了時間 1

    Deep Buffer • 負荷が⾼い状態でもDiscardsや Queue Dropsなどを抑えることができた • 短い • ⻑い 2 Shallow Buffer (Host Only, Non-ECN) • 負荷が⾼い状態でDiscardsやQueue Dropsなどが 頻繁に発⽣した • ⻑い • 短い 3 Shallow Buffer (ECN Only) • 負荷が⾼い状態でもDiscardsや Queue Dropsなどを抑えることができた • 1と同程度 • 2と同程度 4 Shallow Buffer (ECN + PFC) • ECNを利⽤することでPFCカウンターの増加を 抑えることができた • PFCのみでもQueue Dropsを抑えることができた • 1と同程度 • フレームワークによって 差異あり 5 Shallow Buffer (ECN + DCTCP) • 3と⽐較して、Queue Dropsなどが発⽣ • 3よりも短い • 3よりも⻑い
  40. © LY Corporation 53 ECN設定なしでの Deep Buffer と Shallow Buffer

    の⽐較 検証パターン1 トラフィックを流していない状態では、Deep / Shallowのジョブ完了時間に⼤きな差はない 46.1 45.4 39.4 42.9 148.4 148.4 104.9 106.3 0 50 100 150 200 Deep Buffer Shallow Buffer Deep Buffer Shallow Buffer Deep Buffer Shallow Buffer Deep Buffer Shallow Buffer ジョブ実⾏時のTraffic なし ジョブ実⾏時のTraffic あり ジョブ実⾏時のTraffic なし ジョブ実⾏時のTraffic あり MapReduce Tez Job Completion time [sec] 10GB 200GB (data size) ※ ジョブの完了時間は複数回実⾏した平均値
  41. © LY Corporation 54 検証パターン1 トラフィックを流している状態では、Shallowの⽅がジョブ完了時間が短い結果となった (特にMapReduceで差が出た) 70.4 55.4 59.0

    48.8 193.6 178.5 142.7 139.7 0 50 100 150 200 Deep Buffer Shallow Buffer Deep Buffer Shallow Buffer Deep Buffer Shallow Buffer Deep Buffer Shallow Buffer ジョブ実⾏時のTraffic なし ジョブ実⾏時のTraffic あり ジョブ実⾏時のTraffic なし ジョブ実⾏時のTraffic あり MapReduce Tez Job Completion time [sec] 10GB 200GB (data size) ECN設定なしでの Deep Buffer と Shallow Buffer の⽐較 ※ ジョブの完了時間は複数回実⾏した平均値
  42. © LY Corporation 56 検証パターン1 Shallow BufferではQueue Dropsなどがほぼ常に発⽣してしまっている Queue の⽐較

    (Trafficを流している状況でのジョブ実⾏時) Queue Drops Queue Length Transmit Latency Queue Drops Queue Length Transmit Latency Deep Buffer Shallow Buffer • Queue Drops 発⽣したTail Drop • Queue Length Queueの輻輳状況 • Transmit Latency 送信遅延
  43. © LY Corporation • Deep Buffer • 負荷が⾼い状態でもDiscardsやQueue Dropsなどを抑えることができている •

    ジョブ完了時間がShallow Bufferより⻑い • Shallow Buffer • 負荷が⾼い状態ではほぼ常にDiscardsやQueue Dropsなどが発⽣している • Deep Bufferの⽅がジョブ完了時間が⻑い理由として、Bufferbloatが発⽣している可能性 • Deep Bufferによってバーストが吸収された反⾯、キューイング遅延が発⽣している可能性 • 今回の検証で断定はできず 57 結果と考察 検証パターン1
  44. © LY Corporation 59 ECN 設定内容 検証パターン2 • switch configuration

    • server configuration 閾値に関しては今回は決め打ち net.ipv4.tcp_ecn=1 は「有効」、2 は「ECNを通知してきた相⼿には有効にする」、0 は「無効」
  45. © LY Corporation 45.4 46.7 42.9 41.5 148.4 147.9 106.3

    113.3 0 50 100 150 200 ECN設定なし Compute Node ECN設定あり ECN設定なし Compute Node ECN設定あり ECN設定なし Compute Node ECN設定あり ECN設定なし Compute Node ECN設定あり ジョブ実⾏時のTraffic なし ジョブ実⾏時のTraffic あり ジョブ実⾏時のTraffic なし ジョブ実⾏時のTraffic あり MapReduce Tez Job Completion time [sec] 10GB 200GB (data size) 60 Compute Node ECN 設定の有無の⽐較 検証パターン2 トラフィックを流していない状態での10GBではほぼ差がないが、Tez 200GBでは若⼲差があり、 フレームワークの違いで実⾏結果への影響が違う結果 ※ ジョブの完了時間は複数回実⾏した平均値
  46. © LY Corporation 61 Compute Node ECN 設定の有無の⽐較 検証パターン2 Traffic

    流している状態では、MapReduce ではECN設定ありが短く、 Tez では少し⻑いという結果に 55.4 56.0 48.8 51.3 178.5 174.3 139.7 141.3 0 50 100 150 200 ECN設定なし Compute Node ECN設定あり ECN設定なし Compute Node ECN設定あり ECN設定なし Compute Node ECN設定あり ECN設定なし Compute Node ECN設定あり ジョブ実⾏時のTraffic なし ジョブ実⾏時のTraffic あり ジョブ実⾏時のTraffic なし ジョブ実⾏時のTraffic あり MapReduce Tez Job Completion time [sec] 10GB 200GB (data size) ※ ジョブの完了時間は複数回実⾏した平均値
  47. © LY Corporation 63 検証パターン2 ECN設定無しの場合と⽐べて、明らかにQueue Dropsの発⽣やQueue Dropsや輻輳がなくなった Queue の⽐較

    (Trafficを流している状況でのジョブ実⾏時) Queue Drops Queue Length Transmit Latency Queue Drops Queue Length Transmit Latency ECN設定 無 ECN設定 有
  48. © LY Corporation 64 Deep Buffer / Shallow Buffer /

    ECN ⽐較 検証パターン2 Shallow BufferでECNを設定してもTraffic流している状態で Deep Bufferよりジョブ完了時間が短い結果に 46.1 45.4 46.7 70.4 55.4 56.0 39.4 42.9 41.5 59.0 48.8 51.3 148.4 148.4 147.9 193.6 178.5 174.3 104.9 106.3 113.3 142.7 139.7 141.3 0 50 100 150 200 Deep Buffer ECN設定なし Shallow Buffer ECN設定なし Compute Node ECN設定あり Deep Buffer ECN設定なし Shallow Buffer ECN設定なし Compute Node ECN設定あり Deep Buffer ECN設定なし Shallow Buffer ECN設定なし Compute Node ECN設定あり Deep Buffer ECN設定なし Shallow Buffer ECN設定なし Compute Node ECN設定あり ジョブ実⾏時のTraffic なし ジョブ実⾏時のTraffic あり ジョブ実⾏時のTraffic なし ジョブ実⾏時のTraffic あり MapReduce Tez Job Completion time [sec] 10GB 200GB (data size) ※ ジョブの完了時間は複数回実⾏した平均値
  49. © LY Corporation • Shallow Buffer + ECN • トラフィック負荷が⾼い状態でもDiscardsやQueue

    Dropsなどが抑えることができている • ECNを設定してもDeep Buffer利⽤時よりジョブ完了時間が短い ECNを設定することはDiscardsやQueue Dropsなどに対して有効と考えられる • TezではECNを設定したときの、Traffic流した状態での実⾏時間が伸びているため、 輻輳の制御によりジョブへ影響がでている可能性がある • 検証パターン1 で推測した「キューイング遅延が発⽣している可能性」の説明をすることが できる⼀つの結果 65 結果と考察 検証パターン2
  50. © LY Corporation 67 PFC の設定 検証パターン3 • switch configuration

    PFCを動作させる priority は Traffic Class とのマッピングから決定
  51. © LY Corporation 68 ECN+PFC と PFCのみの⽐較 検証パターン3 トラフィックを流していない状態では MapReduce

    → PFCのみが最も短い、Tez →ほとんど差はない 46.7 47.0 46.5 41.5 41.6 39.7 147.9 144.2 142.5 113.3 114.0 114.6 0 50 100 150 200 Compute Node ECN Compute Node ECN+PFC Compute Node PFCのみ Compute Node ECN Compute Node ECN+PFC Compute Node PFCのみ Compute Node ECN Compute Node ECN+PFC Compute Node PFCのみ Compute Node ECN Compute Node ECN+PFC Compute Node PFCのみ ジョブ実⾏時のTraffic なし ジョブ実⾏時のTraffic あり ジョブ実⾏時のTraffic なし ジョブ実⾏時のTraffic あり MapReduce Tez Job Completion time [sec] ECN / ECN+PFC / PFC ⽐較 10GB 200GB (data size) ※ ジョブの完了時間は複数回実⾏した平均値
  52. © LY Corporation 69 ECN+PFC と PFCのみの⽐較 検証パターン3 トラフィックを流している状態ではフレームワークによって差がある MapReduce

    → PFCのみが⼀番⻑い、Tez → PFCのみが⼀番短い 56.0 56.1 58.4 51.3 50.6 49.9 174.3 176.0 181.3 141.3 144.3 134.0 0 50 100 150 200 Compute Node ECN Compute Node ECN+PFC Compute Node PFCのみ Compute Node ECN Compute Node ECN+PFC Compute Node PFCのみ Compute Node ECN Compute Node ECN+PFC Compute Node PFCのみ Compute Node ECN Compute Node ECN+PFC Compute Node PFCのみ ジョブ実⾏時のTraffic なし ジョブ実⾏時のTraffic あり ジョブ実⾏時のTraffic なし ジョブ実⾏時のTraffic あり MapReduce Tez Job Completion time [sec] ECN / ECN+PFC / PFC ⽐較 10GB 200GB (data size) ※ ジョブの完了時間は複数回実⾏した平均値
  53. © LY Corporation 70 ECN+PFC と PFCのみでのPFC Counterの違い (Trafficを流している状況でのジョブ実⾏時) 検証パターン3

    ECNを設定することで、PAUSEフレームの送信が抑えられていることを確認 ECN + PFC PFC のみ
  54. © LY Corporation • Shallow Buffer + ECN + PFC

    • ECNを利⽤することでPFCのカウンター増加を抑えることができる • Shallow Buffer + PFC • PFCのみでもQueue Dropsに効果があるが、In Discards が発⽣するようなった • PFC単独利⽤のケースは考えにくいため無視できると考える(原因未調査) • PFCを利⽤する場合、ECNと組み合わせて使うのが良いと考えられる • PFC stormによるデッドロック回避のためwatchdogの設定が必要になる可能性がある(未検証) 72 結果と考察 検証パターン3
  55. © LY Corporation 74 サーバの輻輳制御アルゴリズムの違いでの⽐較 検証パターン4 トラフィック流していない状態では MapReduce → ほとんど差がない、Tez

    → DCTCPの⽅が若⼲短い 46.5 48.6 39.7 41.8 150.7 151.5 115.3 110.4 0 20 40 60 80 100 120 140 160 180 200 H-TCP DCTCP H-TCP DCTCP H-TCP DCTCP H-TCP DCTCP ジョブ実⾏時のTraffic なし ジョブ実⾏時のTraffic あり ジョブ実⾏時のTraffic なし ジョブ実⾏時のTraffic あり MapReduce Tez Job Completion time [sec] 10GB 200GB (data size) ※ ジョブの完了時間は複数回実⾏した平均値
  56. © LY Corporation 75 サーバの輻輳制御アルゴリズムの違いでの⽐較 検証パターン4 トラフィック流してる状態では、DCTCPの⽅がジョブ完了時間が⻑い 56.0 59.3 50.3

    53.9 176.3 193.3 138.7 149.0 0 20 40 60 80 100 120 140 160 180 200 H-TCP DCTCP H-TCP DCTCP H-TCP DCTCP H-TCP DCTCP ジョブ実⾏時のTraffic なし ジョブ実⾏時のTraffic あり ジョブ実⾏時のTraffic なし ジョブ実⾏時のTraffic あり MapReduce Tez Job Completion time [sec] 10GB 200GB (data size) ※ ジョブの完了時間は複数回実⾏した平均値
  57. © LY Corporation • Shallow Buffer + ECN + DCTCP

    • 検証パターン1のShallow Bufferと⽐較してQueue Dropsや輻輳を多少抑えることができた • 検証パターン2のShallow Buffer + ECN + H-TCPよりQueue Dropsや輻輳が発⽣している • 仮説を⽴てているが調査中 • 我々のHadoopではH-TCPの⽅が適している可能性 • 想定外の通信(ECNが設定されていないノードとの通信)が発⽣した影響の可能性 77 結果と考察 検証パターン4
  58. © LY Corporation 78 DCTCPでQueue Dropsが発⽣した原因の深掘り 検証パターン4 • サーバの通信を確認したところ、DCTCPではない通信があった •

    想定していないData Nodeとの通信 • 想定していないData Nodeとの通信 • HadoopジョブのログをHDFSへアップロードするために発⽣した通信と判明 • 検証⽤のジョブのログのアップロード先を考慮にいれていなかった • そのため、ECNとDCTCPの設定がされていないData Nodeにアップロードされた ECNの設定差異により、Queue Drops などが発⽣した可能性
  59. © LY Corporation 79 DCTCPでQueue Dropsが発⽣した原因の深掘り 検証パターン4 • DCTCPを設定したCompute Node

    のみの通信に絞って発⽣させてみたところQueue Dropsの 発⽣状況にあまり変化はなかった • 我々のHadoopでは、H-TCPの⽅が性能が良い可能性 • 今回のECN設定対象ではない、管理系ノードとの通信(メタデータの通信)で DiscardsやQueue Dropsなどが発⽣している可能性
  60. © LY Corporation 81 Summary 検証結果 ⽅式 Queueの利⽤状況 ジョブ完了時間 1

    Deep Buffer • 負荷が⾼い状態でもDiscardsや Queue Dropsなどを抑えることができた • 短い • ⻑い 2 Shallow Buffer (Host Only, Non-ECN) • 負荷が⾼い状態でDiscardsやQueue Dropsなどが 頻繁に発⽣した • ⻑い • 短い 3 Shallow Buffer (ECN Only) • 負荷が⾼い状態でもDiscardsや Queue Dropsなどを抑えることができた • 1と同程度 • 2と同程度 4 Shallow Buffer (ECN + PFC) • ECNを利⽤することでPFCカウンターの増加を 抑えることができた • PFCのみでもQueue Dropsを抑えることができた • 1と同程度 • フレームワークによって 差異あり 5 Shallow Buffer (ECN + DCTCP) • 3と⽐較して、Queue Dropsなどが発⽣ • 3よりも短い • 3よりも⻑い
  61. © LY Corporation 82 検証結果と照らし合わせて 考察 ⽅式 検証で確認できたこと Deep Buffer

    • ジョブ完了時間が⻑くなる傾向あり • ホスト側に設定が不要でフローの区別を運⽤者で⾏う必要がない利点がある Shallow Buffer ‒ Host Only • 輻輳時にQueue Dropsなどが発⽣する • job completion timeに影響はなく、Deep Bufferと⽐較し、実⾏時間が 最⼤で8%短くなった Shallow Buffer ‒ NW Assisted • ECNを有効にすることで輻輳を抑制できる • ⾃社の環境に合わせたチューニング(選択)をする必要がある • job completion timeに影響はなく、Deep Bufferと⽐較し、実⾏時間が 最⼤で10%短くなった
  62. © LY Corporation 83 これからのデータセンターネットワークが⽬指す形 (再掲)課題とモチベーション 課題 • ⽤途別の専⽤構成が乱⽴しインフラがフラグメント化、構築・運⽤のコストが増加している •

    ⼤容量なバッファを持つ機器を運⽤しているが、 そのコストの妥当性が不明 • LossyなNWでも異なる機器や設定を運⽤しなければならないことの負荷が⼤きい 我々のモチベーション • ハードウェアや構成・設定のバリエーションを増やしたくない • 可能な限り構築・運⽤のコストパフォーマンスの⾼い標準構成を定義したい • 今後の機種選定やconfiguration, コスト算出の根拠となるデータが欲しい
  63. © LY Corporation 我々のモチベーション • ハードウェアや構成・設定のバリエーションを増やしたくない • 可能な限り構築・運⽤のコストパフォーマンスの⾼い標準構成を定義したい • 今後の機種選定やconfiguration,

    コスト算出の根拠となるデータが欲しい 検証を通して、 • 特定⽤途向けのハードウェアを選択する必要性がなくなる可能性が⾼い • その場合、特定⽤途向けの設定が必要になるトレードオフが発⽣する • Frontend Fabricの構成については標準化できる⾒込みがたった 84 これからのデータセンターネットワークが⽬指す形 実現に向けて
  64. © LY Corporation • ECNがあるネットワークの運⽤実績を蓄積する • ネットワークのいまの状態をより深く・詳細に⾒える化する • バッファ使⽤状況、ECMP-way ..etc

    • 今回は既存のTCP環境を対象にしたが次は Lossless Ethernet を対象に検証を⾏いたい • 今回の検証の知⾒がこれから必要な要求にも活⽤可能と考えている • Fabric側の輻輳対策技術と組み合わせる 86 データセンターネットワークのこれから 今後
  65. © LY Corporation • 今後のデータセンターネットワークに求められる構成や技術について • 複数のワークロードが混在するネットワークをどのように運⽤していけば良いか • データセンターネットワークでどのような輻輳制御・対策を実施していますか? •

    ネットワーク機器のバッファ監視・可視化をしてますか? • ECNやPFCの閾値はどのように、何を根拠に決定していますか? • サーバ(のNIC)とネットワーク機器がこれまで以上に密接に連携する時代が来ていると思います が、運⽤で困ったことありませんか? • 問題になったケースや痛い⽬に合った経験談など 88 議論したいポイント 議論
  66. © LY Corporation 90 Deep Buffer と Shallow Buffer の⽐較

    (ECN設定なし) 検証パターン1 10GB 200GB MapReduce ジョブ実⾏時のTraffic なし Deep Buffer 46.1 148.4 Shallow Buffer 45.4 148.4 ジョブ実⾏時のTraffic あり Deep Buffer 70.4 193.6 Shallow Buffer 55.4 178.5 Tez ジョブ実⾏時のTraffic なし Deep Buffer 39.4 104.9 Shallow Buffer 42.9 106.3 ジョブ実⾏時のTraffic あり Deep Buffer 59.0 142.7 Shallow Buffer 48.8 139.7 (sec) (sec) ※ ジョブの完了時間は複数回実⾏した平均値
  67. © LY Corporation 91 Compute Node ECN 設定の有無の⽐較 検証パターン2 10GB

    200GB MapReduce ジョブ実⾏時のTraffic なし ECN設定なし 45.4 148.4 Compute Node ECN設定あり 46.7 147.9 ジョブ実⾏時のTraffic あり ECN設定なし 55.4 178.5 Compute Node ECN設定あり 56.0 174.3 Tez ジョブ実⾏時のTraffic なし ECN設定なし 42.9 106.3 Compute Node ECN設定あり 41.5 113.3 ジョブ実⾏時のTraffic あり ECN設定なし 48.8 139.7 Compute Node ECN設定あり 51.3 141.3 (sec) (sec) ※ ジョブの完了時間は複数回実⾏した平均値
  68. © LY Corporation 92 ECN+PFC と PFCのみの⽐較 検証パターン3 10GB 200GB

    MapReduce ジョブ実⾏時のTraffic なし Compute Node ECN 46.7 147.9 Compute Node ECN+PFC 47.0 144.2 Compute Node PFCのみ 46.5 142.5 ジョブ実⾏時のTraffic あり Compute Node ECN 56.0 174.3 Compute Node ECN+PFC 56.1 176.0 Compute Node PFCのみ 58.4 181.3 Tez ジョブ実⾏時のTraffic なし Compute Node ECN 41.5 113.3 Compute Node ECN+PFC 41.6 114.0 Compute Node PFCのみ 39.7 114.6 ジョブ実⾏時のTraffic あり Compute Node ECN 51.3 141.3 Compute Node ECN+PFC 50.6 144.3 Compute Node PFCのみ 49.9 134.0 (sec) (sec) ※ ジョブの完了時間は複数回実⾏した平均値
  69. © LY Corporation 93 サーバの輻輳制御アルゴリズムの違いでの⽐較 検証パターン4 10GB 200GB MapReduce ジョブ実⾏時のTraffic

    なし H-TCP 46.5 150.7 DCTCP 48.6 151.5 ジョブ実⾏時のTraffic あり H-TCP 56.0 176.3 DCTCP 59.3 193.3 Tez ジョブ実⾏時のTraffic なし H-TCP 39.7 115.3 DCTCP 41.8 110.4 ジョブ実⾏時のTraffic あり H-TCP 50.3 138.7 DCTCP 53.9 149.0 (sec) (sec) ※ ジョブの完了時間は複数回実⾏した平均値
  70. © LY Corporation 95 Deep Buffer と Shallow Buffer の⽐較

    (ECN設定なし) 検証パターン1 46.1 45.4 70.4 55.4 39.4 42.9 59.0 48.8 148.4 148.4 193.6 178.5 104.9 106.3 142.7 139.7 0 50 100 150 200 Deep Buffer Shallow Buffer Deep Buffer Shallow Buffer Deep Buffer Shallow Buffer Deep Buffer Shallow Buffer ジョブ実⾏時のTraffic なし ジョブ実⾏時のTraffic あり ジョブ実⾏時のTraffic なし ジョブ実⾏時のTraffic あり MapReduce Tez Job Completion time [sec] 10GB 200GB (data size)
  71. © LY Corporation 96 Compute Node ECN 設定の有無の⽐較 検証パターン2 45.4

    46.7 55.4 56.0 42.9 41.5 48.8 51.3 148.4 147.9 178.5 174.3 106.3 113.3 139.7 141.3 0 50 100 150 200 ECN設定なし Compute Node ECN設定あり ECN設定なし Compute Node ECN設定あり ECN設定なし Compute Node ECN設定あり ECN設定なし Compute Node ECN設定あり ジョブ実⾏時のTraffic なし ジョブ実⾏時のTraffic あり ジョブ実⾏時のTraffic なし ジョブ実⾏時のTraffic あり MapReduce Tez Job Completion time [sec] 10GB 200GB (data size)
  72. © LY Corporation 97 ECN+PFC と PFCのみの⽐較 検証パターン3 46.1 45.4

    46.7 70.4 55.4 56.0 39.4 42.9 41.5 59.0 48.8 51.3 148.4 148.4 147.9 193.6 178.5 174.3 104.9 106.3 113.3 142.7 139.7 141.3 0 50 100 150 200 Deep Buffer ECN設定なし Shallow Buffer ECN設定なし Compute Node ECN設定あり Deep Buffer ECN設定なし Shallow Buffer ECN設定なし Compute Node ECN設定あり Deep Buffer ECN設定なし Shallow Buffer ECN設定なし Compute Node ECN設定あり Deep Buffer ECN設定なし Shallow Buffer ECN設定なし Compute Node ECN設定あり ジョブ実⾏時のTraffic なし ジョブ実⾏時のTraffic あり ジョブ実⾏時のTraffic なし ジョブ実⾏時のTraffic あり MapReduce Tez Job Completion time [sec] 10GB 200GB (data size)
  73. © LY Corporation 98 サーバの輻輳制御アルゴリズムの違いでの⽐較 検証パターン4 46.5 48.6 56.0 59.3

    39.7 41.8 50.3 53.9 150.7 151.5 176.3 193.3 115.3 110.4 138.7 149.0 0 20 40 60 80 100 120 140 160 180 200 H-TCP DCTCP H-TCP DCTCP H-TCP DCTCP H-TCP DCTCP ジョブ実⾏時のTraffic なし ジョブ実⾏時のTraffic あり ジョブ実⾏時のTraffic なし ジョブ実⾏時のTraffic あり MapReduce Tez Job Completion time [sec] 10GB 200GB (data size)