「ディスアグリゲーデッドコンピューティング」とは何か? (3)

執筆者 : 佐藤 友昭


タイトルは前回からの流れということで”「ディスアグリゲーデッドコンピューティング」とは何か? (3)” とした。

前回、「次回はGigaIO FabreX のRDMAネットワーキングの試用か、DPUがあると何が嬉しいのかの考察について書きたいと思っている」と書いた。 前者はまだ試せていないので後者について書きたい。

今回、NVIDIA BlueField-2 DPUを2つの用途で試用した。

2つの用途はいずれもDOCAフレームワークを使用するものではなく、DPUをRNIC(ConnectX)を搭載した Linuxノードとして使用している。

DPUの有無による効果を見るために、サーバにRNIC(ConnectX)を搭載し、あるタスクをVM上で行う従来構成と、VMは起動せずにタスクをDPU上で行う(オフロードする?)構成とで性能を比較した。 諸般の事情で詳細は省略するが、結論としてはVMでもDPUでも同様の性能となった。 DPUのCPU性能はホストのCPU性能に劣るものの、ネットワーク通信にTCPよりも軽量なRDMAを使用している限り、ホスト上のタスクをDPU上にオフロードすることが性能上も可能であることが確認できた格好である。 参考までに、今回使用した NVIDIA BlueField-2 DPUは25GbE製品なので通信バンド幅は25Gbpsが上限であるが、ホストとローカルDPU間のRDMA通信に限ってはピークバンド幅はその2倍以上(レイテンシは1/2以下)となった。

以降、あえて妄想めいたことを書くが御笑読いただければ幸いである。

筆者の想像している「ディスアグリゲーデッドコンピューティング」は、クラウドの進化版である。

筆者の想像している「ディスアグリゲーデッドコンピューティング」

現在のクラウドの構成要素は「サーバ」が一般的だと思うが (図左)、これを「部品」レベルに細かくしたもので、シリコンフォトニクス等の技術的ブレークスルーによってそれが可能になる、と。

使い方のイメージとしては、まずユーザが実行したいと考えるジョブがあり、そのジョブを実行するのに必要なマシンのスペックがある。

次に、必要なマシンスペックに応じて物理マシンを作成する。

このとき、物理マシンを構成するのに最適な「部品」をプールから選択して物理マシンを組み立てる。例えば、薄いオレンジ色のマシンでは、本来GPUとSSDを大量に必要とするジョブを動かすとする。現状では図左の固定的なラインナップから選択するしかないが、筆者の想像する「ディスアグリゲーテッドコンピューティング」では、図右のようにプールから必要なだけのGPUやSSDを選択し、マシンを構成することができる。

実際にジョブを実行し、終わったら物理マシンを解体し、「部品」をプールに返却する。

上記をクラウドにおける仮想マシンのような操作性で実現するものが筆者の想像している「ディスアグリゲーデッドコンピューティング」である。

「仮想マシンのような」と書いたが、ユーザから見えるのは従来同様の仮想マシンかもしれない。仮想マシン上でこれまでと同じOSで同じアプリケーションが使用できる。ハイパーバイザーの管理下に置かれるハードウェアがこれまでのように固定的ではなく、日々プールに新たな部品が追加されるイメージである。

このとき「部品」の選択がキモになると思われる。

インタコネクトの性能次第で部品を配置可能な距離は長くすることができ、地理的な広がりが大きくなれば管理する部品点数は多くなるし、管理する部品の属性も多岐に渡る可能性がある。 部品と部品の距離も重要な属性となる。ジョブの実行に必要なデータを格納したストレージ部品(以降、データ部品と呼ぶ)とプログラムが走行するプロセッサ部品(以降、SoC部品と呼ぶ)は物理的に近くにあるものを選択した方がデータ転送を省略できるので効率がよい。 むしろ、リアルタイムデータの増加に対応するためのアプローチとして登場してきたのが「ディスアグリゲーデッドコンピューティング」であるという見方をするべきかもしれない。

