超高速Flash Storage Systemへの挑戦~DSSD D5の設計について、Andy Bechtolsheimへのインタビュー[後編]

Flash Moduleと接続ケーブル

取材では取り出したFlash Moduleを見せてもらいました。外側はアルミで覆われており、ちょっと重い感じです。モジュール内部ではFlashチップが直接このアルミの外板に接触しています。これを19inchラック幅いっぱいに並べるのですが、彼らはフラッシュメモリの実装厚みを計り、排熱のために空気が通り抜ける隙間を合わせてモジュールの枚数を 36 と決定したようです。

風が通る隙間を空けて配置されるFlash Moduleとそれを上下にはさむコントローラユニット
風が通る隙間を空けて配置されるFlash Moduleとそれを上下にはさむコントローラユニット
  • Andy:外側はヒートシンクになっています。全体に並列にアクセスするために熱くなるんです。Flash自体はローパワーなのですが、ミリオン単位のIOPSを受けるとフラッシュチップとコントローラのチップを合わせて、50Wになるんです。

  • 筆者:うお……(50W×36モジュールで1.8KWにもなります)

  • Andy:性能のためです。もしI/Oがなければほとんどゼロなんですが。つまりハイパフォーマンスがこれだけのパワーを持っていくのです。D5 1つで最大3,000W。通常動作時はこの半分と思えば良いでしょう。タダでハイ・パフォーマンス、というのは存在しないんだよ(ははは)

  • 筆者:まあ3KWでもいいでしょう。HPCの世界ではそういったことが起きていますし、最近のアプリケーションは徐々にHPCに近づいていますからね。

  • Andy:そのとおり。多くのHPC(企業)や政府がそう考えていると思います。ともかくこれが業界で初めてのdual portでhot swap可能なNVMeモジュールです。バッテリはなく、スーパーキャパシタが入っており、これで書き込み途中に電源喪失があってもデータを最後まで書けます。現在D5には4TバイトのFlash Moduleが用意されていますが、次の18ヵ月で倍に上げていきます。

    このFlash ModuleはDSSD専用のものですが、HBAとケーブルもやはりDSSD製です。HBAはPCIeブリッジチップが1つ載っているだけで、それほど特別なものではないと思われますが、筆者が驚いたのはむしろそのケーブルです。持ってみるとPCIe gen3 4 laneを通すとは思えないほど細くしなやかで、見るからに小さなそのコネクタにパッと見て数えるのが困難なほど細かなピッチでピン接点が並んでいます。

  • 筆者:このケーブルですが……

  • Andy:ケーブルは特別製です(Andyは質問の途中で答える傾向がある。負けずに質問を続けなければなりません⁠⁠。

  • 筆者:とても細いですね。距離について気にしているんですが。

  • Andy:接続できるのは1ラックです。光ファイバについて探しています。それで30mかそれ以上まで届きますが、しかし今は(銅線のケーブルで)とにかく1ラック距離です。

  • 筆者:なるほど。ちょっと気にしていました。というのもユーザは大きなサーバを使いたかったりします(1ラックに入るサーバの数は限られている⁠⁠。

  • Andy:そう、だから2ラック目にも(なんとか)届く。つまり左右隣のラックにサーバを置いてそこに届くようにすることはできます。

写真の上端にHX-2と書かれているのがHBAカードです。P1、P2と2つのポートにコネクタが挿し込まれているのが見えています。写真下側のオレンジの蓋がしてあるところがケーブルの反対側の挿し込み口、つまりファブリックのポートです。19inch ラックに48ポート、これだけ余裕を持って並べることができています。いかに細いコネクタとケーブルなのかわかると思います。

HBAカードと各種ポート
HBAカードと各種ポート

Multicast RDMA

ディスクアレイで利用されているRAIDなど、データ保全のために冗長な書き込みを行うのは一般的なことです。D5ではFlash Arrayに適したエラーリカバリ技術としてCubic RAIDと呼ばれる方法を開発してデータ保全を図っています。

が、Cubic RAIDについては情報が多くある[1]ので本稿では取り上げません。Cubic RAIDのこともいくらか聞いたのですが、そこでおもしろかったのはAndyがCubic RAIDのリカバリ手法を「SUDOKU(数独)みたいでしょ?」と言ったことでしょうか。一瞬何のことかわからず混乱しましたが、すぐにあまりにもうまい表現だと思って大笑いしました。

さて、筆者が興味があるのはDSSDのもう1つのトリック、Multicast RDMAです。DSSDは多くの特許申請をしていますが、その1つにMulticastを用いたRDMAがあり[2]⁠、これによって冗長書き込みを果たしていると思われました。

  • 筆者:私の理解ですが、Multicast RDMAってのは業界で初めてではないですか?

  • Andy:そのとおりです。シリコン(FabricのPCIeスイッチチップ)には(以前から)導入されていたのですが、今まで誰も使ったことがなかったのです。まず、データを書き込むと、1つはコントローラのDRAMに書かれ、それ以外にもコピーが2つFlash Moduleに作られます。しかし我々は複数回の転送を行いません。データをPCIe Fabricに入れて、これらのコピーを並列にFlashに書きます。

この説明で、どこかでデータストリームをMulticast経路に入れることはわかります。ただし、それは名称からしてほぼ自明です。筆者の興味はその先にありました。

  • 筆者:OK、ただ私はスイッチレイヤでのオーバーサブスクリプションが気になるのです。

  • Andy:いや、これ(Multicasting)はLower Layerで行われます[3]⁠。

  • 筆者:どこですか?

  • Andy:Flash Module に直接つながれているところ図2参照)です。ここで複製されるのであって、上の PCIe Switch では行われません。

図2 Multicast RDMAにおけるデータストリームの複製
図2 Multicast RDMAにおけるデータストリームの複製

なるほどこの位置での複製であれば、パケットのロストは生じないでしょう。つまり、下側のPCIeブリッジチップはクロスバースイッチとしてCut and Throughをするのですから、 Multicast動作をしたときに片方のポートでだけオーバーサブスクリプションが生じることはありません。

D5の設計上の工夫は、サーバとFlash ModuleをノンブロッキングなPoint to Pointで直結し、PCIeのRDMAによる高帯域と低遅延を最大限利用することに集中しています。そのゴールに対してデータの冗長書き込みは厄介な問題の1つなのですが、DSSDはこれをPCIe Fabricに眠っていた機能を更に踏み込んで利用することで解決しているわけです。

なお、コントローラのDRAM総量はもちろん100Tバイトもありませんから、そこへの書き込みは一時的なものであるはずです。この筆者の想像を裏付けるものとして、Cubic RAIDによる保護が安定するまでの一時的なものと読める説明があります[4]⁠。

取材でもCubic RAIDのCheck-sum領域の計算と書き込みは事後(lately)に行われると説明されていましたから、それが完了するまでの一時的な存在と考えられます。なお、D5の100Gバイト/sec帯域はreadに関する数字で、writeは20Gバイト台であるとJeff BonwickがMSST 2016のQAで答えています[5]⁠。コントローラCPUへのPCIe接続の総帯域は 48GB/sec あると思われるので、それで充分ということでしょう。

スタートアップストーリー

AndyはDSSDに起業のときから関わっています。やたらに技術的なことばかり聞いてきたので、最後にスタートアップのときの様子を聞きました。

  • 筆者:スタートアップの経緯を聞かせてください。

  • Andy:2010年にOracleがSun Microsystemsを買収しました。このときDSSDの創業者であるBill Mooreが、他に4人のソフトウェアエンジニアと一緒にSunを離れました。とても革新的な製品を作るためにね。我々はこのPCIeとNVMeを完全にミックスする企業を立ち上げたのです。当時NVMeはまだよく定義されていませんでしたが、そのパフォーマンスのポテンシャルがとても高かったからです。

    そこでの興味深い技術的チャンレジは、ハードウェアがアプリケーションにパフォーマンスを届ける、ということでした。デバイスとデバイスドライバ間のビットレベルのコーディングといったレベルからやるのです。いまどき、たとえば、GoogleとかSNSの会社などではそういうことをする人はそう多くないんですけどね。でもSunのエンジニアたちには性能を出すためにならデバイスドライバやデバイスハッキングをするのが好きな人がいるんですよ(笑)

    Jeff Bonwick、Bill Mooreと、Sunから来た何人かのキーエンジニアはSunのZFSファイルシステムやSolarisでのI/O処理のこと、つまり通常のシステムにおける入出力処理スタックのことをとてもよく理解しています。そこから得た結論は、つまりこれに最もフィットするのはI/Oスタックをバイパスすることだ、ということでした。

    ところで我々は結局シリコン、つまりチップの設計をしませんでした。というのも、2010年に始めたとしても動き出すのは2013年になってしまって、とても時間が掛かります。そのときに必要となるパフォーマンスの予測がとても難しいのです。

  • 筆者:そのデザインで最も技術的に困難だったところは何ですか?

  • Andy:多くのイシュー(解決すべき事項)がありました。というのも、すべてをスクラッチでやりましたからね。だから次のバージョンは比較的早くできあがると思います。もしあなたが初めて、まったく新しいアーキテクチャをやるとなったら、あなたは考えられる限りのありとあらゆる問題に当たらなければならないんですよ。

    それでも最大のイシューはパフォーマンスでした。我々はハードウェアそのものがパフォーマンスを出せることはわかっていたんです。つまりロックなしのマルチスレッドのI/Oシステムの実装がパフォーマンスをアプリケーションまで届けることが鍵でしたが、そのようなソフトウェアを誰も作っていなかったのです。トータルでのパフォーマンスを得るために、我々のシステムは潜在的には1,000とか10,000のパラレルストリームがこの箱に同時に流れ込むようなことができるものです。

  • 筆者:PCIeによるスイッチファブリック自体は開発したのですか?

  • Andy:そこもシリコンについては動くものがありました。すべてのチップは新しい製品ですが、とにかくそれまで誰一人として、このサイズでのファブリックを作れた者はいなかったのです。そのためにすべてのアーキテクチャはスクラッチから作りました。きつい仕事(heavy lifting)でしたね(ははははは)

  • 筆者:何人くらいでスタートしたのですか?

  • Andy:初期は20~30人でした。すぐ50人になって、いま250人ほどです。これはまあEMCからの大きな投資があってこそなんですが。

  • 筆者:主たるアイディアや目的はあなたから出たものですか?

  • Andy:いや、私からではありません。クリアにしておきましょう。ファウンダは他のソフトウェアアーキテクチャの人たちです。私が関わったのはハードウェアコンセプトと、ハードウェア設計そのものです。

    また、私は将来使えるようになるシリコン(チップ群)のことをよく知っていました[6]からね。ともかく私が寄与したのはすべてハードウェアに関することです。すべてのソフトウェアについては、Bill Moore、Jeff BonwickとMike Shapiroなど他の人たちによって行われました。

    ともかく私はこの技術にとても興味がありました。というのは、これがとても広い技術範囲をカバーしていたからです。そして当初とても不可能に思えた大規模な並列処理を実現しました。これが最高のパフォーマンスを得る方法なのです。

本稿でこれまで説明したように、DSSDは真に「DMAの帯域を邪魔するものをすべて取り除く」ためにすべてを設計しなおした、と言えます。そして筆者の理解では、D5設計の最大のポイントは、そのために必要な、ありとあらゆる設計要件をそれぞれ合理な配置に収め切ったことにあると考えられます。エンジニアリング至上主義、とも言うべき合理性の追求です。

そうした工夫はまだまだあります。たとえば、Flash Memoryへのアクセスに詳しい人ならFTL(Flash Translation Layer)をどうしたか気になるでしょう。D5 では FTL は Flash Module には存在せず、コントローラの DRAM 中に存在します(キャッシュされています⁠⁠。通常、FTL は Flash 上に存在するため、Flash Memory へのアクセスは実際上、二度のアクセスを発生させる恰好になるのですが、D5 ではそれは生じず、低遅延なアクセスに貢献しています。そして本稿で示したように、そもそも D5 ではすべての I/O は一度コントローラにリクエストを出しますから、そこに FTL があるのはとても合理なことだと考えられます。この合理性に関する Andyの印象的な説明をもうひとつ出します。

  • Andy:いま誰でもNVMeのPCIe Flash Cardを買うことができますが、それらはサーバにローカルに接続されます。するともしサーバが故障したらデータにアクセスできなくなります。そこで我々はこのインターフェースをFabricに取り出して、サーバがもはやFlashを持たないようにしました。その結果、Flashメモリはバーチャルなプールになります。そうすることで(そこに高い並列度でアクセスすることが可能になり⁠⁠、高い性能が得らるようになりました。

つまり、1つのデザインチョイスは決して単独では存在せず、それを選択することが連鎖的に別のことを解決します。逆にそうなるような解をチョイスする、ということでしょう。筆者はAndyが設計に関わったハードウェアをいくつか見ています。Sun Streaming System(コードネームStreamStar⁠⁠、Aristaのスイッチ(とくにシングルチップではない7100や7500)など、それらは合理性の塊(かたまり)のようなものばかりで、D5も同様にパズルのピースがどれも合理的にピタッとおさまっている感触があります。

筆者は長くコンピュータシステムを見ていますが、その興味は常にアーキテクチャとデザイン・チョイスにあります。Andyの設計はまさに「作品」と呼べるもので、真にアーキテクトの存在価値を感じさせてくれます。こうした製品が現れて世の中を変えていくところを目撃できるのがコンピュータ・エンジニアの幸せというものですね。

DSSDの社屋。表にはDSSD社を示すものは何もなし。奥の入り口(写真中央あたり)は通りから見えない
DSSDの社屋。表にはDSSD社を示すものは何もなし。奥の入り口(写真中央あたり)は通りから見えない

おすすめ記事

記事・ニュース一覧