JP6403782B2 - リモート・ダイレクト・メモリ・アクセス(rdma)高性能プロデューサ・コンシューマ・メッセージ処理 - Google Patents

リモート・ダイレクト・メモリ・アクセス(rdma)高性能プロデューサ・コンシューマ・メッセージ処理 Download PDF

Info

Publication number
JP6403782B2
JP6403782B2 JP2016542942A JP2016542942A JP6403782B2 JP 6403782 B2 JP6403782 B2 JP 6403782B2 JP 2016542942 A JP2016542942 A JP 2016542942A JP 2016542942 A JP2016542942 A JP 2016542942A JP 6403782 B2 JP6403782 B2 JP 6403782B2
Authority
JP
Japan
Prior art keywords
message
data
messaging hub
rdma
data portions
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016542942A
Other languages
English (en)
Other versions
JP2017500669A (ja
Inventor
ガオ、ユイチーン
ゲーリン、ザビエル、アール
ムオン、シャオチャオ
サロ、ティーア
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2017500669A publication Critical patent/JP2017500669A/ja
Application granted granted Critical
Publication of JP6403782B2 publication Critical patent/JP6403782B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/04Real-time or near real-time messaging, e.g. instant messaging [IM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)

Description

本発明は、メッセージング・ハブにおけるメッセージ処理に関し、より特定的には、高速大容量のメッセージ処理に関する。
メッセージング・ハブは、分散型コンピューティング・システム間のメッセージの交換をサポートする、プログラマティック・インフラストラクチャ内に配置されたミドルウェアである。この点で、メッセージング・ハブのメッセージ・ブローカリング(message brokering)操作性は、メッセージング・コンポーネントにより管理されるメッセージ・キューを通して通信しながら、アプリケーション・モジュールを異種のプラットフォームにわたって分散させることを可能にし、複数のオペレーティング・システム及びネットワーク・プロトコルにわたるアプリケーションを開発する複雑さを低減させる。従って、メッセージング・ハブは、アプリケーション開発者を種々のオペレーティング・システム及びネットワーク・インターフェースの細部から保護する分散型の通信層を生成する。
既存のメッセージ・サービスを便利なハードウェア・フォーム・ファクタに統合するだけのメッセージ・アプライアンスとは違って、メッセージング・ハブの最新世代は、企業を超えた大規模通信の配信用に特に設計される。これらのメッセージング・アプライアンスは、マシン間の通信のために発行・購読型(publish and subscribe)メッセージングを配信し、インターネットの世界を呈する多数のデバイス及びセンサに通信可能に接続する。従って、これらのメッセージング・アプライアンスは、同時に接続されるデバイス数を劇的に拡大させ、大容量のイベントを分析エンジンにストリーミングし、ビッグデータを処理することを可能にする。
注目すべきことに、データ交換のためにメッセージング・ハブを利用する大部分のアプリケーションは、クライアントとサーバとの間であっても、処理ノード、処理段階、又は実行スレッド間であっても、低待ち時間(low latency)(すなわち、1マイクロ秒乃至100マイクロ秒)、高スループット(毎秒10万乃至1000万メッセージ)、及び同じく高い同時実行性(high concurrency)(すなわち、同時に実行中の(in flight)複数の持続メッセージ)のそれぞれを必要とする。メッセージング・ハブにおいて通常のキューを使用する際、待ち時間のコストは、ディスクへのI/O操作のコストと同じオーダーである。複数のキューがエンド・ツー・エンド操作に関与する限りは、数百マイクロ秒が、トランザクションの待ち時間全体に付加される。CPUレベルのキャッシュミス、及びカーネル・アーキテクチャレーションを必要とするロックも、メッセージング・ハブにおける従来のキューイングの結果である場合があり、非常に費用がかかり得る。
メッセージング・ハブにおけるメッセージ・キュー手法は、付加的な弱点(すなわち、メッセージ・プロデューサとメッセージ・コンシューマとの間にデッドロック状態が生じる可能性)を示す。具体的には、メッセージ・キュー手法において、メッセージ・プロデューサは、バッファが一杯である場合、データをバッファに付加しようとしてはならない。同様に、メッセージ・コンシューマは、空のバッファからデータを削除しようとしてはならない。従って、メッセージ・キュー手法において、メッセージ・プロデューサは、バッファが一杯である場合、「スリープする」か、又はデータを廃棄する。一方で、メッセージ・コンシューマは、バッファからデータを削除すると、メッセージ・プロデューサに通知し、メッセージ・プロデューサは、データをバッファに再度付加することができる。同様に、メッセージ・コンシューマが、バッファが空であることを見出すと、メッセージ・コンシューマは「スリープする」ことができる。メッセージ・プロデューサが後でデータをバッファに付加すると、メッセージ・プロデューサは、スリープ中のメッセージ・コンシューマを目覚めさせる。従って、メッセージ・コンシューマ及びメッセージ・プロデューサのどちらも他方により目覚めるのを待つ場合には、デッドロック状態が生じることがある。
メッセージング・ハブにおけるリモート・ダイレクト・メモリ・アクセス(RDMA)最適化プロデューサ・コンシューマ・メッセージ処理を提供する。
本発明の実施形態は、メッセージング・ハブにおけるメッセージ処理に関する当技術分野の欠陥に対処し、メッセージング・ハブにおけるリモート・ダイレクト・メモリ・アクセス(RDMA)最適化プロデューサ・コンシューマ・メッセージ処理のための新規で自明ではない方法、システム及びコンピュータ・プログラム製品を提供する。本発明の実施形態において、メッセージング・ハブにおけるRDMA最適化プロデューサ・コンシューマ・メッセージ処理のための方法が、メッセージング・ハブの動作をホストするホスト・サーバのメモリ内の共有メモリ領域を初期化することを含む。
この初期化は、共有メモリ領域の制御部分、及び共有メモリ領域の1つ又は複数のデータ部分を提供し、制御部分は、データ部分の利用可能な部分へのインデックスを格納する。この方法はまた、コンピュータ通信ネットワーク上でメッセージ・プロデューサに共有メモリ領域のアドレスを伝送することと、ホスト・サーバのネットワーク・インターフェース上で、RDMA書き込み操作を介して、メッセージ・プロデューサから、共有メモリ領域のデータ部分の1つにメッセージを受信することも含む。最後に、この方法は、メッセージの受信に応答して、共有メモリ領域のデータ部分の1つからメッセージを取り出し、メッセージング・ハブにおいて受信したメッセージを処理することを含む。
実施形態の1つの態様において、メッセージは、RDMA書き込み操作によりトリガされるデータ利用可能イベントを検出することに応答して、取り出され、処理される。本発明の別の態様において、データ部分は等しいサイズのものであり、データ部分の各々は、データ部分が有効状態(valid status)であるか又は無効状態(invalid status)であるか、及び、データ部分がメッセージング・ハブによりサーバにおいて処理されたかどうかを示す、状態語(status word)を含む。従って、実施形態のさらに別の態様において、メッセージは、次の利用可能なデータ部分の状態が有効である場合、次の利用可能なデータ部分に書き込まれず、ひとたび次の利用可能なデータ部分の状態が無効になって初めて、次の利用可能なデータ部分に書き込まれる。
実施形態のさらに別の態様において、メッセージは、第1に共有メモリ領域のアドレスから制御部分の位置を計算し、第2に制御部分の位置にRDMA 読み出し追加(fetch−and−add)操作を行って制御部分からインデックス・データを獲得し、第3にインデックス・データのモジュロを計算してデータ部分の次の利用可能な部分の位置をもたらし、第4にデータ部分の次の利用可能な部分に対してメッセージのRDMA書き込み操作を行うことによって、ネットワーク・インターフェース上でRDMA書き込み操作を介して受信される。
最後に、メッセージング・ハブは、メッセージを1つ又は複数の購読しているメッセージ・コンシューマに転送することによって、メッセージを処理する。代替的に、メッセージング・ハブは、メッセージを1つ又は複数の購読しているメッセージ・コンシューマに転送することなく、メッセージを廃棄することによって、メッセージを処理する。
本発明の別の実施形態において、データ処理システムが、メッセージング・ハブにおけるRDMA最適化プロデューサ・コンシューマ・メッセージ処理のために構成される。このシステムは、メモリ及び少なくとも1つのプロセッサを有するホスト・サーバと、ホスト・サーバのメモリ内で動作するメッセージング・ハブとを含む。メッセージング・ハブは、ネットワーク・インターフェースを通して、コンピュータ通信ネットワーク上のそれぞれ異なるクライアント・コンピューティング・システム内で実行される異なるメッセージ生成アプリケーションへの通信可能な結合を提供する。最後に、このシステムは、ホスト・サーバのメモリ内で実行され、メッセージング・ハブに結合されたRDMA最適化処理モジュールを含む。
このモジュールは、実行中にイネーブルにされて、データ部分の利用可能な部分へのインデックスを格納する制御部分と、1つ又は複数のデータ部分とを含むように、ホスト・サーバのメモリの共有領域を初期化し、メッセージ生成アプリケーションにメモリの共有領域のアドレスを伝送し、ホスト・サーバのネットワーク・インターフェース上で、RDMA書き込み操作を介して、メッセージ生成アプリケーションの1つから、メモリの共有領域のデータ部分の1つにメッセージを受信し、メッセージの受信に応答して、共有メモリ領域のデータ部分の1つからメッセージを取り出し、メッセージング・ハブにおける受信メッセージの処理を指示する、プログラム・コードを含む。
本発明の付加的な態様は、以下の説明において部分的に示され、説明から部分的に明らかであり、又は本発明の実施により知ることができる。本発明の態様は、特に、添付の特許請求の範囲において指し示される要素及び組み合わせによって実現され、達成されるであろう。上記の一般的説明及び以下の詳細な説明は両方とも単に例示及び説明のためのものにすぎず、特許請求されるような本発明を制限するものではないことを理解されたい。
本明細書に組み込まれ、その部分を構成する添付図面は、本発明の実施形態を示し、説明と共に、本発明の原理を説明する役割を果たす。本明細書に示される実施形態は、現在好ましいものであるが、本発明は、示される正確な構成及び手段に制限されないことが理解される。
メッセージング・ハブにおけるRDMA最適化プロデューサ・コンシューマ・メッセージ処理のためのプロセスを図示する。 メッセージング・ハブにおけるRDMA最適化プロデューサ・コンシューマ・メッセージ処理のために構成されたデータ処理システムの概略図である。 メッセージング・ハブにおけるRDMA最適化プロデューサ・コンシューマ・メッセージ処理のためのプロセスを示すフローチャートである。
本発明の実施形態は、メッセージング・ハブにおけるRDMA最適化プロデューサ・コンシューマ・メッセージ処理を提供する。本発明の実施形態によると、サーバのメモリ内で実行されるメッセージング・ハブは、データ・セクション及び制御セクションを含むようにサーバのメモリの一部を初期化し、制御セクションは、データ・セクションの空いた部分へのインデックス付けを行う。その後、メッセージをメッセージング・ハブに送ろうとする遠隔配置されたメッセージ・プロデューサは、サーバのネットワーク・インターフェースにおいてRDMAを用いて制御セクションにアクセスし、同じくRDMAを用いて制御セクションにより指定される空いた部分にデータを書き込むことができる。次に、メッセージング・ハブは、データを読み取り、データを購読するメッセージ・コンシューマに読み取ったデータを発行することによって、メモリの空いた部分へのデータの書き込みに反応する。その際、メッセージ・プロデューサは、データをメッセージング・ハブに転送するためにメッセージング・キューの使用又はサーバの1つ又は複数のプロセッサの介入を全く必要とすることがない。
さらに別の例証において、図1は、メッセージング・ハブにおけるRDMA最適化プロデューサ・コンシューマ・メッセージ処理のためのプロセスを図示する。図1に示されるように、メッセージング・ハブ110は、制御部分120及び1つ又は複数のデータ部分130を含むように、共有メモリの領域を初期化することができる。制御部分120は特に、メッセージ・プロデューサ150がメッセージを配置することができる、利用可能な1つのデータ部分130へのインデックスを与えることができる。
この点で、メッセージ・プロデューサ150は、メッセージング・ハブのネットワーク・インターフェース160を通して、メッセージング・ハブ110に接続することができる。メッセージング・ハブ110に接続すると、メッセージング・ハブ110は共有メモリのアドレスを与えることができ、それから、メッセージ・プロデューサ150は制御部分120を推定することができる。その後、メッセージ・プロデューサは、ネットワーク・インターフェース160においてRDMA要求を用いて制御部分120のコンテンツにアクセスすることによって、共有メモリのデータ部分130へのインデックスを獲得することができる。
ひとたびメッセージ・プロデューサ150がインデックスを獲得すると、メッセージ・プロデューサ150は、ネットワーク・インターフェース160において再びRDMA操作を用いて、メッセージ140を、データ部分130のインデックス付けされた部分に書き込むことができる。その後、メッセージ・プロデューサ150によるデータ部分130のインデックス付けされた部分へのメッセージ140の書き込みは、イベント180をトリガする。そのイベント180は、メッセージング・ハブに、データ部分130のインデックス付けされた部分を読み取ってメッセージ140を獲得するように警告するものである。メッセージ140を獲得すると、メッセージング・ハブ110は、メッセージ140を購読しているメッセージ・コンシューマ170に伝送するといった、メッセージ140の処理を行うことができる。
図1と関連して示されるプロセスは、データ処理システム内で実施することができる。より特定的な図において、図2は、メッセージング・ハブにおけるRDMA最適化プロデューサ・コンシューマ・メッセージ処理のために構成されたデータ処理システムを概略的に示す。システムは、メモリと、メッセージング・ハブ220の動作をホストする少なくとも1つのプロセッサとを有するホスト・サーバ210を含むことができる。メッセージング・ハブ220は、コンピュータ通信ネットワーク270上で、クライアント・コンピューティング・システム240の間に配置された異なるアプリケーション250からの発行・購読型の枠組みに従って、ホスト・サーバ210のネットワーク・インターフェース230を通してメッセージ280を処理するように構成することができる。
RDMA最適化メッセージ処理モジュール300は、ホスト・サーバ210のメモリ内で実行され、クライアント・コンピューティング・システム240と関連してアプリケーション250の各々に結合されたメッセージング・モジュール260と相互運用することができる。RDMA最適化メッセージ処理モジュール300は、ホスト・サーバ210のメモリ内で実行されるとき、メッセージ280を互いに交換する異なるアプリケーション250により共有するために、ホスト・サーバ210のメモリの領域を初期化することができるプログラム・コードを含むことができる。この領域は、等しいサイズのデータ部分に分割することができ、同じくこの領域は、一つの制御部分を含むことができる。
制御部分はデータ部分の次の空いた部分のインデックスを格納することができ、一方、各データ部分は、メッセージ280の形態のデータを格納することに加えて、格納されたデータが有効か又は無効かを示す状態語を格納することができる。有効とは、データがメッセージング・ハブ220により処理できる状態であることを意味する。無効とは、データがメッセージング・ハブ220により既に処理されていることを意味する。RDMA最適化メッセージ処理モジュール300のプログラム・コードはまた、ホスト・サーバ210のメモリ内で実行中にイネーブルにされ、メッセージ・モジュール260の1つによる接続に応答して、共有メモリ領域のアドレス、共有メモリ領域における各データ部分のサイズ、及びメッセージ・モジュール260による利用に供されるデータ部分の総数をメッセージ・モジュール260に提供することもできる。
注目すべきことに、RDMA最適化メッセージ処理モジュール300に対する協働アネックス(Cooperative annex)としての各メッセージ・モジュール260は、クライアント・コンピューティング・システム240の対応するもののメモリ内で実行されると、イネーブルにされて、接続中のRDMA最適化メッセージ処理モジュール300により与えられる情報から、例えばメモリ領域の始まりの位置などの共有メモリ領域の制御部分の位置、及び同じく共有メモリ領域内の第1のデータ部分のアドレスを判断するプログラム・コードを含むことができる。その後、メッセージ・モジュール260のプログラム・コードは、第1の利用可能なデータ部分へのインデックスを獲得することができる。
特に、メッセージ・モジュール260のプログラム・コードは、最初に、次の利用可能な1つのデータ部分のインデックスを含む共有メモリ領域の位置に、ネットワーク・インターフェース230のRDMA 読み出し追加(fetch−and−add)操作を実施することができる。その後、メッセージ・モジュールのプログラム・コードは、読み出し追加操作により戻される値に対し共有メモリ領域内の総データ部分のモジュロ(modulo:除算後の余り)を計算することができる。結果は、ホスト・サーバ210のメモリの共有領域の第1の利用可能なデータ・セクションへのインデックスとなる。任意的に、メッセージ・モジュール260のプログラム・コードは、インデックスが無効とマーク付けされた場合にのみメッセージがデータ・セクションに書き込まれることを確実にするために、インデックスにより参照されるデータ部分が有効とマーク付けされるか又は無効とマーク付けされるかを判断することができる。
ひとたびメッセージ・モジュール260が、無効状態であると分かっているデータ部分を識別すると、メッセージ・モジュール260は、ネットワーク・インターフェース230を通して、RDMA書き込み操作を用いて、メッセージ280をインデックス付けされたデータ部分に書き込むことができる。その結果、データ部分の状態は自動的に有効になる。また、RDMA書き込み操作は、新しく書き込まれたメッセージ280を格納するデータ部分へのインデックスを含むホスト・サーバ210内のデータ利用可能イベントをトリガする。データ利用可能イベントに応答して、データ利用可能イベントに対処するようにプログラムされたRDMA最適化メッセージ処理モジュール300のプログラム・コードの実行の1つ又は複数のスレッドは、メッセージ280をメモリに読み込み、無効なデータ部分にマーク付けし、そして、メッセージ280をアプリケーション250の1つ又は複数の購読しているものに伝送し、メッセージ280を廃棄し、メッセージ208を持続させ、又は他の何らかの操作によりメッセージ280に作用させることによって、メッセージ280を処理することができる。
RDMA最適化メッセージ処理モジュール300及びメッセージ・モジュール260の動作のさらにより特定的な図において、図3は、メッセージング・ハブにおけるRDMAを用いた最適化プロデューサ・コンシューマ・メッセージ処理を示すフローチャートである。メッセージング・ハブにおけるRDMA最適化プロデューサ・コンシューマ・メッセージ処理に関するブロック305において始まり、制御部分及び等しいサイズの1つ又は複数のデータ部分の両方を含むように、ホスト・サーバの共有メモリ領域を初期化することができ、各々のデータ部分は、内部に含まれるデータが有効か又は無効かを示す語も含む。ブロック310において、制御部分において、第1の利用可能なデータ部分に対してインデックスを設定することができる。
ブロック315において、メッセージ・プロデューサとして働くクライアント・コンピューティング・システム内のメッセージ・モジュールから、クライアント接続を受け取ることができる。それに応じて、ブロック320において、共有メモリ領域のメモリ内のアドレスを、多数のデータ部分及びあるサイズの各データ部分と共に、メッセージ・モジュールに与えることができる。その後、RDMA最適化メッセージ処理モジュールの実行の1つ又は複数のスレッドは、データ利用可能イベントの検出を待つことができる。決定ブロック325において、データ利用可能イベントが検出された場合、ブロック330において、共有メモリ領域のデータ部分の1つにおけるデータの位置は、データ利用可能イベントから判断することができ、ブロック335において、データを取り出し、メッセージとして処理することができる。
ここでメッセージ生成クライアントにおけるメッセージ・モジュールの動作を参照すると、ブロック340において、メッセージング・ハブのホスト・サーバとの接続を確立し、メッセージング・ハブへのメッセージを生成し、任意的にメッセージング・ハブからのメッセージを消費することができる。ブロック345において、多数のデータ部分及びあるサイズの各データ部分と共に、RDMA最適化メッセージ処理モジュールから、共有メモリ領域のメモリ内のアドレスを取り出すことができる。その後、ブロック350において、メッセージング・ハブの動作をホストするホスト・サーバへのネットワーク・インターフェース上で、RDMA 読み出し追加操作を呼び出してインデックス・データを獲得し、そこから、ブロック355において、共有メモリ領域の次の利用可能なデータ部分に対するインデックスを計算することができる。
決定ブロック360において、データ部分の有効状態又は無効状態に基づいて、次のデータ部分が新しく書き込まれたデータを受け取ることができるかどうかを判断できる。次の利用可能なデータ部分が有効状態でないと判断された場合、ブロック365において、メッセージ・モジュールは、状態が無効になるまで、データ部分の有効状態又は無効状態をポーリングしながら待つことができる。決定ブロック360において、次の利用可能なデータ部分の状態が有効状態であると判断された場合、ブロック370において、メッセージを次の利用可能なデータ部分に書き込み、ブロック375において、状態を有効に設定することができる。ブロック370において、メッセージを次の利用可能なデータ部分に書き込む動作は、ブロック330及び335における処理のためのデータ利用可能イベントもトリガする。
当業者であれば理解するように、本発明の態様は、システム、方法又はコンピュータ・プログラム製品として具体化することができる。従って、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)、又はソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態の形態をとることができ、本明細書においては、これらは全て、一般的に「回路」、「モジュール」又は「システム」と呼ぶことがある。さらに、本発明の態様は、媒体内に具体化されたコンピュータ可読プログラム・コードを有する、1つ又は複数のコンピュータ可読媒体内に具体化されたコンピュータ・プログラム製品の形態をとることができる。
1つ又は複数のコンピュータ可読媒体のいずれかの組み合わせを用いることもできる。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読ストレージ媒体とすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子、磁気、光学、電磁気、赤外線若しくは半導体のシステム、装置若しくはデバイス、又は上記のもののいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例(非網羅的なリスト)として、以下のもの、即ち、1つ又は複数の配線を有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能なプログラム可能読み出し専用メモリ(EPROM又はフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク型読み出し専用メモリ(CD−ROM)、光記憶装置、磁気記憶装置、又は上記のもののいずれかの適切な組み合わせが挙げられる。本明細書の文脈においては、コンピュータ可読ストレージ媒体は、命令実行システム、装置若しくはデバイスによって又はそれらと関連して用いるためのプログラムを収容又は格納することが可能な任意の有形媒体とすることができる。
コンピュータ可読信号媒体は、例えばベースバンド内に、又は搬送波の一部として、具体化されたコンピュータ可読プログラム・コードをその中に有する、伝搬されるデータ信号を含むことができる。このような伝搬信号は、これらに限定されるものではないが、電磁気、光又はそれらのいずれかの適切な組み合わせを含む、種々の形態のいずれかを取ることができる。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではなく、かつ、命令実行システム、装置若しくはデバイスによって、又はこれらと関連して用いるためのプログラムを伝達し、伝搬し、又は搬送することができる任意のコンピュータ可読媒体とすることができる。
コンピュータ可読媒体上に具体化されたプログラム・コードは、これらに限定されるものではないが、無線、有線、光ファイバ・ケーブル、無線周波数等、又は上記のもののいずれかの適切な組み合わせを含む任意の適切な媒体を用いて伝送することができる。本発明の態様の操作を実行するためのコンピュータ・プログラム・コードは、オブジェクト指向型プログラミング言語及び従来の手続き型プログラミング言語を含む、1つ又は複数のプログラミング言語のいずれかの組み合わせで記述することができる。プログラム・コードは、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。最後のシナリオにおいては、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)若しくは広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続が為される場合もある(例えば、インターネット・サービス・プロバイダを用いたインターネットを通じて)。
本発明の態様は、本発明の実施形態による方法、装置(システム)及びコンピュータ・プログラム製品のフローチャート図及び/又はブロック図を参照して上述される。この点で、図内のフローチャート及びブロック図は、本発明の種々の実施形態によるシステム、方法及びコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。例えば、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に記された機能は、図内で記された順序とは異なる順序で生じ得ることにも留意されたい。例えば、連続して示された2つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はときとして逆順で実行されることもある。ブロック図及び/又はフローチャート図の各ブロック、及びブロック図及び/又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を実行する専用ハードウェア・ベースのシステム、又は専用のハードウェアとコンピュータ命令との組み合わせによって実装することができることにも留意されたい。
フローチャート図及び/又はブロック図の各ブロック、並びにフローチャート図及び/又はブロック図内のブロックの組み合わせは、コンピュータ・プログラム命令によって実装することができることも理解されるであろう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロック内で指定された機能/動作を実装するための手段を作り出すようにすることができる。
これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装する命令を含む製品を製造するようにすることもできる。コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生成し、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実行するためのプロセスを提供するようにすることもできる。
最後に、本明細書で用いられる用語は、特定の実施形態を説明するためのものにすぎず、本発明を限定することを意図したものではない。本明細書で用いられる場合、単数形「1つの(a)」、「1つの(an)」及び「その(the)」は、文脈が明らかにそうでないことを示さない限り、複数形も同様に含むことを意図したものである。「含む(comprise)」及び/又は「含んでいる(comprising)」という用語は、本明細書で用いられる場合、記述された特徴、整数、ステップ、操作、要素、及び/又はコンポーネントの存在を指定するが、1つ又は複数の他の特徴、整数、ステップ、操作、要素、コンポーネント、及び/又はこれらの群の存在又は付加を排除するものではないことがさらに理解されるであろう。
以下の特許請求の範囲における全ての「手段又はステップと機能との組み合わせ(ミーンズ又はステップ・プラス・ファンクション)」要素の対応する構造、材料、動作及び均等物は、その機能を、明確に特許請求される他の特許請求された要素と組み合わせで実行するためのあらゆる構造、材料又は動作を含むことが意図されている。本発明の説明は、例証及び説明を目的として提示されたものであり、網羅的であること又は本発明を開示された形態に限定することを意図したものではない。本発明の範囲及び趣旨から逸脱しない多くの修正及び変形が、当業者には明らかになるであろう。実施形態は、本発明の原理及び実際的用途を最も良く説明するために、そして、当業者が、企図した特定の用途に適した種々の修正を伴う実施形態に関して本発明を理解できるように、選択され、説明された。
このように、本出願の発明を詳細に、その実施形態を参照して説明したが、以下の添付の特許請求に定められる本発明の範囲から逸脱することなく、修正及び変形が可能なことが明らかになるであろう。
110、220:メッセージング・ハブ
120:制御部分
130:データ部分
140、280:メッセージ
150:メッセージ・プロデューサ
160:ネットワーク・インターフェース
180:イベント
210:ホスト・サーバ
230:ネットワーク・インターフェース
240:クライアント・コンピューティング・システム
250:アプリケーション
260:メッセージ・モジュール
270:コンピュータ通信ネットワーク
300:RDMA最適化メッセージ処理モジュール

