NAND SSD と異なり、インテル® Optane™ SSD は合成ベンチマークではなく、現実のアプリケーションに関連するキュー深度でピーク・パフォーマンスを発揮します。
ワークロードを最速で処理できるソリッドステート・ドライブ (SSD) が求められています。この記事をお読みになり、システム向け SSD を選択するにあたって SSD の仕様を研究するのは堅実な方法だと言えます。仕様には、読み取りと書き込みの両方のスループット (または帯域幅) 要件が指定されています。また、1 秒当たりの最大アクセス要件も指定されています (一般に入出力操作毎秒 [IOPS] と呼ばれます) 。こうした仕様が非常に理想的なテストシナリオを想定していることは、驚きかもしれません。こうしたシナリオとすばやく実行したいアプリケーションとは一致していない可能性があり、実際にそうでない場合が多くあります。
この記事では、SSD のパフォーマンスで保持可能なアクセス数 (一般にワークロードのキュー深度 [QD] と呼ばれます) が果たす役割について説明しています。また、実際のアプリケーションでよく見られる QD の種類についても調査しています。
簡単に言えば、ほとんどのアプリケーションは比較的低い QD であり、NAND SSD が完全なパフォーマンスを発揮するためには高い QD が必要です。インテル® Optane™ SSD は低レイテンシーにより、低い QD で高いパフォーマンスを実現します。そのため、インテル® Optane™ SSD ははるかに広範なアプリケーションで高いパフォーマンスを実現します。
低い QD のアプリケーションの普及
ほとんどの人は、QD のことを毎日考えている訳ではありません。QD についての説明、レイテンシーやスループットとの関係、QD が低いことがなぜ非常に重要なのかを説明するためには、例示が有効でしょう。
物置が火事になっている場面を想像してください。ホースはありませんが、小さな空き地の反対側にバケツと水が出る蛇口があります。蛇口をひねってバケツに水を入れ、蛇口を再び閉めて空き地を横切り、燃えている物置に水をかけます。それから蛇口のある場所に戻って・・・、を繰り返します。
この例 (図 1) ではバケツは 1 つであるため、QD は 1 (QD=1) です。スループットは蛇口から出た水を火にかける回数の平均値と等しくなります (例 : 1 時間あたり 12回)。この例におけるレイテンシーは、火事の時にバケツの中身を空にしてから、次のバケツが到着するまでの時間です (例 : 5分) 。
お分かりのように、この火事においてレイテンシーと消火に使う水のスループットの間には関係があります。空き地が広くなると移動に時間がかかるため、水が入ったバケツ 1 つごとのレイテンシーが延びてスループットが下がります。
図 1.スループットはレイテンシー (往復に要する時間) と QD (バケツの数) で決まります。
空き地を狭くできる場合 (図 2) 、蛇口を物置に近づけることで早く空き地を横切ることができるようになり、より多くの水をより速く火元にかけることができます。この場合、レイテンシーを減らすことができ、QD=1 でもスループットを改善して消火の効果が高まります。
図 2。距離を縮めることでレイテンシーを下げ、スループットを上げることができます。
レイテンシーを減らすことは、魔法であるかのように聞こえます。別の方法がありますか?この例で QD=2 にしてみましょう。バケツをもう 1 つと友たち 1 人が必要です。消防士が 2 人空き地にやってきて、1 人は火元に、もう 1 人は蛇口に向かいました。空き地の広さは同じなのでレイテンシーは変わりませんが、QD=2 ではスループットが 2 倍になり、水を火元まで早く運べます (図 3) 。
図 3。スループットを増やすもう 1 つの方法は、QD を増やすことです。
バケツや友だちが足りなくなるまでは、QD を増やすことで水の火元へのスループットを増やすことができます。空き地で活動する消防士の数を増やすと、やがてお互いにぶつかるようになります (図 4) 。非効率性が発生したのです。もはや、新たに追加された要員は最初の要員ほどには役に立ちません。ある時点で蛇口が閉められなくなることがわかります。誰かが常にバケツに水を入れているからです。この時点で、飽和点 (蛇口の最大スループット) に達し、バケツを追加 (= より高い QD) しても役に立たなくなります。
図 4. 最終的に飽和による混雑が発生し、QD が増えることで収穫逓減点に達します。
ストレージシステムは上記の例のように機能します。プロセッサー上で実行されるアプリケーションは、火事になった物置にあたります。コンピューティングを進めるには、データというバケツが必要です。プロセッサー上で実行されるアプリケーションやオペレーティング・システムが SSD から個々のデータのリクエストを行い、戻ってきたデータはコンピューティングを進めるのに使用されます。アプリケーションが同時に要求できるデータ項目の数 (QD またはバケツの数) は、コンピューティングにおけるデータ並列性やアプリケーションの機能に依存します。各アクセスのレイテンシーは、SSD のレイテンシーとその SSD のシステムパスに依存しています。したがって、スループットは使用するアプリケーションと SSD の両方に依存します。
アプリケーションとベンチマーク QD
SSD のパフォーマンスは通常、FIO (Linux) や CrystalDiskMark (Windows) のようなベンチマークで測定されます。こうしたベンチマークは高い QD を実現します。FIO は QD に関して完全に構成可能です。つまり、必要な QD を指定するだけです。SSD のパフォーマンスを報告する際の FIO によるテストでは、QD の値は一般的に 128 または 256 です。CrystalDiskMark には 16 スレッドのテストが 1 回含まれ、それぞれの QD は 32 、合計の QD は 512 です。このような高い QD により、SSD を十分に使用でき、IOPS とスループットの面で最大のパフォーマンスを発揮できるようになります。
しかし、そうした高いパフォーマンス値や高い QD への依存性は、単純に多くのデータセンターやユーザーの PC において日常的に経験された現実を反映したものではありません。現実世界のシナリオでは、高い QD は滅多に達成、維持されません。実際のデータセンターのワークロードに関するインテルの社内テストにより、多くのアプリケーションは QD で 1 ~ 9 の範囲にあることが明らかになりました。1実際、トランザクション・ベンチマークの実装のみ (TPC-H など) が非常に大きな QD に達しています。
図 5. エンタープライズ・レベルの多くのワークロードは低い QD の範囲で発生しています。1
図6.さまざまなクライアントのワークロードとその関連 QD 。測定されたすべてのワークロードは主に低い QD で動作しています。2
PC のアプリケーションにとって、状況はさらに深刻です。独自の測定により、多くのデスクトップ・アプリケーションが QD=1、2、4 だけをサポートしていることがわかりました。図 6 が示すように、最も一般的なアプリケーションの多くで現実のワークロードは QD=3 未満です。
図 5 と図 6 は、SSD の仕様シートに使用されている高い QD 値と現実のアプリケーションのニーズの間に分断があることを明確に示しています。SSD のベンチマークが多くの「バケツ」を提供してデータを移動しているのに対して、実際のアプリケーションが提供しているのはわずかです。この背景をもとに、NAND とインテル® Optane™ SSD のパフォーマンスについて QD との比較をご覧ください。
NAND SSD のパフォーマンス
NAND SSD が NAND メモリーから構築されているのは驚くことではありません。1 つの NAND SSD には多くの NAND IC が含まれています。NAND IC 自体からデータを読み取るため、周波数の低いテール・レイテンシー以外の SSD レイテンシーはそれに支配されます。3 この NAND のリード・レイテンシーにより、最新の NAND SSD には平均約 80 マイクロ秒 (μs) のアイドル状態があります。4 3.0GHz の CPU 1 台で 240,000 のプロセッサー命令に変換されますが、これは 1 つの「バケツ」を持って横断する大きな空き地にあたります。
この比較的高いレイテンシーのため、低い QD でのパフォーマンスが NAND SSD にとって課題になっています。ちょっとした数式 - 4,096 バイト x (1/80 μs) = 50MB/sec から、スループットが遅くなる程度が分かります。もちろん、データ転送の規模が大きければ (= 大きなバケツだと) このスループットを増やすことができます。SSD のベンチマークがスループットの測定に大規模なデータ転送を利用しているのはこのためです。なお、若干のアプリケーションのみが大規模な転送を利用することができます。
さらにこの数式 - (1/80 μs) = 12K IOPS は、QD=1 になる IOPS がどの程度低いかを示しています。QD が高いほどこの値は増えます。それが、こうした値でより大きな QD 値が測定されることが分かる理由です。また、より大規模なデータ転送によりスループットの値が増えますが、そのため SSD の IOPS 測定で高いレベルの QD が表示される理由が分かります。
NAND SSD のパフォーマンスには多くの二次的なインパクトがあり、その中には NAND SSD のパフォーマンスを最大化するために必要なより高い QD へのニーズも含まれます。ここでは、インテルのクヌート・グリムスラッド氏が命名したヤッツィー効果に焦点を当てます。NAND 集積回路 (IC) はレイテンシー全体でそれぞれ 1 回分の読み取りデータのみ保持できます。したがって、NAND SSD のパフォーマンスを向上させるには多くの IC が必要であり、読み取りごとに異なる IC を使用する必要があります。しかし、データは特定の IC 上で保持されるため、当該 IC への新たなアクセスが以前のアクセスとぶつかって、その他の IC がアイドルであっても待たなければならない可能性があります。これは、複数の「蛇口」があってもそれぞれが遅く、かつ 1 つのバケツには特定の 1 つの蛇口からしか水を入れられないようなものです。QD が増加するにつれて、1 つの IC の読み取りで衝突が発生する可能性が高まるため、パフォーマンスの向上が QD の増加よりもゆっくりになることがあります。それが、SSD の仕様シートにこのような大きな QD 値が含まれており、IOPS が高いことが示されている理由です。インテル® Optane™ SSD は能力の高いメモリーと SSD アーキテクチャーであることから、ヤッツィー効果に苦しむことはありません。
インテル® Optane™ SSD の性能が実際のデータセンター・オペレーションで NAND SSD を上回る仕組み
NAND SSD と異なり、インテル® Optane™ SSD は革新的なメモリーと SSD アーキテクチャーを使用して安定した低レイテンシーを提供しており、実際の QD においてピーク・パフォーマンスを実現できるように設計されています。インテル® Optane™ メモリー・メディアはレイテンシーが低いため、SSD は約 8μs 以下の非常に低いレイテンシーを達成できます (横切る「空き地」がずっと小さくなります) 。また NAND SSD と異なり、インテル® Optane™ SSD のレイテンシーはメモリーのレイテンシーに支配されないため、ヤッツィー効果に苦しむことはありません。インテル® Optane™ SSD は、複数のインテル® Optane™ メモリー・メディアの IC からそれぞれ 1 回で 4KB のデータでも読み取ることが可能です。また、IC は別の読み込みも非常に迅速に実行できます。インテル® Optane™ SSD は、NAND SSD が遭遇するロケーションやアドレスベースの衝突を回避します。これは、インテル® Optane™ SSD が複数の「蛇口」を一度に使用して 1 つのバケツに水を入れ、次のバケツにも非常に迅速に水を入れる準備をしているのに似ています。このことはインテル® Optane™ メモリー・メディアが NAND SSD と比べてはるかに少ない時間で別の読み込みができることを意味しており、高い IOPS を達成するための入力 / 出力 (I/O) の並列処理は不要になります。
簡単に言うと、インテル® Optane™ SSD はほとんどのアプリケーションが動作する低い QD において一貫してピーク・パフォーマンスを発揮します。NAND SSD は通常、ピーク・パフォーマンスを実現するために QD= 128 以上が必要ですが、インテル® Optane™ SSD はこれよりもずっと低く、実際のアプリケーションでよく見られる QD で最大のパフォーマンスを実現することができます (図 7 を参照) 。5 このチャートは NAND SSD (インテル® SSD P4610) とインテル® Optane™ SSD (インテル® Optane™ SSD P4800X) のパフォーマンスの差についても強調しています。その結果、インテル® Optane™ SSD の実際の環境でのパフォーマンスは、テスト済みのインテル® NAND SSD のパフォーマンスの 4 ~ 5 倍に達することが示されています。
図7.インテル® Optane™ SSD は、多くのアプリケーションが動作している低い QD においてピーク・パフォーマンスを提供します。NAND SSD は通常、ピーク・パフォーマンスを実現するために QD= 128 以上が必要です。6
これは重要なチャートですが、ストーリーの一部にすぎません。図 8 は同じワークロードを示していますが、これは提供されたスループット (x 軸) と結果である I/O ごとのリード・レイテンシー (y 軸) に関して、システムのオペレーティング・ポイントを示すためにプロットされたものです。QD は NAND およびインテル® Optane™ SSD のラインの番号に含まれています。QD=4 でのオペレーションが可能なアプリケーションがあるとしましょう。インテル® Optane™ SSD はわずか 10 µs 程度の読み取り I/O ごとのレイテンシーにより、アプリケーションが 1.2GB/s よりも高いスループットで動作できるようにしています。一方、NAND SSD のオペレーティング・ポイントは 0.3GB/s 未満であり、読み取り I/O ごとのレイテンシーは約 100 μs です。この 2 つは非常に異なるオペレーティング・ポイントであり、結果としてのアプリケーションのパフォーマンスも大きく異なります。
図8.QD が低い場合、インテル® Optane™ SSD は NAND SSD よりも高い帯域幅と低いレイテンシーを提供します。6
また、図 8 で NAND SSD が完全なパフォーマンスを発揮するには QD=128 または 256 が必要になります。アプリケーションが該当するオペレーティング・ポイントに達しても、高い読み取りレイテンシーが犠牲になります。これで、NAND SSD の最大パフォーマンスがこのような高い QD に対応して設定されている理由がわかります。また、そのオペレーティング・ポイントでの読み取りレイテンシーについて尋ねるべき理由がわかります。この理由により、CrystalDiskMark などのベンチマークではテストスイートの一部として QD=1 での測定値を含んでいます。インテル® Optane™ SSD は QD=8 超で完全なパフォーマンスを発揮し、そのオペレーティング・ポイントでの読み取りレイテンシーを維持します。現実的なアプリケーション QD のために、インテル® Optane™ SSD は高いスループットと低いレイテンシーを同時に実現します。「火」を消すときは、インテル® Optane™ SSD をお求めください。
インテル® Optane™ SSD の低レイテンシー・パフォーマンスがもたらすボーナス・メリット : コードの簡素化
MIT の デービッド・クラーク氏は、かつて次のように述べました。「帯域幅の問題はお金で解決できる。しかし、レイテンシーの問題は光の速度が固定されているために難しい。神には賄賂は効きませんから」7 クラーク氏はネットワーキングのことについて話しましたが、ストレージについても同じことが言えます。低レイテンシーは強力であり、広範な影響があります。オペレーティング・システムやアプリケーションの開発者と連携して低レイテンシーのインテル® Optane™ SSD をシステムに統合したため、繰り返し見られるテーマに注目しています。こうした開発者はストレージの高レイテンシーを克服するために、開発者時間、エキストラ・コード、エキストラ・コンピューティング・サイクルの形でコストを発生させてきました。NAND SSD (そしてハードディスク・ドライブ [HDD] も) が高いレイテンシーである中、オペレーティング・システムやデータセンター・アプリケーションの開発者は長年にわたり、アプリケーションのスループットを増やすために多大な努力を払ってきました。データをストレージに、あるいはストレージから転送する際に発生する長い待機時間を短縮するために、重要なコードと複雑なヒューリスティクスが開発されてきました。インテル® Optane™ SSD では、この特別なコードや開発者の追加作業は不要です。インテル® Optane™ SSD が提供する低レイテンシーは、「データへの迅速なアクセス」という問題の根本を解決します。
この概念については、商業的に重要なデータベースのベンチマークである TPC-C をご覧ください。インテルの ジェフ・スミッツ氏は NAND SSD とインテル® Optane™ SSD のパフォーマンスを比較する広範な実験を行いました。TPC-C はすべてスループットに関するもので、これは 1 秒あたりのトランザクション数 (TPS) です。TPC-C のデータベースの実装はコードとシステムレベルで非常に最適化されています。ジェフ氏はインテル® Optane™ SSD をシステムに組み込むだけでは、完全なメリットを提供できないことを発見しました。この非常に最適化されたシステムが生成した未処理のトランザクション数を減らす必要がありました。これを行っていた際、ジェフ氏はアプリケーション・レベルでパフォーマンスが大きく向上するのを見ました。このシステムは高レイテンシーのストレージを想定しており、多くの同時トランザクションを生成できる複雑なコードが含まれていました。興味深いことに、未処理のトランザクション数のダイヤルバックにより、アプリケーションのワーキングセットのサイズが減少するため、CPU のキャッシュもより効果的に機能するようになりました。オペレーティング・システムのバーチャル・メモリー・ページングと同様のパフォーマンスの簡素化が見られます。
したがって、インテル® Optane™ SSD のボーナス・メリットはコードの複雑さとワーキングセットの削減です。複雑さが低下することから、システム・パフォーマンスもさらに向上します。あなたが開発者であるなら、アプリケーションとその簡素化についてお考えください。インテル® Optane™ SSD を使用してパフォーマンスと生産性を向上させましょう。
「現実の世界」でのパフォーマンスこそが重要です
「現実の世界」という語はこのペーパー全体で繰り返し使用されています。それがあるべき姿です。結局のところ、公開されているパフォーマンスの統計がどれほどすばらしいものであっても、実際に同じ結果を達成できない場合はほとんど意味がありません。NAND SSD のパフォーマンス統計はセールス・パンフレットを見る人にその内容を印象づけますが、インテル® Optane™ SSD のパフォーマンスは日々の現実のデータセンター・オペレーションと PC アプリケーションを通じて人々にその内容を印象づけます。8 9 10 11 12 13