第五回目はInfiniBox®(インフィニボックス)独自のキャッシュ制御技術であるニューラルキャッシュ(Neural Cache)についてご紹介いたします。
INFINIDATは深層学習やトライ(Trie)の技術をキャッシュ制御に利用している唯一のストレージベンダーです。
オールフラッシュアレイ(AFA)が登場したとき、AFAに対する常識は2つの点を考慮することになりました。それは『非常に高速』であることと『ストレージの物理
容量に対する非常に高いコスト』です。
INFINIDATは数十年にわたるエンタープライズストレージの経験を活かし、オールフラッシュよりも高速でありながら、ストレージの物理容量に対するコストを大幅に
削減するデザインを考案しました。
コスト削減には費用対効果の高いハードディスクドライブ(HDD)を主なストレージメディアとして採用した点です。これにはいくつかの設計上の工夫がありますが、
中でも最も重要なのがキャッシュヒット率を最大化するためのニューラルキャッシュ技術です。
今までのキャッシュ制御はハッシュを用いた方式が多く、ストレージの容量が多くなると制御が難しくなくなります。
この方式ではハッシュテーブルにあるインデックスからデータを選定(ルックアップ)します。しかしながらインデックスを得るためのキーのハッシュ化処理には、
最低でも50近いステップが必要となり、データの選定にある程度のオーバーヘッドが掛かります。またストレージの容量が増えてくると、ハッシュテーブルは連鎖的に
大きくなり、パフォーマンスに影響を与えます。
特にリードキャッシュの制御もストレージの性能向上に大きく影響します。データがキャッシュに取り込まれると、次に参照される可能性の高いと思われる追加の
データをプリフェッチ(先読み)しますが、正確なプリフェッチはリードキャッシュヒット率を高めますが、不正確なプリフェッチは性能を低下させます。
プリフェッチされるデータの選定に『最近使用されたのでないもの』や『先入れ先出し(first-in-first-out)』のような従来のアルゴリズムではキャッシュヒット率を
高めるのは困難です。
伝統的なキャッシュ制御ではペタバイトを超える大容量のストレージシステムには不向きであり、高いキャッシュヒット率を実現することができず、バックエンドの
ストレージメディアを高速化するSSDを利用する必要がありました。
革新的なキャッシュ制御であるニューラルキャッシュと呼ばれる独自のアプローチをINFINIDATは開発しました。
キャッシュヒット率をコストも含めて最適化するために、DRAM+SSD+HDDと階層化されたストレージのデザインにおいて高効率なデータ配置を行う必要がありました。
ニューラルキャッシュは、64Kバイト単位に管理されるセクション(データブロック)単位で付加されるメタデータタグを使用して、アクセス頻度以外に従来のストレージシステムでは
分析していなかった多くの指標を分析しています。
ニューラルキャッシュが分析している主な指標は以下の通りです。
●アクセス頻度
●ブロックサイズ
●読み取りと書き込みの頻度
●どのセクションが一緒に参照・使用されているか
●アプリケーションのI/Oプロファイル(ランダム・シーケンシャル)等
これらの指標をもとにセクションごとの"アクティビティ・ベクトル"を作成します。
アクティビティ・ベクトルは、セクションへのアクセスパターンの変化に応じて時間とともに変化するため、どのデータが一緒に参照される可能性が高いか
(つまりプリフェッチされるべきか)、データがどこに書き込まれるべきか(キャッシュからデステージするときのデータ配置)を判断するために、常に最適な情報を提供します。
どのデータを一緒にプリフェッチすべきかかは、どのデータが一緒に使われる可能性が高いかを示すアクティビティ・ベクターをリアルタイムに分析することで決定されます。
ニューラルキャッシュは、ブロック単位で空間的・時間的な位置関係を把握しており、このアプローチによりランダムアクセスとシーケンシャルアクセスが混在する企業のワーク
ロードでも、非常に高いリードキャッシュヒット率が得られることが実証されています。また、この手法は深層学習(ディープラーニング)に基づいているため、条件の変化に応じて
迅速に最適化され、人手を介さずに常にシステムを最高のパフォーマンスで動作させることができます。
次にライトキャッシュについてですが、ライトキャッシュ内のデータは
アクティビティ・ベクトルに基づいてまとめられ、より高い書き込み性能を得るために、デステージの際はシーケンシャル書込みを行います。
SSDの場合は長期的にガベージコレクションの活動を最小限に抑えることができ、HDDの場合はSSDよりも早いシーケンシャルライトの性能が得られます。
二次的な効果となりますがSSDではメディアの耐久性を向上させ、HDDでもヘッドの動作が最小限となり消費電力の削減や耐久性の向上が見込めます。
ニューラルキャッシュは、大容量のストレージシステムのために開発された全く新しいデータ管理とキャッシュ制御のアルゴリズムです。
全てのセクションを管理するメタデータはすべてDRAM内のトライ(Trie)によるデータ構造で管理されており、高速で効率的なアクセスが可能です。トライとはGoogleがインター
ネット検索を高速化するために数十年前に採用した技術で、INFINIDATはストレージ内のデータに対するアクセスを最適化するためにこの技術を採用し特許を取得しています。
深層学習およびトライの技術をストレージシステムに応用しているのはINFINIDATだけです。
トライによるデータ構造は、文字通り何十億ものオブジェクト(セクションなど)を深い"木"を辿ることなく、またハッシュによる衝突のリスクを冒すことなく、
非常に高速に参照することを可能にする拡張性の高い方法です。
必要なデータがプリフェッチされていない場合、そのデータを「見つける」ために必要な命令サイクルも少なくてすみます。これによりセクションが一緒に管理されて
いなくても(データが最後に使用された後にアクティビティ・ベクトルが変化した場合など)、効率よくプリフェッチすることを可能としています。
●Point
今回はINFINIDATの特許技術でInfiniBox®に採用されているニューラルキャッシュについて紹介しました。
INFINIDATのニューラルキャッシュは、深層学習(ディープラーニング)として知られる人口知能・機械学習(AI/ML)の技術を独自に採用しています。
深層学習は複数の選択肢を評価し、目的を達成するためにどれが役に立ったか、どれが役に立たなかったかを継続的に学習し、「ニューラルネットワーク
(人間の脳のようなネットワーク)」のようなものを効果的に活用して目的を追求します。(リードキャッシュミスを最小限に抑えるために時間をかけてデータ
配置を最適化するなど)
運用時間が長ければ長いほど目標に近づき、状況が変化しても適応して再び目標に近づき始めます。現在普及している他のストレージベンダーの静的な
キャッシュ管理や手作業によるシステム最適化のアプローチは必要なく、完全に自己管理型の仕組みとなります。