Claims (12)

  1. メッセージング・ハブにおけるリモート・ダイレクト・メモリ・アクセス(RDMA)を用いたプロデューサ・コンシューマ間のメッセージ交換のために構成されたデータ処理システムであって、
    メモリ及び少なくとも1つのプロセッサを有するホスト・サーバと、
    前記ホスト・サーバの前記メモリ内で動作するメッセージング・ハブであって、ネットワーク・インターフェースを通してクライアント・コンピューティング・システムのメッセージ生成アプリケーションと通信する、メッセージング・ハブと、を含み、
    前記メッセージング・ハブは、
    制御部分と、1つ又は複数のデータ部分と、を含み、前記制御部分が前記1つ又は複数のデータ部分のうち利用可能なデータ部分の1つへのインデックスを格納するように、前記ホスト・サーバの前記メモリの共有領域を初期化し、
    前記メッセージ生成アプリケーションに前記メモリの前記共有領域のアドレスを伝送し、
    前記ホスト・サーバの前記ネットワーク・インターフェース上で、前記メッセージ生成アプリケーションによるRDMA書き込み操作を介して、前記メモリの前記利用可能なデータ部分の1つにメッセージを受信し、
    前記メッセージの受信に応答して、前記利用可能なデータ部分の前記1つから前記メッセージを取り出し、前記取り出したメッセージの処理を指示する、データ処理システム。
  2. メッセージング・ハブにおけるリモート・ダイレクト・メモリ・アクセス(RDMA)を用いたプロデューサ・コンシューマ間のメッセージ交換のためのコンピュータ・プログラムであって、
    前記メッセージング・ハブに、
    前記メッセージング・ハブの動作をホストするホスト・サーバのメモリ内の共有メモリ領域を初期化するステップあって、前記初期化は、前記共有メモリ領域の制御部分と、前記共有メモリ領域の1つ又は複数のデータ部分と、を提供し、前記制御部分は、前記1つ又は複数のデータ部分のうち利用可能なデータ部分の1つへのインデックスを格納する、前記初期化するステップ
    コンピュータ通信ネットワーク上でメッセージ・プロデューサに、前記共有メモリ領域のアドレスを伝送するステップ
    前記ホスト・サーバのネットワーク・インターフェース上で、前記メッセージ・プロデューサによるRDMA書き込み操作を介して、前記共有メモリ領域の前記利用可能なデータ部分の1つにメッセージを受信するステップ
    前記メッセージの受信に応答して、前記利用可能なデータ部分の前記1つから前記メッセージを取り出し、前記取り出したメッセージを処理するステップを実行させるためのコンピュータ・プログラム。
  3. メッセージング・ハブにおけるリモート・ダイレクト・メモリ・アクセス(RDMA)を用いたプロデューサ・コンシューマ間のメッセージ交換のための方法であって、
    前記メッセージング・ハブが、
    前記メッセージング・ハブの動作をホストするホスト・サーバのメモリ内の共有メモリ領域を初期化するステップあって、前記初期化は、前記共有メモリ領域の制御部分と、前記共有メモリ領域の1つ又は複数のデータ部分と、を提供し、前記制御部分は、前記1つ又は複数のデータ部分のうち利用可能なデータ部分の1つへのインデックスを格納する、初期化するステップと、
    コンピュータ通信ネットワーク上でメッセージ・プロデューサに、前記共有メモリ領域のアドレスを伝送するステップと、
    前記ホスト・サーバのネットワーク・インターフェース上で、前記メッセージ・プロデューサによるRDMA書き込み操作を介して、前記共有メモリ領域の前記利用可能なデータ部分の1つにメッセージを受信するステップと、
    前記メッセージの受信に応答して、前記利用可能なデータ部分の前記1つから前記メッセージを取り出し、前記取り出したメッセージを処理するステップと、
    実行する、方法。
  4. 前記メッセージング・ハブは、前記メッセージ・プロデューサによる前記RDMA書き込み操作によりトリガされるデータ利用可能イベントを検出することに応答して、前記メッセージを取り出、処理る、請求項3に記載の方法。
  5. 前記1つ又は複数のデータ部分は等しいサイズのものである、請求項3に記載の方法。
  6. 前記データ部分の各々は、前記データ部分が有効状態であるか又は無効状態であるかを示す状態語を含む、請求項3に記載の方法。
  7. 前記メッセージ・プロデューサは、前記利用可能なデータ部分の前記状態が有効である場合、前記メッセージを前記利用可能なデータ部分に書き込まず、ひとたび前記利用可能なデータ部分の前記状態が無効になって初めて、前記メッセージを前記利用可能なデータ部分に書き込、請求項6に記載の方法。
  8. 前記メッセージは、
    前記メッセージ・プロデューサが、第1に前記メモリの共有領域の前記アドレスから前記制御部分の位置を計算し、
    第2に前記制御部分の前記位置にRDMA読み出し追加操作を行って前記制御部分からのインデックス・データを獲得し、
    第3に前記インデックス・データのモジュロを計算して前記データ部分の前記利用可能なデータ部分の位置をもたらし、
    第4に前記利用可能なデータ部分に対して前記メッセージのRDMA書き込み操作を行うことによって、受信される、請求項3に記載の方法。
  9. 前記メッセージング・ハブは、前記メッセージを1つ又は複数の購読しているメッセージ・コンシューマに転送することによって、前記メッセージを処理する、請求項3に記載の方法。
  10. 前記メッセージング・ハブは、前記メッセージを1つ又は複数の購読しているメッセージ・コンシューマに転送することなく、前記メッセージを廃棄することによって、前記メッセージを処理する、請求項3に記載の方法。
  11. 請求項4乃至10の何れか一項に記載の方法の各ステップをプロセッサに実行させるためのコンピュータ・プログラム。
  12. 請求項4乃至10の何れか一項に記載の方法の各ステップを実行するプロセッサを備えたデータ処理システム。
