コメントPowerEdge、ProLiant、UCS、およびその他の x86 サーバーの世代にとって、将来は非常にシンプルでした。より強力なマルチコア プロセッサ、より多くのメモリ、より広い PCIe 帯域幅、そして必要なスペースと電力の削減です。
例えば、Gen8 ProLiant DL3603サーバーは、コア数が2/4/6/8/10のXeon E5-2400/2400 v2を1基または2基搭載し、DDR3 DIMMを12枚(最大1600MHz、最大384GB)搭載していました。後継のGen9 ProLiant DL160サーバーは、コア数が4/6/8/10/12のXeon E5-2600 v3シリーズを1基または2基搭載し、DDR4 DIMMを16枚(最大2133MHz、最大512GB)搭載しています。
ハードウェアは進化しましたが、アプリケーションとOSソフトウェアは、第8世代ProLiantから第9世代ProLiantへの移行に伴い、詳細なドライバーハードウェアインターフェースレベルを除いて、ほとんど変更する必要がありませんでした。アプリケーションコードは、永続ストレージからデータをメモリに読み込み、CPUコアに処理させ、結果を永続ストレージに書き戻すという処理を繰り返しました。これで完了です。
それはもうすぐ変わります。
マルチコアCPUと仮想化サーバーソフトウェアの圧倒的なパワーにより、アプリケーションは永続ストレージからのIOを待機する時間が比例して長くなっています。また、永続ストレージへのレイテンシの大きいIOを回避するため、サーバーはより大きなデータチャンクをより高速に処理する必要性が高まっています。
遅延の責任は 3 つの場所を指し、次のように主張しています。
- ディスクはランダムデータ IO には遅すぎます。
- フラッシュはディスクよりは高速ですが、IO には依然として遅すぎます。
- OS 内のディスクベースの IO スタックは時間がかかりすぎる上に冗長です。
ストレージ メディアを直接接続し、ディスクからフラッシュに移行し、さらにディスクベースの SATA および SAS プロトコルから NVMe ドライバー付きの PCIe に移行することで、ストレージ メディアをサーバーの DRAM および CPU コアに「近づける」ことができます。これにより状況は改善されますが、十分ではありません。
PCIe フラッシュから DRAM にデータを読み込むのに時間がかかりすぎるため、CPU コアがデータを高速に取得するには、そのデータを DRAM またはその他のメモリ メディアに保存する必要があります。
業界で合意に達していると思われる答えは、DRAMは高速ではあるものの、サーバーあたり数テラバイトのレベルでは依然として高価すぎるという点です。その解決策は、メモリDIMMを用いてメモリチャネルにソリッドステートストレージを配置し、不揮発性ではあるもののメモリとして扱うことです。例えばNAND DIMMからDRAM DIMMへのデータの移動は、従来の低速なオペレーティングシステムスタック経由のIOコマンドではなく、メモリ転送ロードおよびストア命令を用いて行われます。
SAS MLC SSDの読み取り時間はわずか150マイクロ秒です。NVMe SSDの読み取り時間は120マイクロ秒です。NVDIMM-Fの読み取り時間は5~10マイクロ秒で、10~20倍以上高速です。NVDIMMの種類別の表を以下に示します。
Xitore NVDIMM チャート (クリックすると拡大表示されます)
グラフ内の Memory1 と NVDIMM-X (Xitore が開発中の NVDIMM 技術) のデータは、ここで論じている議論とは関係がないため、無視してください。
例えば、NVDIM-F が10マイクロ秒(10,000ナノ秒)かかるとします。一方、DDR4 DRAM へのアクセスは14ナノ秒(700倍以上高速)で、これはレベル1キャッシュアクセスが0.5ナノ秒のCPUにとっては遅いと言えます。PCIe SSD へのアクセスに必要なレイテンシは、Micron 9100 NVMe PCIe SSD の場合、書き込みに30マイクロ秒、読み取りに110マイクロ秒です。つまり、Micron NVMe SSD はNVDIMM-F よりもデータアクセスに11倍の時間がかかるということです。(これらの数値は説明のためのものであり、製品によって異なる場合があります。)
ここで、IntelとMicronの3D XPointといったポストNANDメディアについて考えてみましょう。XPointの読み取りレイテンシは7マイクロ秒で、MicronのNVMe SSDの約16倍の速度です。しかも、これは初期のバージョン1.0です。
これらの数字は不揮発性メディアの普及を後押しし、ベンダー各社がNANDやXPoint DIMM(そしてReRAMなどの他のメディア)のアイデアをサーバーベンダーに積極的にアピールするきっかけとなっています。高速ストレージメディアをメモリとして扱うことでIO待機時間を回避できるため、サーバーはより多くのVMをサポートし、VMの動作速度も向上する、と彼らは主張しています。
NVDIMM 不揮発性メディアは、ブロックレベルではなくバイトレベルのアドレス指定でメモリとしてアドレス指定できるため、システムおよびアプリケーション ソフトウェアも時間のかかる IO コマンドの発行を停止し、代わりにメモリのロード/ストア コマンドを実行するように変更する必要があります。
Gen10 ProLiantサーバーがこのようなNVDIMMを採用すると想像してみてください。しかし、オペレーティングシステムがNVDIMM形式のロードストアIOをサポートし、Webブラウザ、データベース、メール、コラボレーションソフトウェアなどの主要システムおよびアプリケーションソフトウェアベンダーがこの新しいメモリ形式のIOをサポートするか、あるいはサポートする確固たる意志を示すまでは、この方法は実現できません。
HPE、Cisco、Dellなどのサーバーベンダーは、NVDIMMとDRAMの容量比率がどの程度であるべきかを理解する必要があります。NVDIMMの容量とPCIeフラッシュおよびSAS/SATAディスクの容量比率を計算できなければなりません。これはつまり、プロトタイプシステムでテストワークロードを実行し、結果を分析し、パフォーマンス、消費電力、温度、コストのバランスをとるようにシステムコンポーネントを最適化することを意味します。
次世代サーバーの開発は、既存の世代よりもはるかに複雑になるでしょう。これは、予想通り一般的に広く理解されているCPU、DRAM、IOアダプタなどの従来の開発に加え、NVDIMM関連のハードウェアとソフトウェアの複雑さが加わるためです。Intelは、特定のアプリケーションワークロードを高速化するために、Altera事業のFPGAも投入すると予想されます。
サーバーベンダーの開発作業は大変ですが、正しく行えば、より強力なサーバーが実現し、私たち全員が満足するはずです。®