どのようなソフトウェアだろうか?
Auto Commit Memoryとはどのような技術なのだろうか?Fusion-IOのプレスリリースを読むと、どうやらioDrive2 Duoにユーザープロセスから直接読み書きをするというシロモノのようである。直接というのは、具体的にはOSのブロックデバイスやファイルシステムを介さずにアクセスするということだ。どのようなAPIになるかは分からないが、恐らくmmapをするような感じでアドレス空間にioDrive2 Duoへ読み書きするための領域を割り当てるのではないか?と想像している。Fusion-IOがこのような戦略をとったのは非常に興味深い。Fusion-IOがioDriveを発表したときは、PCI Expressから直接SSDにアクセスすることでSATAという中間層のインターフェースをすっ飛ばすことでボトルネックを解消した!というのが非常に斬新だった。「中間層をすっ飛ばす」というのがポイントで、今度はさらにOSに存在するボトルネックをすっ飛ばそうという意図なのだろう。(Fusion-IOがどの部分をボトルネックだと認識しているのかは知らないが。)
Fusion-IOには中間層をすっ飛ばすことで高速化する!という一貫した哲学があるようだ。
ハードウェアの変化
なぜそのようなソフトウェア(いや、ミドルウェアと言うべきか?)が必要なのだろうか。それは、PCI Expressから直接アクセスすることの出来る爆速SSDを使うからだろう。前提となるハードウェアが変わればシステムソフトウェアも変わらざるを得ない。SATA経由でアクセスするタイプのSSDならそのようなソフトウェアは必要なかっただろう。なぜなら、Auto Commit Memoryのようなソフトウェアがあっても大して性能の向上が見込めないからだ。だが、Fusion-IOが提供するioDriveシリーズのような爆速SSDではソフトウェアによって性能を向上させる余地があったと判断したのだろう。いや、更なる高みを目指すためにはソフトウェアによってI/Oの効率を上げざるを得なかったに違いない。Auto Commit Memoryが登場する背景として、CPUアーキテクチャのトレンドも重要だ。今は64ビットが当たり前の時代なので、例えメモリアドレスにioDriveをマップしたとしても、メモリアドレスが枯渇するということはない。32ビットなCPUでは最大4GBまでしかアドレス空間を利用することができないので、ディスクをメモリ上にマップして利用するには自ずと限界が生じることになる。
PCI Expressという高速なインターフェイスが登場した。ioDriveという爆速SSDが開発された。CPUアーキテクチャも準備が整った。かくして、Auto Commit Memoryはお膳立てが揃ったところに登場すべくして登場した技術ではないかというのが筆者の感想である。そのソフトウェアが必要だといち早く感じ取ったFusion-IOのエンジニア(恐らくスティーブ・ウォズニアック氏)の洞察力はただただ素晴らしいと思う。
既存のソフトウェアの書き換え
10億IOPSは素晴らしいが、それを達成するにはAuto Commit Memoryに対応する必要がある。Auto Commit Memoryを使うということは、裏を返せば既存のファイル操作を前提としたAPIは使えないということを意味する。従って、既存のソフトウェアがAuto Commit Memoryの恩恵に預かるためには、書き換えなければならないだろう。現時点ではどれだけのソフトウェアがAuto Commit Memoryに対応するかは分からないし、もし対応するとしてもずいぶん先になるのではないだろうか。新たなインターフェイスが登場し、利用するにはソフトウェアの書き換えが発生する。そのこと自体が悪いと言いたいわけではない。インターフェースが変わればソフトウェアの書き換えが必要なのは当然である。そして、新たな選択肢が増えるということの意義は大きい。既存のソフトウェアはそのまま適用できないかも知れないが、例えばAuto Commit Memoryを前提としたKVSのようなものや、MySQL用のストレージエンジンを新たに実装するというような可能性であれば大いにあるだろう。
ファイルシステムはオワコンになるか?
少しだけ横道に逸れて筆者の妄想にお付き合い頂きたい。Auto Commit Memoryは、(筆者の予想では)ファイルシステムを介さないことでI/Oを超高速化する技術だ。(10億IOPSが本物なら超高速と言っても過言ではないだろう。)
ファイルシステムは素晴らしい。各種ディスクデバイスの上に、ファイルという抽象的なオブジェクトをツリー構造で配置するというアイデア自体はシンプルだが、皆さんも重々承知されているようにファイルシステムは大変便利である。ファイルシステムのないOSなんて考えられないと言っても過言ではない。
ただし、それは現時点での話であり、将来も引き続きそうだとは限らない。何故ならば、ファイルシステムは低速なディスクを前提とした技術だからである。ディスクは遅い。だから効率的にディスク上のデータを検索する必要があった。必要なデータをいち早くメモリにロードするためだ。もし、ディスクが超高速ならどうだろうか。Auto Commit Memoryが謳うように、正しくメモリと同じぐらいの速さでI/Oができたとしたら?
もちろんツリー構造でデータを管理するというアイデアそのものの便利さというのもあるが、それ以上にファイルシステムは低速なディスクを効果的に利用するということの意味合いは大きい、と筆者は思うのである。
ioDriveのような超高速なSSDがもっと一般的になり、将来全てのPCに搭載されるようになると仮定しよう。Auto Commit Memoryのような技術があればI/Oを明示的に行う必要がなくなるかも知れない。もちろん低速なディスクでは「全てのメモリアクセスがディスクの内容と同期する」というようなモデルは非現実的だが、10億IOPSのディスクがあるなら現実的に思える。そのような前提があるなら、全てのデータをメモリ上に置いておくのと同じように管理することができるので、ファイルシステムがないOSというものも作れるかも知れない。(もちろんファイルシステムがないOSはUNIXライクなOSではなく全く新しいものとなるが。)全てのデータへのアクセスが、単なるメモリアクセスで解決できればプログラムの構造はとてもシンプルになる。瞬時に電源を停止し、起動時には瞬時に処理を再開することだって可能だろう。
ハードウェアが変わればソフトウェアも変わる必要がある。もしかすると10年後にはOSはもっと違うものになり、アルファブロガーが「ファイルシステムはオワコン」などと綴る日が来るかも知れない。
未来のOSはどうなるか
実は上記のような妄想は、MRAM(磁気抵抗メモリ)が登場したときにも考えた。もしMRAMが汎用コンピュータでDRAMにとって変わっていたらどうなっていただろうか?だが、MRAMはついぞ汎用向けコンピュータのためのメモリとして陽の目は見ていない。だから前述の妄想のようなOSへの変化は未だ起きていないのだが、新たな技術が登場するたびに「OSは将来どうなるか?」ということについて想像を膨らまさずには居られない筆者は、Auto Commit Memoryの登場に期待をふくらませてしまうのである。Windows 95が登場して以来ずっとOSの趨勢はWindowsだ。だが、最近はモバイルの台頭で様相が変わっている。iOSやAndroidがタブレットを皮切りに、モバイルOSが上位のレイヤーにまで食い込んで来ている。これらモバイルOSでは、普段特にファイルシステムを意識することなく使うことができる。ChromeOSもそうだ。これは汎用コンピュータ向けOSにとって大きな変化である。
最近はx86一強だったCPUの勢力にも変化が出てきているように思う。もちろんその原動力にはモバイルの台頭があるが、新たなコンピューティングパワーとしてのGPGPUも注目に値する。
今まさにOSに求められる機能にはダイナミックに変化が起きているように思う。そして前提となるハードウェアの技術もどんどん新しくなってきている。やがて時が来れば汎用コンピュータ向けOSに大きな変化が訪れるかも知れない。ファイルシステムのないOSというのは大げさかも知れないが、OSが今のままの形で残っていくことはないだろう・・・などと考えた次第である。
あなたのこの記事で、日本から株が買えるようになった時期にFusion-ioへの投資を最終決定いたしました。
返信削除一時は景気が良かった(株価ビュンビュン騰がった)のですが、この会社の技術とは関係ないところでの動き―ベンチャーキャピタルのロックアップ解除前のインサイダー仕手戦、市場の(過剰な)売上予測に及ばない、Facebook上場祭バブル&Appleバブルの崩壊などなどで、株価=市場の企業評価落ちまくりです…が、そのたびに株取引では絶対やってはいけない「落ちるナイフ掴み」で買い下がっています。
惚れた企業技術と一蓮托生こそ『漢(オトコ)の投資道』だと思いますので(笑)。
佐藤光裕 さん、
返信削除コメントありがとうございます。
念の為言っておきますが、投資は自己責任なので私の記事が決め手になったからと言って、たとえ損をしても怒らないでくださいね。しかしSSD関連企業はこれから熱くなるでしょうね。