はじめに

2019年319日から3日間の日程でテキサス州オースティンにて開催された OpenFabrics Alliance Workshop 2019 (OFA Workshop) に参加した。会場はテキサス大学オースティン校の Joe C Thompson Conference Center だった。

RDMA ネットワーク周辺テーマに関する約30の講演が行われた。昨年行われていた Think Tankという分科会的な集まりはなく、代わって RDMA Tutorial というハンズオン (ラップトップ上に仮想マシンクラスタによる RDMA 開発環境を作成する) が行われていた。

参加者数は昨年 (Michael Aguilar 氏の話では100人) と同程度と思われるが確認していない。

 

参加の目的

当方の参加目的は、リモートパーシステントメモリ (以下、RPM) に関する情報収集である。

昨年3月に OFA SNIA は パーシステントメモリ (PM) へのリモートアクセスに向けたアライアンスを発表した。SNIA は、ストレージドメイン内の情報を管理するための標準、技術、教育サービスを開発、推進する組織である。

SNIA NVMP TWG は、NVM アクセスを提供するソフトウェアインターフェイスセットの共通動作仕様を提供している。

OFA と SNIA のアライアンスは RPM の使用モデル (ユースケースを記述し、そのサポートに必要な API を定義するとしていた。昨年4月に開催された前回の OFA Workshop では、OFA SNIA PM へのリモートアクセスに向けたアライアンスの一環として、上述の Think Tank と呼ばれる、プレワーキンググループのようなものが組織され、RPM のユースケースのアイデアが募られた。

期間中議論されたアウトプットが “OFA Think Tank Session: Remote Persistent Memory” セッションで紹介されている (動画)。今回の興味は、その後の約1年間で状況がどの程度前進しているか、RPM を用いた開発案件着手への見通しである。

前回時点 (2018年4月 OFA Workshop 2018 レポート: Website) の状況をおさらいした後、この質問の答えとなると思われる2つのセッションを紹介する。

前回時点での状況 (おさらい)

SNIA “NVM PM Remote Access for High Availability” Version 1.0 (2016) (資料) から抜粋した、Local Persistent Memory (LPM) およびRemote Persistent Memory (RPM) の定義図を以下に示す。

Remote Persistent Memory (RPM) は、Networked Persistent Memory と Disaggregated Persistent Memory に分類されるが、本稿では前者を対象としている。

 

PM アプリケーション環境として Linux プラットフォームにおいては PMDK ライブラリの使用が一般的である。PMDK SNIA 不揮発性メモリ (NVM) プログラミングテクニカルワークグループ (TWG) が推奨している PM プログラミングモデルの OSS 実装で、Linux 向けと Windows 向けが存在する。

現状、PM アプリケーションの HA 構成を行うためには PMDK の librpmem ライブラリを用いたミラーリングや合意プロトコルを用いたステートマシンを構成する方法等がある。

前者については既存の RDMA ネットワークおよび OFI (libfabric) を用いる方法が一般的である。

PMDK 実装において RPM は、PMDK を使用する PM アプリケーションの HA 構成を目的とする PM プールのレプリケーションにのみ用いられている状況である。PM プールタイプには pmemobj プール、pmemblk プール、pmemlog プール、BTT レイアウトがあるが、このうち pmemobj プールのみがレプリケーションをサポートしている。

PMDK 実装には Linux 向けと Windows 向けが存在するが、Linux 向けのみがレプリケーションをサポートしている。

OFA と SNIA の PM へのリモートアクセスに向けたアライアンスの一環として、2018年の OFA Workshop  で Think Tank と呼ばれる、プレワーキンググループのようなものが組織され、RPM のユースケースのアイデアが募られた。Workshop 期間中議論されたアウトプットが “OFA Think Tank Session: Remote Persistent Memory” セッションで紹介されている (動画

HA 性能改善はその最初のユースケースとなっている。具体的には、RNIC Verbs/プロトコル拡張およびこれを用いたミラーリング実装の改善が期待されている。

RPM を使用するアプリケーションからのカーネルバイパスの flush/drain については、Tom Talpey 氏 (Microsoft) の講演 “Persistent Memory Programming” (動画で、Windows (ネイティブ API) が RNIC の Verbs/プロトコル拡張をサポートする予定と言われている。NTFS/SMB3 の DAX サポートによるカーネルバイパスの flush/drain と組み合わせたレイテンシは一桁μ秒の見込みとも言われている。

RNIC の Verbs/プロトコル拡張については、同じく Tom Talpey 氏らが記述した IETF ドラフト draft-talpey-rdma-commit-00 (2016-02-19 Expired) (資料) の内容に基づくと思われる内容が上述の OFA Workshop 講演等で紹介されている。

現状の RDMA プロトコル仕様 (RFC5040) および RDMA プロトコル拡張 (RFC7306) では、データ配置時、プロトコルはバッファのあるプラットフォームと RDMA ネットワークを介したリモートピアの両方でデータが一貫して visible であることのみを保証するため、障害を跨いでデータが durable であることを保証する仕組みを追加する必要がある。

draft-talpey-rdma-commit-00 (2016-02-19 Expired) では、リモート側で PM を用いる場合に必要となるメモリやキャッシュ上のデータを durable にするための RDMA Commit 新規オペレーションのセマンティクスとワイヤプロトコルの一例、プラットフォーム側に必要、あるいは性能上あることが望ましい動作 (ローカルビヘイビア) を説明している。なお、RDMA Write 等の既存のオペレーションの拡張はない。

RDMA Commit 新規オペレーションのセマンティクスについては、リモートピアに対してメモリリージョンのデータをdurable にすることを要求する RDMA Commit Request と、durable にした後に応答する RDMA Commit Response を追加している。

リモートピア側のコミット処理はローカルプラットフォーム上と実際のデバイス上の処理を含むため、実行に一定の時間がかかると思われるため、コミットオペレーションは、RDMA デバイス上の “queued” オペレーションとして、プロトコル定義する必要があるとしている。

ローカルビヘイビアには durable リージョンでの Write-through ビヘイビアや、Commit Allow NIC をサポートするためのPCI 拡張がある。これは NIC からメモリ上のデータを durable にできるようにする拡張と思われる。

一方、上述の OFA Workshop の講演では RDMA Commit ではなく RDMA Flush という呼称が用いられている他、RDMA Flush の応答前に、次の RDMA Write を発行できるようにする Non-posted Write や、RDMA Write したデータと RDMA Flush したデータが一致していることを検証するための RDMA Verify 等のオペレーションが追加されている。前者の Non-posted Write については IBTA で議論中、後者の RDMA Verify については Tom Talpey 氏の意見という位置づけとしている。ローカルビヘイビアに関しては、上述の PCI 拡張なしでも実現可能であり、プラットフォーム固有のサポートで導入を加速するとしているが、具体的には語られていない。

最新の IETF ドラフトに関する情報については Tom Talpey 氏および Mellanox 社を通じて問い合わせ中であるが、本稿執筆時点で情報は得られていない。

librpmem (PMDK) の Windows サポートについては、2017年の SNIA Storage Developer Conference (SDC) での Pawel Szymanski 氏 (Intel) の講演 “Persistent Memory over Fabric (PMoF)” (資料で、エンハンス項目としている。

Tom Talpey 氏の前回講演内容については前回 (OFA Workshop 2018) のレポート (Website) を参照されたい。

セッションのトピックス

 

  • “Characteristics of Remote Persistent Memory – Performance, Capacity, or Locality. Which One(s)?” – Paul Grun, Cray
    セッション動画: https://youtu.be/fq4emJjUF3c

一言でいえば、前者は着実に進んでいるが、後者は昨年からあまり進んでいない印象である。

前者は SMB3 push mode という明確なユースケースがある状況で、実装に足りないものを具体化・標準化する作業であるが、後者は具体的な RPM アプリケーションが存在しない状況でアプリケーション要件を抽出するところから始めるアプローチであるためやむを得ない感じではある。今後、Gen-Z などのシステムのプロトタイプが現れてくると具体的な RPM アプリケーション実装が現れるのと並行してユースケースや要件も整理されてくるではないかと想像する。いずれのセッションでもQAにおいて Gen-Z や (RDMA ではなく) RMA テクノロジに関する言及があり、今後の新たなネットワーク媒体の登場に OpenFabrics 自体がどう対応していくのか注目したい。

個人的には、今回は上記前者の “RDMA Persistent Memory Extensions” のスピーカーであり、RDMA Flash 等の RDMA 拡張の提案および標準化に向けた取り組みをされている Tom Talpey 氏 (Microsoft) と久しぶり (DAFS Collaborative 以来) に言葉を交わすことができたことが収穫である。DAFS 以降、Tom Talpey 氏は NFS/RDMASMB Direct などの RDMA を用いたネットワークファイルシステムを着実に世に送り出してきており、RPM は上述の SMB3 Push mode を実現する技術として最初に利用可能となるものと思われる。

Storage Developer Conference のトピックス

OFA Workshop 開催半年後の 9月の SDC の講演の中からその後のトピックをいくつか紹介する。

URL: https://www.snia.org/events/storage-developer/presentations19

 

  • Nonvolatile Memory Programming TWG – Remote Persistent Memory (資料)
    Intel の Alan Bumgamer 氏から NVM プログラミングモデルとその実装である Intel の PMDK.io の紹介と NVMP TWG が取り組んでいる HA のためのリモートアクセス拡張の概要説明の後、Microsoft の Tom Talpey 氏からリモートアクセス拡張の動機、内容、動作、RDMA プロトコルおおび PCI Express の拡張、3つのワークロード、次のステップの説明が行われている。

    次バージョンの NVMP (現行バージョン v1.2から fundamental 変更があるため v1.3 ではなく v2.0) の公開および RDMA プロトコルの標準化完了は未だ (年内目標?) であるが、着実に進捗している様子である。

  • Storage RDMA Push Mode to Persistent Memory via SMB3 (資料)
    同じく Microsoft のTom Talpey 氏と Mathew George 氏から RPM のユースケースとして SMB3 push-mode のexperiment が紹介されている。上述の RDMA プロトコルおよび PCI Express 拡張に対応したハードウェアは存在しないものの、リモート側の CPU キャッシュを回避するために PCIe コンフィグレーションレジスタを変更してDDIO (Data Direct I/O) を無効化した状態で 1バイトの RDMA read を発行するというトリックを使用している。2つのベンダの RDMA NIC (具体名は公表なし) を使用して従来の SMB3 に比べ 1/3程度のレイテンシを実現している。ただし、リモート側で CLWB 命令をループ実行する方式 (ソフトウェアフラッシュと呼んでいる) でも同様の低レイテンシが実現できてしまうとのことでまだ研究中の様子である。

    この experiment は当然 Windows プラットフォーム上で行われているが、基本的に Linux でも同様の改善が可能と思われる。ネットワーク共有 PM の研究ツールとして大変興味深い。

  • Intel Optane(tm) DC Persistent Memory Performance Review (資料)
    Intel の Michael Strassamaier 氏から Intel Optane DC Persistent Memory のメリットの1つとして librpmem バージョン2 を使用したリモートリプリケーションのベンチマークが紹介されており、ここでのレイテンシの値は SMB3 push-mode の実験結果よりも1桁小さい (4KBで 15μs に対し 6.76μ秒)。

    これに対して Tom Talpey 氏は使用した RDMA NIC の銘柄を質問している。Michael Strassamaier 氏は “I believe it was a Mellanox NIC. I’m not sure the specific model. I can find out the hardware.” と回答。現行のハードウェアを使用しているということであれば、当然 RDMA プロトコルや PCIe Express の拡張はされていない状態である。これに対して Tom Talpey 氏は “This number actually shocks me. This blow my expectations. So, if it’s real and I’m incredibly excited.” とコメントしている。