JP2016542942A 2013-12-30 2014-10-15 リモート・ダイレクト・メモリ・アクセス(rdma)高性能プロデューサ・コンシューマ・メッセージ処理 Active JP6403782B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/144,537 2013-12-30
US14/144,537 US9495325B2 (en) 2013-12-30 2013-12-30 Remote direct memory access (RDMA) high performance producer-consumer message processing
PCT/CN2014/088604 WO2015101078A1 (en) 2013-12-30 2014-10-15 Remote direct memory access (rdma) high performance producer-consumer message processing

Publications (2)

Publication Number Publication Date
JP2017500669A JP2017500669A (ja) 2017-01-05
JP6403782B2 true JP6403782B2 (ja) 2018-10-10

Family

ID=53481941

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016542942A Active JP6403782B2 (ja) 2013-12-30 2014-10-15 リモート・ダイレクト・メモリ・アクセス(rdma)高性能プロデューサ・コンシューマ・メッセージ処理

Country Status (3)

Country Link
US (4) US9495325B2 (ja)
JP (1) JP6403782B2 (ja)
WO (1) WO2015101078A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101591061B1 (ko) * 2014-12-30 2016-02-02 주식회사 코난테크놀로지 실시간 처리를 위한 전송 라이브러리 시스템 및 그 시스템에서의 송/수신 방법
US10810179B2 (en) * 2015-09-25 2020-10-20 Microsoft Technology Licensing, Llc Distributed graph database
JP6740683B2 (ja) * 2016-04-07 2020-08-19 富士通株式会社 並列処理装置及び通信制御方法
CN106210049B (zh) * 2016-07-12 2020-12-22 武汉Tcl集团工业研究院有限公司 一种基于消息队列的集群通信方法及***
US11254559B2 (en) * 2017-03-05 2022-02-22 Kris Vossough FET based sensory systems
CN107341203A (zh) * 2017-06-22 2017-11-10 北京北信源软件股份有限公司 一种分布式搜索引擎的访问控制和索引优化方法与装置
US10979514B2 (en) 2018-12-03 2021-04-13 International Business Machines Corporation Flexible message transformation and delivery
CN111352743B (zh) * 2018-12-24 2023-12-01 北京新媒传信科技有限公司 一种进程通讯方法和装置
CN109918217A (zh) * 2019-03-21 2019-06-21 联想(北京)有限公司 一种控制方法及终端
CN111459418B (zh) * 2020-05-15 2021-07-23 南京大学 一种基于rdma的键值存储***传输方法
US20220206852A1 (en) * 2020-12-31 2022-06-30 Nutanix, Inc. Lockless handling of buffers for remote direct memory access (rdma) i/o operations
CN113347115B (zh) * 2021-08-06 2021-11-26 北京国科天迅科技有限公司 消息处理方法、装置、电子设备及介质

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4192416B2 (ja) * 2000-06-08 2008-12-10 株式会社日立製作所 計算機システムおよびそのデータ転送方法
US20050018669A1 (en) 2003-07-25 2005-01-27 International Business Machines Corporation Infiniband subnet management queue pair emulation for multiple logical ports on a single physical port
GB0427798D0 (en) * 2004-12-18 2005-01-19 Ibm Publish/subscribe messaging system
US8458280B2 (en) 2005-04-08 2013-06-04 Intel-Ne, Inc. Apparatus and method for packet transmission over a high speed network supporting remote direct memory access operations
US20090083392A1 (en) * 2007-09-25 2009-03-26 Sun Microsystems, Inc. Simple, efficient rdma mechanism
JP4561800B2 (ja) * 2007-09-25 2010-10-13 沖電気工業株式会社 データ同期システム及び方法
CN101311661A (zh) 2008-02-19 2008-11-26 管理 一种水膜沫吸热热管中介热交换的烟汽余热热凝回收技术
US8131814B1 (en) * 2008-07-11 2012-03-06 Hewlett-Packard Development Company, L.P. Dynamic pinning remote direct memory access
US8577986B2 (en) 2010-04-02 2013-11-05 Microsoft Corporation Mapping RDMA semantics to high speed storage
US20120331243A1 (en) * 2011-06-24 2012-12-27 International Business Machines Corporation Remote Direct Memory Access ('RDMA') In A Parallel Computer
JP5772380B2 (ja) 2011-08-11 2015-09-02 富士通株式会社 通信装置、通信方法、および通信プログラム
US8832216B2 (en) 2011-08-31 2014-09-09 Oracle International Corporation Method and system for conditional remote direct memory access write
US9116761B2 (en) 2011-09-29 2015-08-25 Oracle International Corporation System and method for preventing single-point bottleneck in a transactional middleware machine environment
US9996403B2 (en) * 2011-09-30 2018-06-12 Oracle International Corporation System and method for providing message queues for multinode applications in a middleware machine environment
US8880935B2 (en) * 2012-06-12 2014-11-04 International Business Machines Corporation Redundancy and load balancing in remote direct memory access communications
CN103116618B (zh) * 2013-01-28 2015-09-30 南开大学 基于客户端持久缓存的远程文件***镜像方法及***

