Flexible Data Placement(FDP)は、GoogleとMetaが提案した、NVMe™仕様1の一機能です。この機能の目的は、複数のアプリケーションが同じNVMe SSDにデータを書き込み、修正する際に、書き込み増幅(WA)を低減することです。両社にとってのWAの低減によるメリットには、(オーバープロビジョニングの必要性が低くなることによる)使用可能容量の増加や、(摩耗の低減による)デバイスの長寿命化などがあります。
マイクロンは、FDPがどの程度役立つかを判断するための実験を提案しました。このテストでは、7.68TBのMicron® 7450 PRO SSDを4つのネームスペースに均等に(1.92TB)分割し、Aerospike NoSQLデータベースの並列インスタンスを実行しました。AerospikeはSSDを使用するために高度に最適化し、デバイスへのシーケンシャルな書き込みのみ行います。これにより、1つのインスタンスの書き込み増幅率(WAF)は非常に低くなりますが、同じ物理デバイスで複数のインスタンスを実行すると、トランザクションが混在し、ワークロードにランダム性が生じます。
各Aerospikeインスタンスは、さまざまな顧客が仮想環境でスペースを共有している状況をシミュレートするために、さまざまなブロックサイズ(32KB、64KB、128KB、256KB)で書き込みを行うように設定しました。また、1.92TBずつ、4つに分割したMicron 7450 PRO SSDで個別にこれらのワークロードを実行します。FDPの最適な導入を想定して、すべてのアプリケーションデータが専用のNAND領域を受け取り、図1のようにデバイスでデータがインターリーブされないようにします。
Aerospikeの最適化で私たちが予想したのは、アプリケーションの1つのインスタンスを専用のストレージデバイスで実行すると、WAFが1に近くなることでした。これは、ドライブが複数回埋まるまでYCSBワークロードA(読み取り50%/更新50%)を実行することで確認されました。理想的なシナリオでは、大型デバイス上の4つのネームスペースは、4つの単一デバイスと同じように動作します。このシナリオの形式を図2に示します。
FDPを使用せず、7.68TBのデバイスで複数のワークロードを実行すると、そのドライブはネームスペースごとにNANDを分けていないため、実行中のインスタンスのコンテキストでどのAerospikeデータを同じグループにしたらよいかを判断する方法がありません。図1に示すように、インターリーブとは、個々のワークロードがシーケンシャルでも、ドライブの観点ではワークロードが事実上、よりランダムになるということです。このランダム性の増加により、図3で示すように、単独の専用デバイスの1つのインスタンスでは1.08だったWAが、FDPを使用しないデバイスに配置された4つのインスタンスでは1.84に増加します。
これは基本的な実験ですが、今後のデバイスにFDPを導入する場合の潜在的なメリットを示しています。また、できる限りシーケンシャルに書き込みを行うように設計された一部のアプリケーションが、同じドライブリソースで競う場合のFDPのメリットも示しています。
1 クリス・サボル氏(Google)とロス・ステンフォート氏(Meta)がNVM Expressに対するプレゼンテーションで紹介したその他の詳細については、https://nvmexpress.org/wp-content/uploads/Hyperscale-Innovation-Flexible-Data-Placement-Mode-FDP.pdf参照。