RDMAの概要

RDMA Overview
レイテンシの問題はより困難です。なぜなら光速は不変であり、神に賄賂を贈ることはできないからです。— デビッド・クラーク

近年、ネットワーク帯域幅は大幅に向上しましたが、カーネルのパケット処理能力はそれほど向上していません。帯域幅のさらなる向上と低遅延化を実現するために、RDMAやDPDKといった技術が登場し、カーネルをバイパスして直接パケットを処理できるようになりました。本記事では、現在のRDMA関連技術の紹介、比較、およびいくつかの課題について解説します。

ハイレベルな概要

RDMA技術は基本的にトランスポート層をネットワークカード(NIC)にオフロードし、カーネルによるパケット処理を回避することで、CPUをクリティカルパスから排除します。その名の通り、あるデバイスが別のデバイスの仮想メモリに直接書き込むことを可能にし、制御された環境下で10ミリ秒程度の転送遅延を実現します。しかし、従来のRDMAには2つの大きな欠点があります:
  • RDMAをサポートするロスレスネットワーク、すなわちInfinibandが必要です。
  • そのため、環境にInfinibandスイッチと対応するネットワークカードを別途導入する必要があります。
より詳細なRDMAの紹介については、こちらをご覧ください邱牛の記事 RDMA入門

なぜEthernet上でRDMAを使用しないのか

朗報なのは、もちろんイーサネット上でRDMAを動作させることが可能だということです。現在、イーサネットにおけるRDMA技術は、RoCE (RDMA over Converged Ethernet) と iWARP (Internet Wide Area RDMA Protocol) の2つの主要な方式に分かれています。
RoCEはMellanoxによって提唱され、iWARPは主にIntelとChelsioによってサポートされています。しかし、現在これら2つの主要技術には、いくつかの大きな欠点が存在します。

RoCE vs iWARP

MellanoxによるiWARPとRDMAのネットワーク層の比較
iWARPは、TCP/IPスタック全体をNIC内に実装しているため、ロスレスネットワーク(lossless network)上で動作させる必要がありません。そのため、iWARP対応のネットワークカードに交換するだけで既存の環境でも非常に容易に導入できます。欠点は明白で、より複雑で高価なNICと比較すると、パフォーマンスが相対的に低いことです。

一方、RoCEはUDPプロトコルを使用しており、TCP/IPを使用するiWARPよりも速度が若干高速です。その反面、最適なパフォーマンスを得るには依然としてロスレスネットワークが必要であり、ロッシーネットワーク(lossy network)下でも使用は可能ですが、パフォーマンスは大幅に低下します。そこで、イーサネット上でロスレスネットワークを実現するためにPFC(優先度ベースのフロー制御)が登場しました。Microsoftは、データセンターのようなVLANのない環境でPFCを大規模にデプロイするために、L3でPFCを動作させるDSCPベースのPFCを設計しました。さらに、MicrosoftはSIGCOMM'16で、大規模デプロイされたRoCEにおけるライブロック、デッドロック、ポーズフレームストームなどの問題について検討した論文を発表しています。ロスレスネットワークはRoCEのパフォーマンスを保証する一方で、その複雑な設定が運用者の負担となっています。

RDMA vs DPDK

DPDKはRDMAと同様にカーネルをバイパスでき、ポーリングメカニズムを使用してパケットを取得することでCPU消費を抑えることができます。Mellanoxは、すべてのパケット処理が依然としてユーザ空間で行われるDPDKに対し、RDMAは処理の一部をNICにオフロードするため、依然としてRDMAの方が優れていると主張しています。しかし、RDMAもビジーポーリングとイベント駆動のいずれかのモードを選択する必要があり、前者はCPUリソースを多く消費し、後者はレイテンシが高くなるため、Mellanoxの主張は合理的ではないという意見もあります。

まとめ

多くのレポートが、RDMAはTCPと比較して顕著なパフォーマンス向上を実現できると指摘しています。しかし、最大の問題はプログラマビリティ、セキュリティ、デプロイ、および運用にあります。RDMAは管理面での複雑さから、大規模なデプロイにおいて依然として困難が伴います。結局のところ、いつもの結論になりますが、「最善の策」はなく、「最も適した策」があるだけです。これらのパフォーマンスを得るためにどれだけの犠牲を払う必要があるか、そしてそれに見合う価値があるかどうかは、デプロイ環境ごとに答えが異なります。

参考文献


著作権表示:このブログのすべての記事は、 CC BY-NC-SA 4.0 特に明記されていない限り、以下のライセンスが適用されます。

コメントを残す