マサチューセッツ工科大学(MIT)コンピュータサイエンス・人工知能研究所(CSAIL)は、データセンタのキャッシュサーバにフラッシュメモリを使用することによって、消費電力を1/10に下げられるという報告を行った。ドイツ・ミュンヘンで8月28日~9月1日に開催された国際会議「International Conference on Very Large Databases」にて研究成果を発表した。
現在ほとんどのデータベースでは、頻繁にアクセスされるデータをリスト化してキャッシュサーバ上に複製し、アクセス要求に対してはキャッシュサーバから応答することでサーバのパフォーマンスを向上させている。データベースサーバからデータをその都度呼び出すとサーバの負荷が増し、通信速度が遅くなるためである。GoogleやFacebookなどの大規模ウェブサービス向けでは、1つのデータセンタが1000台以上のキャッシュ専用サーバを保有しているという。
キャッシュサーバ用のメモリとしては通常DRAMなどのランダムアクセスメモリ(RAM)が使用されている。RAMはアクセス速度が速いことが特徴だが、同時に消費電力が大きくコストが割高であるという問題がある。
一方、フラッシュメモリはRAMと比べると低消費電力である。メモリ1GBあたりで比較すると、フラッシュメモリの消費電力はRAMの5%程度であり、コストも1/10程度と安く済む。また記憶密度が高いこともフラッシュメモリの特徴であり、同面積あたりではRAMの約100倍のデータを保存できる。
そこでキャッシュサーバ用のメモリをRAMからフラッシュメモリに置き換えればデータセンタの高効率化につながるという今回の研究テーマになるわけだが、そう上手くいくのかという疑問がわく。フラッシュメモリのアクセス速度はRAMに比べるとかなり遅いからである。DRAMと比較すると、フラッシュメモリのアクセス時間は1万倍程度かかる。応答時間の高速化のためのキャッシュサーバでDRAMをフラッシュメモリに置き換える意味が本当にあるのかという話である。
この疑問に対して、研究チームは、通常インターネットでのラウンドトリップ時間(データへのアクセス要求を出してから応答が返ってくるまでの往復時間)が1リクエストあたり0.0002秒かかるところ、フラッシュメモリを使った場合に0.0004秒かかるようになったとしても、その違いはユーザーには知覚できないと指摘している。
さらに重要なことは、データセンタに送られてくるリクエストが爆発的に増えていくことに対してどのように対応するかである。この問題について、研究チームが開発したフラッシュベースのキャッシュサーバシステム「BlueCache」では、「パイプライン方式」と呼ばれる技術で対応している。最初のクエリがサーバに届いてからユーザーに応答を返すまでには200マイクロ秒かかるが、その間にBlueCacheは次の10000クエリを処理することができる。このため2番目以降のクエリについては、0.02マイクロ秒のインターバルで応答が返ってくるようにみせることができる。
フラッシュメモリによるキャッシュ化をDRAMと互角の性能にするため、研究チームはパイプライン方式以外にもいくつかの技術的な工夫を行っている。そのひとつは、BlueCacheのすべてのキャッシュに小さなDRAMを付加するというものである。このDRAMには、データベースクエリとそれに対応するクエリ結果を格納したフラッシュメモリ上のアドレスがセットになった表が保存されている。
この表にはキャッシュの検索自体の速度を上げる効果はないが、アクセス要求のあったデータがキャッシュメモリ上にはないことを検知するプロセスを効率化できるので、キャッシュサーバのパフォーマンスは向上する。これに使われるDRAMは微小なもので、DRAMを付加しない場合のフラッシュベースのシステムと比較しても消費電力の増加は4%程度で済むという。
その他の工夫として、「キャッシュからのデータ読み出し」「キャッシュへのデータ書き込み」「キャッシュ上のデータ消去」というキャッシュシステムの基本動作に関して、ソフトウェア的に処理するだけでなく、ハードウェア面での改良を行うことによってシステムの高速化と低消費電力化を実現したことなども報告されている。
具体的には、BlueCacheサーバ内でCPUとフラッシュメモリをつないでいるバス接続の通信帯域幅を最大限有効利用できるようにするため、バス接続の通信容量いっぱいまでクエリを溜め込んでからメモリにクエリを送るといった動作を行えるようにハードウェアのレベルからBlueCacheのシステムが構築されているという。
こうした技術的な工夫を重ねることで、フラッシュベースのもともとのキャッシュサーバと比較して、BlueCacheは4.2倍高速化できたと研究チームは報告している。