私たちのクラスターシステムは現在SSDとNCQが無効になっているCentOS7の下で実行されています。 I/O負荷の高い使用シナリオでは、どのようなパフォーマンスの低下が予想されますか?
正確な答えは例外ではありません。アプリケーション、ハードウェア、ネットワークに大きく依存することがわかっているからです。
NCQは、読み取りおよび書き込み要求が処理される順序をドライブに再順序付けさせるテクノロジーです。
SSDを使用すると、ハードドライブに悩まされるシーク時間を節約できますが、実際にNANDダイの読み取りと書き込みを行うのは特に高速ではありません。 SSDは、複数のNANDダイに並行して読み書きすることでこれを回避します。
このSSDを実現するには、次の3種類の戦略に依存します。大規模なIOリクエストの場合、リクエストを分割し、データの一部を書き込んで複数のダイに並列に書き込むことにより、リクエストを複数のダイに分割します。読み取りの場合、データが複数のダイに分割されていることを期待し、並行して読み取ることができます。
小さいIO書き込み負荷の場合、SSDは通常、それらの多くをオンボードメモリにキャッシュし、それらの全体を異なるNANDダイに並列に書き込みます。これがSSDが非常に高いランダム性を持つことができる理由です書き込みパフォーマンス。
小さいIO読み取り、または混合ワークロードの場合、SSDはコマンドキュー内の要求を順不同で処理し、できるだけ多くのNANDダイを並行して動作させ続けようとします。SSDはこれを行うことしかできませんNCQが有効になっている場合。これにより、IO重いワークロードに大きな違いが生じる可能性があります。AHCIの場合、最大10倍の違いがあり、NVMeの場合は100倍以上です。
CrystalDiskMarkなどのベンチマークアプリケーションからSSDのベンチマークを見たことがある場合は、キュー深度がある場合とない場合の両方で、通常4kのランダムな読み取り結果が得られることがわかります。 NCQが無効になっている場合、これら2つの数値の差は小さく、NCQを有効にすると非常に大きくなります。たとえば、 このビットテックレビュー は、Samsung 950 PRO 512GB(NVMeドライブ)のQD1 4kランダム読み取り結果を60MB/sで出力しますが、同じドライブのQD32 4kランダム読み取り結果です。 1261 MB /秒です。
NCQは、ヘッドシークを最小化してパフォーマンスを最大化するために、キューに入れられた読み取り/書き込み操作を再配置するためにここにあります。メカニカルディスクとNCQの優れたベンチマークを見つけることができます here
ただし、Commond Beliveとは異なり、NCQはSSDにとってさらに重要です。その理由は、ヘッドがないにもかかわらず、非常に低いレイテンシコマンドキューイングが最大のパフォーマンスを引き出すために非常に重要になるためです。
考えてみてください。AHCIに単一の32エントリキューしかなかった場合、NVMeにはそれぞれ64kエントリの64kキューがあります。
NCQは、ディスクがセクターの読み取り/書き込み操作を再配置して速度を優先するのに役立ちます。より少ない頭の動きを目標にしています。回転磁気ディスクの代わりにSSDを使用している場合、NCQの速度の向上はあまり目立ちません。