また、部品のコスト(使用料?)も属性の一つとなるかもしれない。例えばメモリ部品は性能とコストによって階層を構成し、性能要件とコスト要件のバランスで複数の階層から性能の異なる部品を論理的に1つのアドレス空間に統合するようなイメージである。 GPUなどについても然り。コスト要件の許す範囲でできるだけ性能要件に近づけるべく一時的に多数のGPUをかき集めてジョブを実行するようなユースケースもありそうな気がする。

NVIDIA BlueField-2 DPUをはじめとするDPUは、こういう「ディスアグリゲーデッドコンピューティング」環境で価値を発揮する SoC部品の一つであると筆者は思う。 つまり、データを格納したストレージからインタコネクト的に有利なDPUを選択でき、そこでプログラムを実行してデータを加工したり、さらに外部ネットワークからアクセスできるようにしたい場面で真価が発揮されるのではないだろうか。

現状のNVIDIA BlueField-2 DPUは高速なRNICを搭載していることで高速なデータ転送を得意とするものであるが、これはDPU上のCPU性能の(ホストCPU性能に対する)低さを軽量なRDMA通信を使用することで補い、ホストからDPUへのタスクのオフロードを現実的にするための工夫と思われる。そのことよりも SoC部品の形態をとっていること(データ部品の近くに配置されているSoC部品を選択できること)が将来「DPUがあると嬉しい」点をもたらすように思う。 というか、「ディスアグリゲーデッドコンピューティング」においては部品がどこにあるのかはユーザが知る必要はなく、A.I.なりが最適な部品を選択してくれるのであろうから、CPUのCは意味を失うような気もする。 DPUにおける RNICは「ディスアグリゲーデッドコンピューティング」で構成した物理マシンと外の世界を接続するためのものであろうから、むしろNIC部品の典型的な形態となるような気もする。 SoC全般を従来のCPUのポジションの部品と考えると、DPUはSoC部品とNIC部品を1つにして転送効率を最適化したものという感じだろうか。

今回使用した BlueField-2 は 8コアのARM プロセッサと 25Gbps の ConnectX-6 Dx のエントリー構成であるが、BlueField-2 製品ラインアップにはより高速(最大200Gbps)な ConnectX-6 Dx の構成や、さらにA30/A100 GPUを搭載したコンバージドアクセラレータ製品も存在し、各コンポーネントが一世代更新されたBlueField-3およびコンバージドアクセラレータ製品も既に存在する。 以前、当ブログで紹介したFabreX AIC Resource Boxに各構成のBlueField-2/3をインストールし、要件にあった構成を選択して使用するような使い方は現時点でも検証できるのかもしれない。機会があればぜひ試してみたい。

今回も何の参考にもならない記事であるが、ブログなので許して欲しい。

次回は何か試せたことか、OFMF(OpenFabrics Management Framework)について調べたことでも書きたいと思っている。 OFMFについては Youtube 上にもいくつかコンテンツが上げられており、「ディスアグリゲーデッドコンピューティング」の具体的な姿を垣間見せていると思う。

前回記事の補足

前回、「ブレークアウトケーブルというのは、ケーブルの一種で、一方がQSFP1個、他方がSFP4個になっているもので、1個のスイッチポート(QSFP)と4個のNICポート(SFP)を接続することができる。 また、既存のQSFPコネクタのConnextX-4/5/6と直結して使用するためにQSFP/SFPアダプタが要る。これは、SFPケーブルの一方に装着するもの。なお、ブレークアウトケーブルでSFPケーブル+QSFP/SFPアダプタを代用することができる」と書いたが、SFPケーブル+QSFP/SFPアダプタを使用した場合、リンク速度が10Gbpsに制約されることを付け加えたい。

つまり、現状はQSFP端子のRNICとSFP端子のRNICを直結して使用する場合もブレークアウトケーブルを使う必要がある(?)ということになる。

(そんなことないよ、という情報があれば教えていただけると助かります。)