Also Published As

Publication number Publication date
US10521393B2 (en) 2019-12-31
US20170004109A1 (en) 2017-01-05
US10019408B2 (en) 2018-07-10
US9471534B2 (en) 2016-10-18
WO2015101078A1 (en) 2015-07-09
JP2017500669A (ja) 2017-01-05
US20180329860A1 (en) 2018-11-15
US20150186331A1 (en) 2015-07-02
US9495325B2 (en) 2016-11-15
US20150186330A1 (en) 2015-07-02

Similar Documents

Publication Publication Date Title
JP6403782B2 (ja) リモート・ダイレクト・メモリ・アクセス(rdma)高性能プロデューサ・コンシューマ・メッセージ処理
JP5479802B2 (ja) ハイブリッド・コンピューティング環境におけるデータ処理のための方法、装置、およびプログラム
WO2019095655A1 (zh) 一种数据交互方法和计算设备
US9417905B2 (en) Terminating an accelerator application program in a hybrid computing environment
EP4220419B1 (en) Modifying nvme physical region page list pointers and data pointers to facilitate routing of pcie memory requests
WO2015070640A1 (zh) 设备远程访问的方法、瘦客户端和虚拟机
WO2017215448A1 (zh) 跨应用共享数据的方法及网页浏览器
US8301860B2 (en) Identifying dynamically changing virtual storage devices
US20170097879A1 (en) Synchronous input/output measurement data
US11929926B2 (en) Traffic service threads for large pools of network addresses
WO2017095820A1 (en) Methods and devices for acquiring data using virtual machine and host machine
WO2021086693A1 (en) Management of multiple physical function non-volatile memory devices
US10198378B2 (en) Faster data transfer with simultaneous alternative remote direct memory access communications
US10963407B1 (en) Remote direct memory access based networking gateway
US10009424B2 (en) Synchronous input/output initialization exchange sequences
US20110099253A1 (en) Consolidated notifications to nfs clients
US8914456B2 (en) Consolidated notifications to NFS clients
Nothaas et al. Ibdxnet: Leveraging infiniband in highly concurrent java applications
US11853593B2 (en) Shared memory protection method for securing MMIO commands
US11870668B1 (en) System and method for managing data processing systems and hosted devices
CN117472817A (zh) 数据处理方法、装置、***及网卡
CN116501456A (zh) 用于利用一致性接口的队列管理的***、方法和设备
JP2014026315A (ja) 情報処理装置、データ提供方法、及びデータ提供プログラム
KR20210108973A (ko) 입/출력 저장 명령의 처리
CN112084045A (zh) 处理进程的方法、装置和电子设备

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160729

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170815

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180423

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180508

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180806

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180821

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180911

R150 Certificate of patent or registration of utility model

Ref document number: 6403782

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150