ソフトウェアのオーバーヘッドを徹底的に取り去る
こうしたハードウェアのアーキテクチャをベースに、ソフトウェアでも大きなオーバーヘッドを解消する取り組みが行なわれた。
D5に搭載された32コアのCPUで10万IOPSを実現するためには、1コアあたり3125IOPSになるため、1つのI/Oあたり320マイクロ秒を達成しなければならない。しかし、実際は数千のインタラクションと複数のキャッシュを扱わなければならず、320マイクロ秒を実現するのはきわめて難しい。
320マイクロ秒のI/Oを実現するため、DSSDでは可能な限りソフトウェアレイヤーをそぎ落とした。「従来のI/Oスタックでは、ソフトウェアからライブラリ、ファイルシステム、カーネルなどを通り抜けて、ハードウェアに到達し、さらに数多くのファームウェアを経由する必要があった」(ボンウィック氏)。これに対して、DSSDでは数多くのレイヤーをライブラリとして統合し、PCIeを使って、DMAポートから直接ハードウェアに入れるように工夫を施した。PCIeとクライアントのメモリに存在するキューの管理やポーリングモデルに対しても最適化を施し、マイクロ秒単位で遅延を短くしてきた。
「SSDの読み込み速度は基本的に同じで、フラッシュチャネルの転送やDMAも非常に短い。しかし、ファームウェアは10マイクロ秒、ソフトウェアは100マイクロ秒かかっていた。われわれはソフトウェアを改良し、ソフトウェアを3マイクロ秒にまで縮め、フラッシュチャネルや3D NANDも高速なものを採用やファームウェアも最適化した。この過程がもっともタフだった」とボンウィック氏は振り返る。
最新のDSSDでは1980年代のHDDベースのシステムに比べて、キャパシティを2000万倍に引き上げつつ、帯域を2万倍、IOPSを20万倍まで伸ばし、計算処理に追いつくよう設計されている。次世代のNVMになると、遅延は1桁マイクロ秒のレベルになる」とボンウィック氏は語る。
マルチディメンジョンRAIDでフラッシュのセル障害に対応
こうした性能面でのアドバンテージはもちろん、DSSDではフラッシュの障害対策にも配慮されている。「HDDは突然壊れてしまうが、フラッシュはその構造上、時間の経過と共にゆっくり劣化(デグレ)していくことになる。フラッシュのセルはランダムに壊れていく」とボンウィック氏は指摘する。これに対して、DSSDは1万8000のNANDのダイを管理することで、新しいデータ保護を実現している。
HDD単体の故障を前提とした従来型のRAIDに対し、DSSDでは異なるRAIDを複数組み合わせるマルチディメンジョンRAIDを導入。1つのセルに対して、モジュールの行と列の2方向で冗長構成をかけることで、2つ以上のセル障害に対してもデータのリカバリが行なえる。ボンウィック氏は、「縦方向で3箇所のセル障害が起こっても、数独のようなアプローチで横方向から回復させることができる。フラッシュのようにセル障害が分散する場合は、ほとんどカバーできる」と語る。
●
ストレージにおけるI/Oの課題に真正面に向き合った結果として、ハードウェアとソフトウェアまで含めて、アーキテクチャを抜本的に作り直したDSSD。ディープな説明を聞けば聞くほど、妥協のない開発姿勢には驚かされる。既存のオールフラッシュアレイとは異なる新しいコンピューティングを開拓していきそうだ。