従来のSAS / SATAインターフェイスは、身近でよく開発され、日常生活で便利です。 ディスク、コントローラー、エキスパンダーとの互換性、使用済みケーブル管理など、大規模なインフラストラクチャがあります。 これらには、SCSIおよびSATAスタックの動作、インターフェイスコントローラーの遅延が伴います。 IOPSを増加させ、遅延を減らすための継続的な努力には、不要なリンクを取り除き、ドライブをできるだけプロセッサに近づける必要があります。 したがって、SAS / SATA SSDのパフォーマンスが自分に合わず、さらに高速にしたい場合はどうでしょうか?
PCIeを選択してください!
トレンドは、いつものように分かれていました。
最も単純なカード(上の写真のように)は、PCIeコントローラーに接続された通常のSATAドライブを使用します。 単純なSATA SSDを超える利点はありません;すべてが同じAHCIスタックでブロードキャストされます。 私たちはこの亜種を考慮せず、消費者向けデバイスを対象としています。
より複雑なオプションは、ブリッジ接続でSASブリッジとフラッシュメモリコントローラーを使用します。
実際、2番目の亜種はSAS SSDの配列であり、OSを使用して単一のスペースに結合されます。 このアプローチの明らかな利点は、標準のSCSIスタックを使用できることです。 それはどこでも機能し、少なくとも苦情はなく、ソリューションは何十年もの間解決されてきました。 2.5インチ形式の制限はなく、フラッシュは多くの容量に対応できるため、容量は3.2TBに達します。 典型的な代表は、Intel 910、LSI Nytro WarpDrive、Nytro XP、低プロセッサ負荷の非常に高速なカードです。 自然なマイナス-以前のように、これはすべてのレベルのドライバーとSCSIスタックの変換であり、遅延を追加するため、これを取り除きたいと思います。
古代に開発された不要なSCSIスタックを取り除くために、大容量記憶装置のフラッシュの存在がまだ考えられていなかったときに、一部の開発者はPCIeをNANDコントローラーに直接接続する特殊なコントローラーを備えたドライブを思い付きました。 このようなカードは、Fusion-io、Virident、Huawei、Micronによって作成されています。
長所:
- 低レイテンシ、3マイクロ秒の領域で今日最高の指標。
- 高性能-最大3.2 / 2.8 GB / sの大きなブロックでの読み取り/書き込みと
4Kブロックでの読み取り/書き込みの770K / 630K IOPS。
- SCSIスタックの欠如、NANDでの作業の最適化(たとえば、Fusion-io)。
短所:
- CPU使用率が高い(16コアのプロセッサーの可用性とはあまり関係ありません)。
- ホットスワップできない:一般に、PCIeカードはこれを許可しません。
- ドライバーは各コントローラーに固有です。
ドライバーの独自性は、有望な技術の普及を複雑にしているため、単一のソリューションの検索が開始されました。
NVM Express
90以上の企業がNVMHCIワークグループに参加して、新しいNVM Expressプロトコルを開発しました。これにより、単一の標準でSSDソリューションの可能性が解き放たれます。 将来の基礎は忘れられていません-マルチコアの最適化により、各スレッドがコマンドと割り込みの順番を割り当てることができます。 高度なエラー検出および制御システムは、産業用アプリケーションに最適です。 ディスク自己暗号化プロトコルがサポートされています。
だからSCSIを取り除きました
ホストコントローラーのスケーラブルインターフェイスは、1つのI / Oキューで最大64Kのコマンドをサポートします。 NVM Expressの基礎は、送信キューと完了キュー(実行キューと完了キュー)を組み合わせたメカニズムです。 プログラムからのコマンドは送信キューに配置され、実行結果はコントローラーによって完了キューに配置されます。 複数の送信キューが1つの完了キューを使用でき、それらはすべてホストメモリにあります。
美しいスキーム
デバイス管理用の管理サブミッションと完了キューがあります-コマンドキューの作成と削除、コマンド実行のキャンセルなど。 これらのキューに入ることができるのは、管理コマンドセットの制御コマンドのみです。
ユーザーソフトウェアは、コントローラーの制限までキューを作成できますが、サーバーの機能に焦点を合わせるのが通常です。 たとえば、システム内の4つのコアの場合、ロックを回避し、コアにプロセスをアタッチするには、4ペアのキューを作成することをお勧めします。 このアプローチにより、効率的なパフォーマンススケーリングと低遅延が実現します。
NVMeの主な機能:
- 64K I / Oキュー、各64Kチームをサポートします。
- I / Oキューの調停メカニズムと優先度システムを開発しました。
- コマンドのセットは、管理コマンドと冗長コマンドを除き、13個に削減されました。
- MSI-Xおよび割り込み集約のサポート。
- 64バイトの完全な命令サイズにより、小さなブロックでのランダム操作で高いパフォーマンスが保証されます。
- SR-IOVなどのI / O仮想化のサポート。
- コマンドキューのMMIOレジスタの1つのエントリをバイパスします。
- 複数の名前空間をサポートします。
- 高度なエラー検出および管理機能。
- MPIO(冗長性を含む)、完全なデータ保護(DIF / DIX)をサポートします。
従来のAHCIインターフェースと比較した利点の要約表(翻訳なし)
AHCI | NVMe | |
最大キュー深度 | 1つのコマンドキュー。 キューごとに32コマンド | 65,536個のキュー。 キューあたり65536コマンド |
キャッシュ不可のレジスタアクセス(各2000サイクル) | キューに入れられていないコマンドごとに6。 キューに入れられたコマンドごとに9 | コマンドごとに2 |
MSI-Xおよび割り込みステアリング | シングル割り込み; ステアリングなし | 2048 MSI-X割り込み |
並列処理とマルチスレッド | コマンドを発行するには同期ロックが必要です | ロックなし |
4 KBコマンドの効率 | コマンドパラメータには、2つのシリアル化されたホストDRAMフェッチが必要です | 1回の64バイトフェッチでコマンドパラメーターを取得します |
Windows用のドライバーはOpenFabrics Allianceによってサポートされていましたが 、Windows Server 2012 R2 NVMeのサポートはMicrosoft自身によって統合されています。
Linux用のIntelドライバーは3.3カーネルに含まれ、SSDを操作するための新しいブロックレベルが3.13カーネルに含まれ、Fusion-ioの従業員が手にしました。 新しいカーネル設計では、内部キューを2つのレベル(プロセッサおよびハードウェア送信キュー用)に分割し、ボトルネックを取り除き、I / Oを並列化します。 リリース3.13では、virtioblkドライバーのみが変更され、他のドライバーは後で変更されます。
すべてが素晴らしく、素晴らしいパフォーマンスとアクセラレータの低遅延が市場での位置を発見したように見えますが、何かが欠けています。 もちろん、ホットスワップのない実際の企業ドライブとは何ですか? 混乱を修正する必要があります。
大衆への配布には、既存のフォームファクターを使用することも望ましいです。SASコネクタを維持しながら、選択は2.5 "形式(論理)に基づいています。
追加のピンを備えたSASコネクタ
フラッシュを備えた従来のPCIeカードは、静電気で敏感なマイクロ回路を損傷しないように慎重に扱う必要があります。 ホットスワップの可能性に加えて、2.5インチフォーマットでは、フラッシュが過剰にならないようにケーシングで保護されています。
NVMe SSD
当然、わずかな欠点がないわけではありません。 すでに書いたように、フラッシュ自体は非常に遅い製品であり、コントローラーには作業を並列化するための多数のチャネルがあります。 2.5 "形式では、スペースが限られているため、フルサイズのPCIボードのパフォーマンスを達成することは非常に問題です。適合するフラッシュはあまりありません。
Samsung XS1715は、読み取り用に740K IOPSを約束します。MicronP420mとIntel P3700は、それぞれ430Kと450Kほど顕著です。
今、私たちとNVMeについて
現在の製品の中で、4つのNVMe SSDは、Intel Xeon E7-4800 v2ベースのETegro Hyperion RS530 G4 4プロセッササーバーにインストールできます。
左側の4つのドライブは、接続されているケーブルに応じてSASまたはNVMeのいずれかです。 300万IOPS未満、12 GB / s未満の場合、読み取り速度は60コアと6テラバイトのRAMに追加されます。
ちなみに、サーバーには4つのホットスワップPCIeスロットがあるため、多少の不便さはありますが、現在のPCIeボードでもオンザフライで変更できます。
Intelに基づいた次世代のデュアルプロセッサシステム(秋に発売予定)も、NVMeドライブのフットプリントが定期的にあります。