(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025005382
(43)【公開日】2025-01-16
(54)【発明の名称】RDMAネットワークカード送信キューの性能分離方法及びRDMAネットワークカード
(51)【国際特許分類】
H04L 47/24 20220101AFI20250108BHJP
G06F 15/173 20060101ALI20250108BHJP
G06F 13/28 20060101ALI20250108BHJP
H04L 67/568 20220101ALI20250108BHJP
【FI】
H04L47/24
G06F15/173 665D
G06F13/28 310Z
G06F13/28 310J
H04L67/568
【審査請求】有
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2024070295
(22)【出願日】2024-04-24
(31)【優先権主張番号】202310762123. 8
(32)【優先日】2023-06-27
(33)【優先権主張国・地域又は機関】CN
(71)【出願人】
【識別番号】524040568
【氏名又は名称】中科馭数(北京)科技有限公司
(74)【代理人】
【識別番号】100095407
【弁理士】
【氏名又は名称】木村 満
(74)【代理人】
【識別番号】100132883
【弁理士】
【氏名又は名称】森川 泰司
(74)【代理人】
【識別番号】100148633
【弁理士】
【氏名又は名称】桜田 圭
(74)【代理人】
【識別番号】100147924
【弁理士】
【氏名又は名称】美恵 英樹
(72)【発明者】
【氏名】廖 云坤
(72)【発明者】
【氏名】蒋 帥
【テーマコード(参考)】
5B045
5K030
【Fターム(参考)】
5B045BB35
5K030GA01
5K030KA12
5K030LC01
(57)【要約】 (修正有)
【課題】リモートダイレクトメモリアクセス(RDMA)ネットワークカードを提供する。
【解決手段】送信側RDMAネットワークカードは、認識された遅延敏感型テナントと帯域幅敏感型テナントのワークキューエレメントWQEを遅延敏感グループと帯域幅敏感グループにキャッシュし、グループ間スケジューラを利用して遅延敏感グループ内か又は帯域幅敏感グループ内のWQEのどちらかをスケジューリングすることを決定し、第1のスケジューラ及びスケジューリングアルゴリズムを利用して遅延敏感グループ内の遅延敏感型WQEをスケジューリングすることを要求し、第2のスケジューラ及びスケジューリングアルゴリズムを利用して帯域幅敏感型WQEをスケジューリングし、グループ間スケジューラによってWQEスケジューリング結果を送信側RDMAネットワークカードに伝送し遅延敏感型WQEを処理して対応する全てのデータパケットを出力する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
RDMAネットワークカード送信キューの性能分離方法であって、
送信側RDMAネットワークカードは、キューペア識別の中に含まれるテナントタイプ識別に基づいてテナントタイプを認識し、認識された遅延敏感型テナントの送信キューの作動キューエレメントWQEを遅延敏感型WQEとしてキャッシュモジュールの遅延敏感グループにキャッシュし、認識された帯域幅敏感型テナントの送信キューのWQEを帯域幅敏感型WQEとしてキャッシュモジュールの帯域幅敏感グループにキャッシュすることであって、ここで、キャッシュモジュールの帯域幅敏感グループにキャッシュされる少なくとも一部の処理すべきWQEが待機ステーションに記憶され、前記キャッシュモジュールに含まれる遅延敏感グループと帯域幅敏感グループ内の異なるテナントのWQEが異なるキューに従ってキャッシュされ、キューの各ノードが1つのWQEであることと、
グループ間スケジューラを利用して遅延敏感グループ内のWQE又は帯域幅敏感グループ内のWQEのどちらかをスケジューリングすることを決定し、且つ遅延敏感グループ内のWQEをスケジューリングすると決定する時に第1のスケジューラにスケジューリング要求を送信し、帯域幅敏感グループ内のWQEをスケジューリングすると決定する時に第2のスケジューラにスケジューリング要求を送信することと、
第1のスケジューラによってグループ間スケジューラのスケジューリング要求に基づいて第1のスケジューリングアルゴリズムを利用して遅延敏感グループ内の遅延敏感型WQEをスケジューリングし、且つグループ間スケジューラにWQEスケジューリング結果を戻すことと、
第2のスケジューラによって第2のスケジューリングアルゴリズムを利用して待機ステーションにおける帯域幅敏感型WQEをスケジューリングし、且つグループ間スケジューラにWQEスケジューリング結果を戻すことと、
グループ間スケジューラによって第1のスケジューラと第2のスケジューラからのWQEスケジューリング結果を前記送信側RDMAネットワークカード上のWQE処理モジュールに伝送することと、
WQE処理モジュールによってWQEスケジューリング結果に基づいて遅延敏感型WQEを処理して該遅延敏感型WQEに対応する全てのデータパケットを出力し、且つWQEスケジューリング結果に基づいて帯域幅敏感型WQEを処理し、経路最大伝送ユニットに基づいて該帯域幅敏感型WQEに対応する1つのデータパケットを出力し、且つ出力されていないデータパケットが存在する場合、出力されていないデータパケットに対応するWQEを前記待機ステーションに書き戻すこととを含む、RDMAネットワークカード送信キューの性能分離方法。
【請求項2】
該方法は、
前記RDMAネットワークカード上のドライブインタフェースによってテナントの識別要求を受信し、前記識別要求に基づいてテナントにテナントタイプ識別を含むテナント識別を提供することと、
テナント識別が割り当てられた各テナントに対して、テナントタイプ識別が含まれる前記キューペア識別を有するキューペアを作成し、且つ前記キューペアに対してWQEを記憶するための前記キューペアリソースを割り当てることと、をさらに含む、請求項1に記載の方法。
【請求項3】
前記テナントタイプ識別は、予め設定された長さの2進数であり、前記テナントタイプ識別は、前記テナント識別の最後のビットである、請求項2に記載の方法。
【請求項4】
前記第1のスケジューリングアルゴリズムは、公平ポーリングスケジューリングアルゴリズムであり、前述した、第1のスケジューラによってグループ間スケジューラのスケジューリング要求に基づいて第1のスケジューリングアルゴリズムを利用して遅延敏感グループ内の遅延敏感型WQEをスケジューリングし、且つグループ間スケジューラにWQEスケジューリング結果を戻すステップは、
第1のスケジューラによってグループ間スケジューラのスケジューリング要求を受信し、公平ポーリングスケジューリングアルゴリズムに基づいて第1のスケジューラによって維持されるアクティブリンクリストにおける異なるテナントの遅延敏感型WQEのキューをトラバースし、遅延敏感グループ内の異なるテナントの遅延敏感型WQEのキューをポーリングすることであって、ここで、前記アクティブリンクリストに遅延敏感グループ内の異なるテナントが処理すべき遅延敏感型WQEのキュー番号が記録され、前記アクティブリンクリストの1つのノードが1つの遅延敏感型WQEの非空キューに対応することと、
ポーリングされたアクティブリンクリストヘッドのキューのWQEをWQEスケジューリング結果として前記グループ間スケジューラに戻し、且つ対応するノードを前記アクティブリンクリストから削除することと、を含む、請求項1に記載の方法。
【請求項5】
前記第2のスケジューリングアルゴリズムは、トークンバケットスケジューリングアルゴリズムであり、前述した、前記第2のスケジューラによって第2のスケジューリングアルゴリズムを利用して待機ステーションにおける帯域幅敏感グループ内の帯域幅敏感型WQEをスケジューリングし、且つグループ間スケジューラにWQEスケジューリング結果を戻すステップは、
第2のスケジューラによってグループ間スケジューラのスケジューリング要求を受信し、トークンバケットスケジューリングアルゴリズムに基づいて第2のスケジューラによって維持されるアクティブリンクリストにおける異なるテナントの帯域幅敏感型WQEのキューのトークンカウンタをトラバースし、所定のリフレッシュ周期と毎回のトークンリフレッシュ数に従ってトークンをリフレッシュしてトークンカウンタカウントを更新することを含み、ここで、前記アクティブリンクリストに帯域幅敏感グループ内の異なるテナントが処理すべき帯域幅敏感型WQEのキュー番号が記録され、前記アクティブリンクリストの1つのノードが1つの帯域幅敏感型WQEの非空キューに対応する、請求項1に記載の方法。
【請求項6】
該方法は、
待機ステーションにおける帯域幅敏感グループ内のWQEに対して、待機WQE状態モジュールによって待機ステーションにおける全てのWQEの状態を維持し、且つ外にアイドルと占有の2つの状態を含む全ての待機WQE状態を出力し、前記待機WQE状態モジュールによって提供されるセットとリセットインターフェースに基づいてWQE状態のプログラミング制御を行うことをさらに含む、請求項1に記載の方法。
【請求項7】
前述した、グループ間スケジューラを利用して遅延敏感グループ内のWQE又は帯域幅敏感グループ内のWQEのどちらかをスケジューリングすることを決定するステップは、
グループ間スケジューラは、遅延敏感グループと帯域幅敏感グループのために構成された動的重みに基づいて、重み付きポーリングスケジューリングアルゴリズムに基づいて遅延敏感グループ内のWQE又は帯域幅敏感グループ内のWQEのどちらかをスケジューリングすることを決定し、且つ毎回のスケジューリング結果に基づいて動的重みを更新することを含む、請求項1に記載の方法。
【請求項8】
前述した、毎回のスケジューリング結果に基づいて動的重みを更新することは、毎回のスケジューリング結果に基づいてスケジューリング結果に対応する遅延敏感グループ又は帯域幅敏感グループの重みを低減させることを含む、請求項7に記載の方法。
【請求項9】
RDMAネットワークカードであって、
キューペア識別の中に含まれるテナントタイプ識別に基づいてテナントタイプを認識し、認識された遅延敏感型テナントの送信キューの作動キューエレメントWQEを遅延敏感型WQEとしてキャッシュモジュールの遅延敏感グループにキャッシュし、認識された帯域幅敏感型テナントの送信キューのWQEを帯域幅敏感型WQEとしてキャッシュモジュールの帯域幅敏感グループにキャッシュするための制御モジュールであって、ここで、キャッシュモジュールの帯域幅敏感グループにキャッシュされる少なくとも一部の処理すべきWQEが待機ステーションに記憶され、前記キャッシュモジュールに含まれる遅延敏感グループと帯域幅敏感グループ内の異なるテナントのWQEが異なるキューに従ってキャッシュされ、キューの各ノードが1つのWQEである制御モジュールと、
前記帯域幅敏感グループのうちの少なくとも一部の処理すべきWQEを記録するための前記待機ステーションと、
遅延敏感グループ内のWQE又は帯域幅敏感グループ内のWQEのどちらかをスケジューリングすることを決定し、遅延敏感グループ内のWQEをスケジューリングすると決定する時に第1のスケジューラにスケジューリング要求を送信し、帯域幅敏感グループ内のWQEをスケジューリングすると決定する時に第2のスケジューラにスケジューリング要求を送信し、且つ第1のスケジューラと第2のスケジューラからのWQEスケジューリング結果をWQE処理モジュールに伝送するためのグループ間スケジューラと、
グループ間スケジューラのスケジューリング要求に基づいて第1のスケジューリングアルゴリズムを利用して遅延敏感グループ内の遅延敏感型WQEをスケジューリングし、且つグループ間スケジューラにWQEスケジューリング結果を戻すための第1のスケジューラと、
第2のスケジューリングアルゴリズムを利用して待機ステーションにおける帯域幅敏感グループ内の帯域幅敏感型WQEをスケジューリングし、且つグループ間スケジューラにWQEスケジューリング結果を戻すための第2のスケジューラと、
WQEスケジューリング結果に基づいて遅延敏感型WQEを処理して該遅延敏感型WQEに対応する全てのデータパケットを出力し、且つWQEスケジューリング結果に基づいて帯域幅敏感型WQEを処理し、経路最大伝送ユニットに基づいて該帯域幅敏感型WQEに対応する1つのデータパケットを出力し、且つ出力されていないデータパケットが存在する場合、出力されていないデータパケットに対応するWQEを前記待機ステーションに書き戻すための前記WQE処理モジュールと、を含む、RDMAネットワークカード。
【請求項10】
前記待機ステーションは、
キャッシュモジュールにおける帯域幅敏感グループ内の帯域幅敏感型WQEを待機ステーションに伝送するための第1の待機WQE読み書きチャンネルと、出力されていないデータパケットに対応するWQEを待機ステーションに書き戻すための第2の待機WQE読み書きチャンネルを含む真のデュアルポートSRAMと、
待機ステーションにおける全てのWQEの状態を維持し、且つ外に全ての待機WQE状態を出力するための待機WQE状態モジュールと、
WQE状態のプログラミング制御を行うためのセットとリセットインターフェースであって、ここで、前記待機WQE状態は、アイドルと占有の2つの状態を含むセットとリセットインターフェースと、を含む、請求項9に記載のRDMAネットワークカード。
【請求項11】
前記第1のスケジューリングアルゴリズムは、公平ポーリングスケジューリングアルゴリズムであり、
前記第2のスケジューリングアルゴリズムは、トークンバケットスケジューリングアルゴリズムであり、
前記グループ間スケジューラは、遅延敏感グループと帯域幅敏感グループのために構成された動的重みに基づいて、重み付きポーリングスケジューリングアルゴリズムに基づいて遅延敏感グループ内のWQE又は帯域幅敏感グループ内のWQEのどちらかをスケジューリングすることを決定し、且つ毎回のスケジューリング結果に基づいて動的重みを更新する、請求項9に記載のRDMAネットワークカード。
【発明の詳細な説明】
【技術分野】
【0001】
(相互参照)
本開示は、2023年6月27日に提出された中国特許出願番号が202310762123.8、名称がRDMAネットワークカード送信キューの性能分離方法及びRDMA」の優先権を主張しており、同出願の内容の全ては、ここに参照として取り込まれる。
【0002】
(技術分野)
本発明は、RDMAネットワークカードの送信側の性能向上の技術分野に関し、特にRDMAネットワークカードの送信キューの性能分離方法及びRDMAネットワークカードに関する。
【背景技術】
【0003】
リモートダイレクトメモリアクセス(Remote Direct Memory Access、RDMA)技術は、高性能なネットワーク技術であり、RDMA技術に基づいて設計されたRDMAネットワークカード(RDMA NIC)は、ハードウェアを通じてネットワークプロトコルトランスポート層をオフロードし、ゼロコピー、オペレーティングシステムカーネルバイパスのネットワークトランスポートサービスを実現し、ネットワークデータ伝送時のサーバCPUの占有率を効果的に下げた。RDMA技術は、キュー(Queue)をソフトウェアとハードウェアの相互作用のインターフェースとし、設計されたキューは、送信キュー(Send Queue,SQ)、受信キュー(Receive Queue,RQ)及び完了キュー(Completion Queue,CQ)を含み、ここで、SQとRQは、ペアの方式でキューペア(Queue Pair,QP)を構成し、SQとRQの基本的な構成は、ワークキューエレメント(Work Queue Element,WQE)であり、SQの各WQEは、1つのRDMAデータ伝送要求を代表する。WQEは、ソフトウェアがハードウェアに実行したいタスクと、そのタスクに関する詳細情報が含まれる「タスク説明」と考えられてもよく、データ伝送要求がソフトウェアからハードウェアに送信される。
図2は、従来技術におけるクラウドコンピューティングのマルチアプリケーションシナリオの下でのRDMAネットワークカードの応用模式図であり、クラウドコンピューティングの始動側とクラウドコンピューティングの応答側のRDMAネットワークカードは、いずれも複数のアプリケーションAPP1、…、APPNを実行することができ、始動側のRDMAネットワークカードと応答側のRDMAネットワークカードの構造は対応して、始動側のRDMAネットワークカードのキャッシュブロック(Memory)にSQを記憶し、SQは、WQEからなり、異なるアプリケーションは、内容を送信する必要があるWQEをSQに記憶し、それに応じて、応答側のRDMAネットワークカードのキャッシュブロック(Memory)にRQを記憶し、RQもWQEからなる。RDMAネットワークカードの送信側(送信モジュール)は、複数の方法でWQEをスケジューリングして処理し、上位アプリケーションからの対応する送信タスクを完了する。クラウドコンピューティングのシナリオの下で、異なるアプリケーションは、異なるタイプであってもよく、具体的には、アプリケーションのタイプは、主に遅延敏感型と帯域幅敏感型の2つのタイプに分けられ、異なるタイプのアプリケーションは、同一のRDMAネットワークカード上で同時に実行されることができる。遅延敏感型アプリケーションのメッセージ量は、通常比較的に小さく、アプリケーションの毎回の要求の完了遅延に注目し、帯域幅敏感型アプリケーションのメッセージ量は、通常比較的に大きく、アプリケーションの占有可能な帯域幅に注目する。
【0004】
発明者は、本発明を実現するプロセスにおいて、異なるタイプのアプリケーション、すなわち帯域幅敏感型アプリケーションと遅延敏感型アプリケーションが同一のRDMAネットワークカード上で実行する時に明らかな性能干渉現象が存在し、且つ帯域幅敏感型アプリケーションと帯域幅敏感型アプリケーションとの間にも明らかな性能干渉が存在することを発見した。
【0005】
RDMAネットワークカード上で実行されるアプリケーションは、RDMAネットワークカードのテナント(Tenant)と呼ばれ、クラウドコンピューティングのシナリオの下で、どのようにRDMAネットワークカードを改良して帯域幅敏感型アプリケーションと帯域幅敏感型アプリケーションとの間の明らかな性能干渉を解決し、異なるタイプのテナントが同時に同一のRDMAネットワークカード上で実行する性能表現を向上させることは、解決すべき問題である。
【発明の概要】
【発明が解決しようとする課題】
【0006】
これに鑑みて、本発明の実施例は、従来の技術に存在する1つ又は複数の欠陥を解消又は改善するためのRDMAネットワークカード送信キューの性能分離方法及びRDMAネットワークカードを提供する。
【課題を解決するための手段】
【0007】
本発明の1つの態様は、RDMAネットワークカード送信キューの性能分離方法を提供し、該方法は、
送信側RDMAネットワークカードは、キューペア識別の中に含まれるテナントタイプ識別に基づいてテナントタイプを認識し、認識された遅延敏感型テナントの送信キューの作動キューエレメントWQEを遅延敏感型WQEとしてキャッシュモジュールの遅延敏感グループにキャッシュし、認識された帯域幅敏感型テナントの送信キューのWQEを帯域幅敏感型WQEとしてキャッシュモジュールの帯域幅敏感グループにキャッシュすることであって、ここで、キャッシュモジュールの帯域幅敏感グループにキャッシュされる少なくとも一部の処理すべきWQEが待機ステーションに記憶され、前記キャッシュモジュールに含まれる遅延敏感グループと帯域幅敏感グループ内の異なるテナントのWQEが異なるキューに従ってキャッシュされ、キューの各ノードが1つのWQEであることと、
グループ間スケジューラを利用して遅延敏感グループ内のWQE又は帯域幅敏感グループ内のWQEのどちらかをスケジューリングすることを決定し、且つ遅延敏感グループ内のWQEをスケジューリングすると決定する時に第1のスケジューラにスケジューリング要求を送信し、帯域幅敏感グループ内のWQEをスケジューリングすると決定する時に第2のスケジューラにスケジューリング要求を送信することと、
第1のスケジューラによってグループ間スケジューラのスケジューリング要求に基づいて第1のスケジューリングアルゴリズムを利用して遅延敏感グループ内の遅延敏感型WQEをスケジューリングし、且つグループ間スケジューラにWQEスケジューリング結果を戻すことと、
トークンバケットを用いて第2のスケジューラによって第2のスケジューリングアルゴリズムを利用して待機ステーションにおける帯域幅敏感型WQEをスケジューリングし、且つグループ間スケジューラにWQEスケジューリング結果を戻すことと、
グループは、グループ間スケジューラによって第1のスケジューラと第2のスケジューラからのWQEスケジューリング結果を前記送信側RDMAネットワークカード上のWQE処理モジュールに伝送することと、
WQE処理モジュールによってWQEスケジューリング結果に基づいて遅延敏感型WQEを処理して該遅延敏感型WQEに対応する全てのデータパケットを出力し、且つWQEスケジューリング結果に基づいて帯域幅敏感型WQEを処理し、経路最大伝送ユニットに基づいて該帯域幅敏感型WQEに対応する1つのデータパケットを出力し、且つ帯域幅敏感型テナントによって生成されたWQEに、出力されていないデータパケットが存在する場合、出力されていないデータパケットに対応するWQEを前記待機ステーションに書き戻すこととを含む。
【0008】
本発明のいくつかの実施例において、前記RDMAネットワークカード上のドライブインタフェースによってテナントの識別要求を受信し、前記識別要求に基づいてテナントにテナントタイプ識別を含むテナント識別を提供し、テナント識別が割り当てられた各テナントに対して、テナントタイプ識別が含まれる前記キューペア識別を有するキューペアを作成し、且つ前記キューペアに対してWQEを記憶するための前記キューペアリソースを割り当てる。
【0009】
本発明のいくつかの実施例において、前記テナントタイプ識別は、予め設定された長さの2進数であり、前記テナントタイプ識別は、前記テナント識別の最後のビットである。
【0010】
本発明のいくつかの実施例において、前記第1のスケジューリングアルゴリズムは、公平ポーリングスケジューリングアルゴリズムであり、前述した、第1のスケジューラによってグループ間スケジューラのスケジューリング要求に基づいて第1のスケジューリングアルゴリズムを利用して遅延敏感グループ内の遅延敏感型WQEをスケジューリングし、且つグループ間スケジューラにWQEスケジューリング結果を戻すステップは、第1のスケジューラによってグループ間スケジューラのスケジューリング要求を受信し、公平ポーリングスケジューリングアルゴリズムに基づいて第1のスケジューラによって維持されるアクティブリンクリストにおける異なるテナントの遅延敏感型WQEのキューをトラバースし、遅延敏感グループ内の異なるテナントの遅延敏感型WQEのキューをポーリングすることであって、ここで、前記アクティブリンクリストに遅延敏感グループ内の異なるテナントが処理すべき遅延敏感型WQEのキュー番号が記録され、前記アクティブリンクリストの1つのノードが1つの遅延敏感型WQEの非空キューに対応することと、アクティブリンクリストヘッドのキューのWQEをWQEスケジューリング結果として前記グループ間スケジューラに戻し、遅延敏感グループにWがキャッシュされると、対応するノードを前記アクティブリンクリストから削除することと、を含む。
【0011】
本発明のいくつかの実施例において、前記第2のスケジューリングアルゴリズムは、トークンバケットスケジューリングアルゴリズムであり、前述した、第2のスケジューラによって第2のスケジューリングアルゴリズムを利用して待機ステーションにおける帯域幅敏感グループ内の帯域幅敏感型WQEをスケジューリングし、且つグループ間スケジューラにWQEスケジューリング結果を戻すステップは、第2のスケジューラによってグループ間スケジューラのスケジューリング要求を受信し、トークンバケットスケジューリングアルゴリズムに基づいて第2のスケジューラによって維持されるアクティブリンクリストにおける異なるテナントの帯域幅敏感型WQEのキューのトークンカウンタをトラバースし、所定のリフレッシュ周期と毎回のトークンリフレッシュ数に従ってトークンをリフレッシュしてトークンカウンタカウントを更新することを含み、ここで、前記アクティブリンクリストに帯域幅敏感グループ内の異なるテナントが処理すべき帯域幅敏感型WQEのキュー番号が記録され、前記アクティブリンクリストの1つのノードが1つの帯域幅敏感型WQEの非空キューに対応する。
【0012】
本発明のいくつかの実施例において、該方法は、待機ステーションにおける帯域幅敏感グループ内のWQEに対して、待機WQE状態モジュールによって待機ステーションにおける全てのWQEの状態を維持し、且つ外にアイドルと占有の2つの状態を含む全ての待機WQE状態を出力し、前記待機WQE状態モジュールによって提供されるセットとリセットインターフェースに基づいてWQE状態のプログラミング制御を行うことをさらに含む。
【0013】
本発明のいくつかの実施例において、前述した、グループ間スケジューラを利用して遅延敏感グループ内のWQE又は帯域幅敏感グループ内のWQEのどちらかをスケジューリングすることを決定するステップは、グループ間スケジューラは、遅延敏感グループと帯域幅敏感グループのために構成された動的重みに基づいて、重み付きポーリングスケジューリングアルゴリズムに基づいて遅延敏感グループ内のWQE又は帯域幅敏感グループ内のWQEのどちらかをスケジューリングすることを決定し、且つ毎回のスケジューリング結果に基づいて動的重みを更新することを含む。
【0014】
本発明のいくつかの実施例において、前述した、毎回のスケジューリング結果に基づいて動的重みを更新することは、毎回のスケジューリング結果に基づいてスケジューリング結果に対応する遅延敏感グループ又は帯域幅敏感グループの重みを低減させることを含む。
【0015】
本発明の別の態様は、RDMAネットワークカードを提供し、前記RDMAネットワークカードは、キューペア識別の中に含まれるテナントタイプ識別に基づいてテナントタイプを認識し、認識された遅延敏感型テナントの送信キューの作動キューエレメントWQEを遅延敏感型WQEとしてキャッシュモジュールの遅延敏感グループにキャッシュし、認識された帯域幅敏感型テナントの送信キューのWQEを帯域幅敏感型WQEとしてキャッシュモジュールの帯域幅敏感グループにキャッシュするための制御モジュールであって、ここで、キャッシュモジュールの帯域幅敏感グループにキャッシュされる少なくとも一部の処理すべきWQEが待機ステーションに記憶され、前記キャッシュモジュールに含まれる遅延敏感グループと帯域幅敏感グループ内の異なるテナントのWQEが異なるキューに従ってキャッシュされ、キューの各ノードが1つのWQEである制御モジュールと、前記帯域幅敏感グループのうちの少なくとも一部の処理すべきWQEを記録するための前記待機ステーションと、遅延敏感グループ内のWQE又は帯域幅敏感グループ内のWQEのどちらかをスケジューリングすることを決定し、遅延敏感グループ内のWQEをスケジューリングすると決定する時に第1のスケジューラにスケジューリング要求を送信し、帯域幅敏感グループ内のWQEをスケジューリングすると決定する時に第2のスケジューラにスケジューリング要求を送信し、且つ第1のスケジューラと第2のスケジューラからのWQEスケジューリング結果をWQE処理モジュールに伝送するためのグループ間スケジューラと、グループ間スケジューラのスケジューリング要求に基づいて第1のスケジューリングアルゴリズムを利用して遅延敏感グループ内の遅延敏感型WQEをスケジューリングし、且つグループ間スケジューラにWQEスケジューリング結果を戻すための第1のスケジューラと、第2のスケジューリングアルゴリズムを利用して待機ステーションにおける帯域幅敏感グループ内の帯域幅敏感型WQEをスケジューリングし、且つグループ間スケジューラにWQEスケジューリング結果を戻すための第2のスケジューラと、WQEスケジューリング結果に基づいて遅延敏感型WQEを処理して該遅延敏感型WQEに対応する全てのデータパケットを出力し、且つWQEスケジューリング結果に基づいて帯域幅敏感型WQEを処理し、経路最大伝送ユニットに基づいて該帯域幅敏感型WQEに対応する1つのデータパケットを出力し、且つ出力されていないデータパケットが存在する場合、出力されていないデータパケットに対応するWQEを前記待機ステーションに書き戻すための前記WQE処理モジュールと、を含む。
【0016】
本発明のいくつかの実施例において、前記待機ステーションは、キャッシュモジュールにおける帯域幅敏感グループ内の帯域幅敏感型WQEを待機ステーションに伝送するための第1の待機WQE読み書きチャンネルと、出力されていないデータパケットに対応するWQEを待機ステーションに書き戻すための第2の待機WQE読み書きチャンネルを含む真のデュアルポートSRAMと、待機ステーションにおける全てのWQEの状態を維持し、且つ外に全ての待機WQE状態を出力するための待機WQE状態モジュールと、WQE状態のプログラミング制御を行うためのセットとリセットインターフェースであって、ここで、前記待機WQE状態は、アイドルと占有の2つの状態を含むセットとリセットインターフェースと、を含む。
【0017】
本発明のいくつかの実施例において、前記第1のスケジューリングアルゴリズムは、公平ポーリングスケジューリングアルゴリズムであり、
前記第2のスケジューリングアルゴリズムは、トークンバケットスケジューリングアルゴリズムであり、
前記グループ間スケジューラは、遅延敏感グループと帯域幅敏感グループのために構成された動的重みに基づいて、重み付きポーリングスケジューリングアルゴリズムに基づいて遅延敏感グループ内のWQE又は帯域幅敏感グループ内のWQEのどちらかをスケジューリングすることを決定し、且つ毎回のスケジューリング結果に基づいて動的重みを更新する。
【発明の効果】
【0018】
本発明によって提案されたRDMAネットワークカード送信キューの性能分離方法は、遅延敏感型テナントと帯域幅敏感型テナントからのWQEをそれぞれ記憶、スケジューリングと処理し、それによって、RDMAネットワークカード送信側の遅延敏感型アプリケーションと帯域幅敏感型アプリケーションとの間の性能分離を実現し、同時に帯域幅敏感型テナントのWQEに対して、1回の伝送で完了しないで待機ステーションに書き戻して再度スケジューリングされる方式が設計され、1つのWQEが送信側の帯域幅リソースを長期的に占有することを効果的に避け、帯域幅敏感型アプリケーションの間の性能分離を実現し、本発明によって提案されるRDMAネットワークカードは、性能分離の改良によって帯域幅敏感型アプリケーションと帯域幅敏感型アプリケーションとの間の明らかな性能干渉問題を解決し、異なるタイプのテナントが同一のRDMAネットワークカード上で同時に実行する性能表現を向上させることができる。
【0019】
本発明の付加的な利点、目的、及び特徴は、以下の説明において部分的に説明され、以下を検討した後に当業者に部分的に明らかになるか、または本発明の実施から知ることができる。本発明の目的と他の利点は、明細書及び添付図面において具体的に指摘されている構造によって実現されて取得されることができる。
【0020】
当業者であれば、本発明によって実現されることができる目的と利点は、上記で具体的に説明されたものに限定されず、本発明によって実現されることができる上記及びその他の目的は、以下の詳細な説明からより明確に理解されることが理解される。
【図面の簡単な説明】
【0021】
ここで説明された添付図面は、本発明へのさらなる理解を提供するために使用され、本願の一部を構成し、本発明への限定を構成するものではない。添付図面を説明する。
【0022】
【
図1】本発明の実施例のRDMAネットワークカード送信キューの性能分離方法のフローチャートである。
【
図2】従来技術におけるマルチアプリケーションシナリオでのRDMAネットワークカードのアプリケーション模式図である。
【
図3】本発明の一実施例におけるテナントタイプ識別子とキューペア識別子のパッケージ化関係模式図である。
【
図4】本発明の一実施例における遅延敏感型アプリケーションと帯域幅敏感型アプリケーション性能分離をサポートするRDMAネットワークカード送信側の構造模式図である。
【
図5】本発明の一具体的な実施例における遅延敏感型アプリケーションと帯域幅敏感型アプリケーション性能分離をサポートするRDMAネットワークカード送信側の構造模式図である。
【
図6】本発明の一実施例における遅延敏感グループ内の公平ポーリングスケジューリングのフローチャートである。
【
図7】本発明の一実施例における待機ステーションの構造模式図である。
【
図8】本発明の一実施例におけるWQE処理モジュールがWQEスライスを実現するフローチャートである。
【
図9】本発明の一実施例におけるトークンカウンタ維持のフローチャートである。
【
図10】本発明の一実施例におけるトークンバケットアルゴリズムに基づく帯域幅敏感型WQEスケジューリング実行フローである。
【
図11】本発明の一実施例における重み付きポーリングに基づくスケジューリングプロセスである。
【
図12】本発明の一実施例におけるRDMAネットワークカードの構造模式図である。
【発明を実施するための形態】
【0023】
本発明の目的、技術的解決手段及び利点をより明確にするために、以下では、実施形態と添付図面と組み合わせ、本発明についてさらに詳細に説明する。ここで、本発明の例示的な実施形態及びその説明は、本発明を説明するためのものであり、本発明への限定を構成するものではない。
【0024】
ここで、さらに説明すべきこととして、本発明が不必要な詳細によって不明瞭になることを避けるために、本発明の解決手段に密接に関連する構造及び/又は処理ステップのみが添付図面に示され、本発明に関連しないその他の詳細は省略されている。
【0025】
用語「含む/包含」は、本明細書で使用される場合、特徴、要素、ステップ、又は構成要素の存在を意味するが、1つ又は複数の他の特徴、要素、ステップ、又は構成要素の存在又は追加を除外するものではないことを強調すべきである。
【0026】
異なるタイプのアプリケーション(例えば帯域幅敏感型アプリケーションと遅延敏感型アプリケーション)が同一のRDMAネットワークカード上で実行する時に明らかな性能干渉現象が存在し、帯域幅敏感型アプリケーションと帯域幅敏感型アプリケーションとの間にも明らかな性能干渉が存在するという問題に対して、発明者は、既存の帯域幅が100GbpsのRDMAネットワークカードを選択して実験評価を行い、実験RDMAネットワークカード上で遅延敏感型アプリケーションと帯域幅敏感型シミュレーションアプリケーションを同時に運行する。実験の結果、帯域幅敏感型アプリケーションと同時に実行した場合、遅延敏感型アプリケーションの50%分位遅延と99%分位遅延は、独立して実行した場合の5倍に増加した。同時に、発明者は、実験RDMAネットワークカード上で同時に2つの帯域幅敏感型シミュレーションアプリケーションを実行した。実験の結果、そのうちの1つの帯域幅敏感型アプリケーションによって占有される帯域幅が上昇することにつれて、もう1つの帯域幅敏感型アプリケーションの帯域幅が低減し、すなわち、2つの帯域幅感度アプリケーションの間に明らかな性能干渉が存在し、RDMAネットワークカードの送信側帯域幅リソースを公平に共有することができない。
【0027】
このため、上記性能干渉を克服し、RDMA低遅延と高帯域幅の性能を確保することができるために、本発明は、クラウドコンピューティングにおける遅延敏感型アプリケーションと帯域幅敏感型アプリケーションとの間及び帯域幅敏感型アプリケーションの間の性能分離を実現するように、RDMAネットワークカード送信キューの性能分離方法を提供する。本発明の実施例において、RDMAネットワークカードの送信側構造を最適化することによって、アプリケーションの間の性能分離を実現する。
【0028】
RDMAネットワークカードの送信側構造に対する本発明の改良点は、以下のとおりである:
(1)キューペアを分類するメカニズムを提案し、送信キューを識別して分類することを実現した。
(2)異なるアプリケーション(又は異なるタイプのアプリケーション)を区別して扱うWQEキャッシュメカニズムを設計した。
(3)異なるタイプのアプリケーションWQEの特徴に対して、異なるスケジューリングメカニズムをそれぞれ提案した。例として、公平ポーリングに基づくスケジューリング及びトークンバケットに基づくスケジューリング(2つのグループ内スケジューリング方法)、及び異なるタイプのアプリケーション区別サービスを実現する配置可能な重み付きポーリンググループ間スケジューリング(グループ間スケジューリング方法)を提案した。
(4)選択的に、本発明のいくつかの実施例は、帯域幅敏感型アプリケーションWQEがWQE処理モジュールリソースを長時間に占有することを避けるように、WQEをスライス処理する方法をさらに提案した。
(5)選択的に、本発明のいくつかの実施例は、動的重みを構成することによって、RDMAに基づく遅延敏感アプリケーションと帯域幅敏感アプリケーションの区別サービスを実現することも設計した。
【0029】
図1は、本発明のRDMAネットワークカード送信キューの性能分離方法のフローチャートであり、該方法は、以下のステップを含む:
【0030】
ステップS110、送信側RDMAネットワークカードは、キューペア識別の中に含まれるテナントタイプ識別に基づいてテナントタイプを認識し、認識された遅延敏感型テナントの送信キューの作動キューエレメントWQEを遅延敏感型WQEとしてキャッシュモジュールの遅延敏感グループにキャッシュし、認識された帯域幅敏感型テナントの送信キューのWQEを帯域幅敏感型WQEとしてキャッシュモジュールの帯域幅敏感グループにキャッシュすることであって、ここで、キャッシュモジュールの帯域幅敏感グループにキャッシュされる少なくとも一部の処理すべきWQEが待機ステーションに記憶され、前記キャッシュモジュールに含まれる遅延敏感グループと帯域幅敏感グループ内の異なるテナントのWQEが異なるキューに従ってキャッシュされ、キューの各ノードが1つのWQEである。
【0031】
ここで、本発明においてRDMAネットワークカード上で運行されるアプリケーション(又はRDMAネットワークカード上で実行されるアプリケーション)をRDMAネットワークカードのテナント(Tenant)とする。各アプリケーションがRDMAネットワークカードで実行されるためには、まずドライバによってキューペア(QP)を作成し、且つこれによってキューペア(送信キューと受信キュー)リソースに申請する必要がある。本発明の実施例において、RDMAネットワークカードに初回に到達する各テナントは、RDMAネットワークカード上でWQEを記憶するキューペアリソースを作成する前に、まずRDMAネットワークカード上のドライブインタフェース(例えばrequest_tenantドライブインタフェース)によってテナント識別子(Tenant ID、又はテナント識別と呼ばれる)を申請し、コンピュータオペレーティングシステムに登録されたRDMAネットワークカードによって、RDMAネットワークカードに初回に到達するテナントにテナント識別子を割り当てる。ここで、テナント識別にはテナントタイプ識別子が含まれ、且つテナント識別が割り当てられた各テナントに対してWQEを記憶するためのキューペアリソースを作成し、テナントタイプ識別子に基づいてテナントを遅延敏感型テナントと帯域幅敏感型テナントに区分する。テナントタイプ識別子を割り当てるプロセスは、RDMAネットワークカード上に位置する第1のドライブインタフェースは、テナントの申請テナントタイプ識別子の要求を受信し、且つRDMAネットワークカード上の制御モジュールによってテナントタイプ識別子をテナントに割り当て、且つ全てのテナントとテナントに対応するテナントタイプ識別子を記憶することである。
【0032】
ステップS120、グループ間スケジューラを利用して遅延敏感グループ内のWQE又は帯域幅敏感グループ内のWQEのどちらかをスケジューリングすることを決定し、且つ遅延敏感グループ内のWQEをスケジューリングすると決定する時に第1のスケジューラにスケジューリング要求を送信し、帯域幅敏感グループ内のWQEをスケジューリングすると決定する時に第2のスケジューラにスケジューリング要求を送信する。選択的に、グループ間スケジューラは、グループ間重み付きポーリングスケジューリングアルゴリズム又はグループ間公平ポーリングスケジューリングアルゴリズムを採用する。
【0033】
ステップS130、第1のスケジューラによってグループ間スケジューラのスケジューリング要求に基づいて第1のスケジューリングアルゴリズムを利用して遅延敏感グループ内の遅延敏感型WQEをスケジューリングし、且つグループ間スケジューラにWQEスケジューリング結果を戻す。本発明の一実施例において、前記第1のスケジューリングアルゴリズムは、公平ポーリングスケジューリングアルゴリズムである。
【0034】
ステップS140、第2のスケジューラによって第2のスケジューリングアルゴリズムを利用して待機ステーションにおける帯域幅敏感型WQEをスケジューリングし、且つグループ間スケジューラにWQEスケジューリング結果を戻す。本発明の一実施例において、前記第2のスケジューリングアルゴリズムは、トークンバケットスケジューリングアルゴリズムである。
【0035】
ステップS150、グループ間スケジューラによって第1のスケジューラと第2のスケジューラからのWQEスケジューリング結果を前記送信側RDMAネットワークカード上のWQE処理モジュールに伝送し、ここで、予め設定された数のデータパケットは、1つであってもよく、複数であってもよく、帯域幅敏感型テナントの送信タスクについて、1つの長さのデータを送信した後に中断され、1つのタスクがRDMAネットワークカード送信側の帯域幅リソースを長期間占有することを避けることを目的とする。経路最大伝送ユニット(Maximum Transmission Unit、MTU)は、ネットワークが伝送可能な最大データパケットサイズを指し、バイトを単位として、ネットワーク機器と通信環境によって決定される1つのパラメータである。
【0036】
ステップS160、WQE処理モジュールによってWQEスケジューリング結果に基づいて遅延敏感型WQEを処理して該遅延敏感型WQEに対応する全てのデータパケットを出力し、且つWQEスケジューリング結果に基づいて帯域幅敏感型WQEを処理し、経路最大伝送ユニットに基づいて該帯域幅敏感型WQEに対応する1つのデータパケットを出力し、且つ出力されていないデータパケットが存在する場合、出力されていないデータパケットに対応するWQEを前記待機ステーションに書き戻す。
【0037】
ステップS110の前に、該方法は、RDMAネットワークカード上の第1のドライブインタフェースによって、RDMAネットワークカードに初回に到達するテナントの識別要求を受信し、識別要求割当に基づいてテナントテナントにテナントタイプ識別子を含むテナント識別を提供することと、テナント識別が割り当てられた各テナントに対して、テナントタイプ識別が含まれる前記キューペア識別を有するキューペアを作成し、且つ前記キューペアに対してWQEを記憶するための前記キューペアリソースを割り当てることと、をさらに含む。本発明は、RDMAネットワークカードのキューペアを分類して識別する方法によって、遅延敏感型アプリケーションと帯域幅敏感型アプリケーションによって使用されるキューペアを区別し、さらに異なるサービスタイプの送信キューを区別してスケジューリングする。本発明は、RDMAネットワークカード上で運行されるアプリケーションをRDMAネットワークカードのテナント(Tenant)とする。本発明の一実施例において、RDMAネットワークカード上のアプリケーションは、キューペアリソースを作成する前に、本発明によるrequest_tenantドライブインタフェースをスケジューリングすることによってテナントタイプ識別子(Tenant ID)を能動的に申請することができる。Tenant IDは、Mビットの数値であり、すなわちTenantの数値範囲は、0~2
mであり、Tenant IDの最後のビットでテナントのタイプを識別することができる。具体的には、Tenant IDの最後のビットが0の場合は、遅延敏感型テナントを識別し、最後のビットが1の場合は、帯域幅敏感型テナントを識別する。なお、本発明の一具体的な実施例において、create_qp作成QPを提供するコールバック関数において、アプリケーションによって提供されるTenant IDをQP識別子(QP ID)の一部として、
図3に示される。選択的に、テナントタイプ識別子(Tenant ID)をキューペア識別子(QP ID)のi~j番目のビットにパッケージ化し、その数値関係は、j-i=M-1である。
【0038】
図3は、本発明の一実施例におけるテナントタイプ識別子とキューペア識別子のパッケージ化関係模式図である。テナントタイプ識別子(Tenant ID)をキューペア識別子(QP ID)の一部にパッケージ化する。選択的に、本発明において、キューペア識別子においてパッケージ化されたテナントタイプ識別子に基づいてテナントタイプが帯域幅敏感型又は遅延敏感型であるかを認識することができ、さらに、キューペア識別子においてテナント(すなわちアプリケーション)番号もパッケージ化され、これに基づいてキューペア識別子に対応するWQEが具体的にどのアプリケーションに由来するかを認識することができ、WQEのソースが帯域幅敏感型アプリケーション又は遅延敏感型アプリケーションであるかを知ることができる。
【0039】
ステップS120において、前述した、グループ間スケジューラを利用して遅延敏感グループ内のWQE又は帯域幅敏感グループ内のWQEのどちらかをスケジューリングすることを決定するステップは、グループ間スケジューラは、遅延敏感グループと帯域幅敏感グループのために構成された動的重みに基づいて、重み付きポーリングスケジューリングアルゴリズムに基づいて遅延敏感グループ内のWQE又は帯域幅敏感グループ内のWQEのどちらかをスケジューリングすることを決定し、且つ毎回のスケジューリング結果に基づいて動的重みを更新することを含む。前述した、毎回のスケジューリング結果に基づいて動的重みを更新することは、毎回のスケジューリング結果に基づいてスケジューリング結果に対応する遅延敏感グループ又は帯域幅敏感グループの重みを低減させることを含む。ここで、遅延敏感グループと帯域幅敏感グループからのWQEのためにそれぞれ構成された動的重みに対して、遅延敏感グループからのWQEの動的重みは、WQEキャッシュモジュールにおける遅延敏感テナントからの処理すべきWQEの数と正の相関を有し、帯域幅敏感グループからのWQEの動的重みは、WQEキャッシュモジュールにおける帯域幅敏感テナントからの処理すべきWQEの数と正の相関を有し、遅延敏感グループと帯域幅敏感グループからのWQEの動的重みは、0に更新されるたびに等しい数値に初期化して構成され、公平ポーリングスケジューラによってスケジューリングされるたびに遅延敏感グループからのWQEの動的重みを更新し、トークンバケットスケジューラによってスケジューリングされるたびに帯域幅敏感グループからのWQEの動的重みを更新する。
【0040】
ステップS130において、前述した、第1のスケジューラによってグループ間スケジューラのスケジューリング要求に基づいて第1のスケジューリングアルゴリズムを利用して遅延敏感グループ内の遅延敏感型WQEをスケジューリングし、且つグループ間スケジューラにWQEスケジューリング結果を戻すステップは、第1のスケジューラによってグループ間スケジューラのスケジューリング要求を受信し、公平ポーリングスケジューリングアルゴリズムに基づいて第1のスケジューラによって維持されるアクティブリンクリストにおける異なるテナントの遅延敏感型WQEのキューをトラバースし、遅延敏感グループ内の異なるテナントの遅延敏感型WQEのキューをポーリングすることであって、ここで、前記アクティブリンクリストに遅延敏感グループ内の異なるテナントが処理すべき遅延敏感型WQEのキュー番号が記録され、前記アクティブリンクリストの1つのノードが1つの遅延敏感型WQEの非空キューに対応することと、アクティブリンクリストヘッドのキューのWQEをWQEスケジューリング結果として前記グループ間スケジューラに戻し、遅延敏感グループにWがキャッシュされると、対応するノードを前記アクティブリンクリストから削除することと、を含む。選択的に、アクティブリンクリストのノードとキューとの対応関係は、キュー番号を記憶することによって実現されてもよく、キューの先頭へのポインタを記憶することによって実現されてもよい。
【0041】
ステップS140において、前記第2のスケジューリングアルゴリズムは、トークンバケットスケジューリングアルゴリズムであり、前述した、第2のスケジューラによって第2のスケジューリングアルゴリズムを利用して待機ステーションにおける帯域幅敏感グループ内の帯域幅敏感型WQEをスケジューリングし、且つグループ間スケジューラにWQEスケジューリング結果を戻すステップは、第2のスケジューラによってグループ間スケジューラのスケジューリング要求を受信し、トークンバケットスケジューリングアルゴリズムに基づいて第2のスケジューラによって維持されるアクティブリンクリストにおける異なるテナントの帯域幅敏感型WQEのキューのトークンカウンタをトラバースし、所定のリフレッシュ周期と毎回のトークンリフレッシュ数に従ってトークンをリフレッシュしてトークンカウンタカウントを更新することを含み、ここで、前記アクティブリンクリストに帯域幅敏感グループ内の異なるテナントが処理すべき帯域幅敏感型WQEのキュー番号が記録され、前記アクティブリンクリストの1つのノードが1つの帯域幅敏感型WQEの非空キューに対応する。ここで、トラバースされたキューの先頭に対応するWQEに対して、トークンカウンタのカウントが経路最大伝送ユニットのサイズ以上であれば、WQEをWQE処理モジュールにスケジューリングし、トークンカウンタのカウントが経路最大伝送ユニットのサイズよりも小さければ、対応するWQEのノードをキューの最後尾に移動する。該トークンバケットカウンタのカウント更新規則は、クロック中断トリガがアクティブリンクリストのトークンカウンタを順次トラバースするプロセスにおいて、毎回トラバースした後に対応する帯域幅敏感型テナントのトークンカウンタをトークンカウンタの予め設定された最大値と元のトークンカウンタとの加算値とリフレッシュトークン数とのより小さい値に調整することである。
【0042】
本発明の一実施例において、待機ステーションについて、該方法は、待機ステーションにおける帯域幅敏感グループ内のWQEに対して、待機WQE状態モジュールによって待機ステーションにおける全てのWQEの状態を維持し、且つ外にアイドルと占有の2つの状態を含む全ての待機WQE状態を出力し、前記待機WQE状態モジュールによって提供されるセットとリセットインターフェースに基づいてWQE状態のプログラミング制御を行うことをさらに含む。ここで、セットは、外部から強制的に入力を変更することにより、入力を出力にマッピングする方式であり、リセットは、プログラムによって入力された値を通電時の初期状態に変更することである。PLCは、すなわちプログラマブルロジックコントローラであり、それは、その内部にプログラムを記憶し、ロジック演算、シーケンス制御、タイミング、カウントと算術操作等のユーザ指向の指令を実行し、且つデジタル又はアナログ式入力/出力によって各種のタイプの機械又は生産プロセスを制御するためのプログラマブルのメモリを採用する。このような設計の目的は、セットとリセットの2つの操作の指令によって、よりロジックが明瞭で、ステップが明確なPLCプログラム条理を実現することにある。
【0043】
以下では、本発明によって提案される方法を実現するための具体的な実施例を紹介し、まず
図4によって技術的解決手段の全体を説明する。
図4は、遅延敏感型アプリケーションと帯域幅敏感型アプリケーション送信キューWQEに対して性能分離の実現をサポートするRDMAネットワークカード送信側構造を示し、WQEキャッシュモジュールは、異なるテナントのWQEをキャッシュすることにより、PCIeインターフェースに基づくRDMAの読み取り遅延をマスキングするために用いられる。RDMAネットワークカード上のテナント識別に基づき、本発明は、遅延敏感型テナントと帯域幅敏感型テナントのWQEをグループ化してキャッシュし、遅延敏感グループと帯域幅敏感グループに分ける。遅延敏感グループと帯域幅敏感グループ内に、異なるテナントのWQEは、同様に分けて記憶される。遅延敏感グループの異なるテナントのWQEに対して、公平ポーリングスケジューラが採用される。待機ステーションは、帯域幅敏感グループの異なるテナントのWQEを記憶するために用いられる。待機ステーション内のWQEに対して、トークンバケットスケジューラが採用される。遅延敏感グループと帯域幅敏感グループとの間に、グループ間重み付きポーリングスケジューラが採用される。WQE処理モデルは、WQEに対する処理を実現し、処理プロセスは、スライススケジューリングを採用し、未処理のWQEは、その後のスケジューリングのために待機ステーションに書き込まれる。
【0044】
図4は、本発明の一実施例における遅延敏感型アプリケーションと帯域幅敏感型アプリケーション性能分離をサポートするRDMAネットワークカード送信側の構造模式図である。キャッシュモジュール01は、帯域幅敏感グループ012によって帯域幅敏感テナントからのWQEを記憶し、遅延敏感グループ011によって遅延敏感テナントからのWQEを記憶し、且つ帯域幅敏感グループ012と遅延敏感グループ011の内部にキューを用いて異なるテナントからのWQEをカテゴリ分けして記憶する。遅延敏感グループ011内のWQEは、第1のスケジューラ02によってスケジューリングされ、帯域幅敏感グループのWQEは、まず待機ステーション03にスケジューリングされ、そして第2のスケジューラ04によってスケジューリングされ、且つグループ間スケジューラ05によって遅延敏感グループ011と帯域幅敏感グループ012からのWQEをWQE処理モジュール06にスケジューリングし、WQE処理モジュール06は、スケジューリングされた遅延敏感グループ011のWQEに対して一度に処理を完了するが、帯域幅敏感グループ012のWQEに対して限定された長さ内に処理しきれない場合、WQEを待機ステーション03に書き戻して再度スケジューリングと処理を待機する。
【0045】
図5は、本発明の一具体実施例における遅延敏感型アプリケーションと帯域幅敏感型アプリケーション性能分離をサポートするRDMAネットワークカード送信側の構造模式図である。キャッシュモジュール01は、帯域幅敏感グループ012によって帯域幅敏感テナントからのWQEを記憶し、遅延敏感グループ011によって遅延敏感テナントからのWQEを記憶し、且つ帯域幅敏感グループ012と遅延敏感グループ011の内部にキューを用いて異なるテナントからのWQEをカテゴリ分けして記憶する。遅延敏感グループ011内のWQEは、公平ポーリングスケジューラ021によって(公平ポーリングアルゴリズムに基づいて)スケジューリングされ、帯域幅敏感グループのWQEは、まず待機ステーション03の中にスケジューリングされ、そしてトークンバケットスケジューラ041によって(トークンバケットスケジューリングアルゴリズムに基づいて)スケジューリングされ、且つグループ間重み付きポーリングスケジューラ051によって遅延敏感グループ011と帯域幅敏感グループ012からのWQEをWQE処理モジュール06にスケジューリングし、WQE処理モジュール06は、スケジューリングされた遅延敏感グループ011のWQEについては一度処理済みであるが、帯域幅敏感グループ012のWQEについては、規定長内に処理済みでない場合、再度スケジュールされて処理されるのを待つためにWQEを待機ステーション03に書き戻す。
【0046】
図6は、本発明の一実施例における遅延敏感グループ内の公平ポーリングスケジューリングのフローチャートである。本発明の一実施例において、公平ポーリングスケジューラを用いて前記遅延敏感グループにおける全てのキューをポーリングするステップは、公平ポーリングスケジューラによって維持されるアクティブリンクリストに対する周期的なトラバースによって、前記遅延敏感グループにおけるキューの先頭をポーリングし、前記アクティブリンクリストの各ノードは、それぞれ1つの遅延敏感グループにおけるキューに対応し、処理すべきWQEが存在するキューをアクティブリンクリストにノードを挿入し且つ処理すべきWQEがないキューに対応するノードをアクティブリンクリストから削除することによって前記アクティブリンクリストを維持することを含む。具体的には、本発明の実施例において、公平ポーリングのスケジューリングアルゴリズムを用いて遅延敏感型グループのWQEをスケジューリングすることにより、各遅延敏感テナントのWQEがWQE処理モデルによって機会均等に扱われることを確保する。本発明は、公平ポーリングスケジューリングアルゴリズムの実現において、1つのアクティブリンクリストを維持する必要があり、アクティブリンクリスト(該リンクリストは、シングルリンクリスト、デュアルリンクリスト又は循環リンクリストであってもよい)におけるエレメントは、遅延敏感グループにおける異なるテナントWQEキューの番号であり、アクティブリンクリストには、キューにおいて処理すべきエレメントが存在するアクティブキュー番号のみが含まれる。特に、WQEがバッファキューQ_iに書き込まれる時、Q_iが書き込む前に空であれば、Q_iキュー番号をアクティブリンクリストに挿入する。
図6は、本発明によって使用される公平ポーリングスケジューリングアルゴリズムの実行フローを説明し、それは、以下を含む:
【0047】
ステップS610、グループ間スケジューラは、スケジューリングを要求する。
【0048】
ステップS620、アクティブリンクリストヘッドのキューQueue_headを除去し、Queue_headはすなわち、今回の公平ポーリングのスケジューリング結果である。
【0049】
ステップS630、スケジューリング結果Queue_headをWQE処理モジュールに出力する。
【0050】
ステップS640、スケジューリング結果を出力した後、Queue_headが空か否かを判断し、否であればステップS610に戻る。
【0051】
ステップS650、そうであれば、アクティブリンクリストの先頭を最後尾に移動し、且つステップS610に戻る。
【0052】
本発明は、WQE処理モジュールの設計において、帯域幅敏感型WQEスライス(そして書き戻し)の処理方法を採用することを提案し、それにより、1つの帯域幅敏感型WQEがWQE処理モジュールを長時間占有することを避ける。本発明によって提案されたWQEスライス処理方法は、実行可能な状態のWQEの待機ステーションと、WQEスライスをサポートするWQE処理モデルとを記憶するための2つの肝心な要素に関する。
【0053】
図7は、本発明の一実施例における待機ステーション構造模式図である。該待機ステーションは、真のデュアルポートSRAM(第1の待機WQE読み書きチャンネル031と第2の待機WQE読み書きチャンネル032を含む)を採用して待機WQEの記憶を実現し、2つの読み書きチャンネル(第1の待機WQE読み書きチャンネル031と第2の待機WQE読み書きチャンネル032)は、異なる位置の待機ステーション03における帯域幅敏感グループ内のWQEの読み書きを実現し、ここで、第1の待機WQE読み書きチャンネル031は、WQEをキャッシュモジュールから待機ステーションに記憶するために用いられ、第2の待機WQE読み書きチャンネル032は、WQE処理モジュールがすべて処理していないWQEを待機ステーションに書き戻すために用いられる。待機WQE状態モジュール033は、セットインターフェース034とリセットインターフェース035によって全ての待機WQEの状態を維持し、待機WQEは、アイドルと占有の2つの状態を含み、待機WQE状態モジュールは、外に全ての待機WQE状態を出力するための待機WQE状態出力インターフェース036をさらに提供する。
【0054】
図8は、本発明の一実施例におけるWQE処理モジュールがWQEスライスを実現するフローチャートであり、選択的に、本発明は、帯域幅敏感型テナントのWQEに対応するタスクのみをスライス処理することもでき、該フローチャートは、以下のステップを含む:
【0055】
ステップS810、WQE処理モジュールは、処理すべきWQEを受信する。
【0056】
ステップS820、WQE処理モジュールは、経路最大伝送ユニット(PMTU)に基づいてWQEに対応する1つのデータパケットを出力する。
【0057】
ステップS830、データパケットが出力された後、WQEの残りのメッセージ長が0よりも大きいか否かを検査し、否であれば、ステップS810に戻り、次の処理すべきWQEの受信準備を続ける。
【0058】
ステップS840、WQEの残りのメッセージ長が0よりも大きいことが検査された場合、WQEが帯域幅敏感グループからのものであるか否かの検査を続け、否であれば、ステップS820に戻る。
【0059】
ステップS850、WQEが帯域幅敏感グループからのものであることが検査された場合、未処理のWQEを待機ステーションに書き戻し、且つステップS810に戻る。
【0060】
図9は、本発明の一実施例におけるトークンカウンタ維持のフローチャートであり、トークンカウンタの更新規則を具体的に表示し、その中に以下のステップが含まれる:
【0061】
ステップS910、クロックは、トリガを中断する(アクティブリンクリストのトークンカウンタを順次トラバースする)。
【0062】
ステップS920、リンクリストアクセスポインタrd_ptrを1に初期化する。
【0063】
ステップS930、アクティブリンクリストのrd_ptr番目のエレメントのtoken_bucketを読み取る。
【0064】
ステップS940、token_bucket = min(B、token_bucket + F)の方式でトークンカウンタを更新し、すなわちtoken_bucketをBとtoken_bucket+Fとの間のより小さい値に更新する。
【0065】
ステップS950、rd_ptrを逓増する。
【0066】
ステップS960、アクティブリンクリストが既にトラバースされたか否かを検査し、そうであれば、ステップS910に戻り、否であれば、ステップS930に戻る。
【0067】
図10は、本発明の一実施例におけるトークンバケットアルゴリズムに基づく帯域幅敏感型WQEスケジューリング実行フローであり、以下のステップを含む:
【0068】
ステップS1010、グループ間スケジューラは、スケジューリングを要求する。
【0069】
ステップS1020、アクティブリンクリストヘッドのキューQueue_headを除去する。
【0070】
ステップS1030、Queue_headに対応するトークンカウンタtoken_bucketが経路最大伝送ユニット(PMTU)よりも大きいか否かを判断する。
【0071】
ステップS1040、Queue_headに対応するトークンカウンタtoken_bucketが経路最大伝送ユニット(PMTU)よりも大きければ、Queue_headに対応するWQEをスケジューリングする。
【0072】
ステップS1050、Queue_headに対応するトークンカウンタtoken_bucketが経路最大伝送ユニット(PMTU)以下であれば、Queue_headをリンクリストの末尾に挿入してステップS1020に戻る。
【0073】
ステップS1060、token_bucketからPMTUを減算する。
【0074】
ステップS1070、Queue_headをリンクリストの末尾に挿入してステップS1010に戻る。
【0075】
ステップS140に対して、本発明の実施例において、トークンバケットに基づくスケジューリングアルゴリズムを用いて待機ステーションにおける帯域幅敏感型WQEをスケジューリングすることにより、アクティブ帯域幅敏感型テナントが利用可能な帯域幅を公平に共有する性能分離効果を達成する。本発明の実施例は、各帯域幅敏感型テナントに1つのトークンカウンタtoken_bucketを維持し、カウンタの最大値は、Bであり、同時に1つのタイマを維持し、タイマのリフレッシュ周期は、Tである。いくつかの実施例において、アクティブ帯域幅敏感グループテナントの数がNAである時、全ての帯域幅敏感型テナントは、帯域幅をBWに割り当てることができ、各アクティブ帯域幅敏感テナントは、帯域幅をBW/NAに割り当てることができる。本発明の実施例において、所定のトークンバケットアルゴリズムにおいて毎回のリフレッシュトークンの数は、Fである。トークンバケットスケジューリングの原理に基づいて、BW/NAは、F/Tに近似されるべきである。本発明は、トークンバケットスケジューリングアルゴリズムの実現において、1つのアクティブリンクリストを維持する必要があり、アクティブリンクリストにおけるエレメントは、帯域幅敏感グループにおける異なるテナント待機WQEのキュー番号であり、アクティブリンクリストには、WQEが待機処理状態にあるアクティブキュー番号のみが含まれる。特に、帯域幅敏感キュー番号がQ_jのWQEが待機ステーションに書き込まれる場合、Q_jをアクティブリンクリストに挿入する。帯域幅敏感キュー番号Q_kのWQEが処理された後、Q_kをアクティブリンクリストから削除する。
【0076】
図11は、本発明の一実施例における重み付きポーリングに基づくスケジューリングプロセスである。本発明は、重み付きポーリングの方式で遅延敏感グループと帯域幅敏感グループのWQEをスケジューリングし、且つ2つのグループの重みを構成することができ、それにより区別サービスのフレキシビリティを向上させることができる。遅延敏感グループのための重みw_lsと帯域幅敏感グループのための重みw_bsの2つのグループの動的重みを維持し、デフォルトではw_ls=w_bs=1である。同時に、本発明は、遅延敏感グループのためのls_cntと帯域幅敏感グループのためのbs_cntの2つのグループの動的重みを維持する必要がある。動的重みについて、ls_cntとbs_cntは、同じパラメータに初期化して構成され、1つのWQEがスケジューリングされるたびに、対応するカテゴリの重み値ls_cnt又はbs_cntに逓減する。重み付きポーリングスケジューリングのプロセスは、
図11に示すように、以下のステップを含む:
【0077】
ステップS1110、WQE処理モジュールは、スケジューリングを要求する。
【0078】
ステップS1120、ls_cntがbs_cnt以上であるか否かを判断し、そうであれば、ステップS1130とステップS1140を順次実行し、否であれば、ステップS1150ステップS1160を順次実行する。
【0079】
ステップS1130、遅延敏感グループをスケジューリングする。
【0080】
ステップS1140、ls_cntを逓減し、ステップS1170を実行する。
【0081】
ステップS1150、帯域幅敏感グループをスケジューリングする。
【0082】
ステップS1160、bs_cntを逓減し、ステップS1170を実行する。
【0083】
ステップS1170、ls_cntとbs_cntが同時に0に等しいか否かを判断し、否であれば、ステップS1110に戻り、そうであれば、ステップS1180を実行する。
【0084】
ステップS1180、ls_cntとbs_cntをw_lsとw_bsに再初期化する。
【0085】
さらに、本発明のさらに別の実施例において、2つのRDMAネットワークカードが効率的な二重冗長バックアップを実現するために、この2つのネットワークカードが同じ物理アドレスとIPアドレスを有することを確保しなければならず、上層アプリケーションシステムの場合には、システムにおいて「シングルネットワークカード」の特徴が提示され、逆に、システムにおいて1つのネットワークカードが別のブロックネットワークカードに切り替わって作動する時、IPアドレスが変化すれば、システムは、データを正常に送受信することができない。IPアドレスが変更されず、物理アドレスが変更される場合、プロトコルスタックにおけるARPバインディングテーブルの変化を引き起こし、ARPバインディングテーブルにおけるIPアドレスとネットワークカード物理アドレスとの関係を再対応すると、2つのネットワークカードの間の切り替え時間を延長することができる。しかしながら、各ネットワークカードの物理アドレスは、全世界で一意であり、ネットワークカードのPROMに保存されている。2つのネットワークカードが同じ物理アドレスを持つようにするために、ネットワークカードを初期化する時に、PROMからそのうちの1つのネットワークカードの物理アドレスを読み出し、該物理アドレスの内容を別のブロックネットワークカードの物理アドレスレジスタとデータ構造変数に書き込み、この場合、この2つのネットワークカードは、完全に同じ物理アドレスを持つ。この設計に基づいて本発明は、デュアルネットワークカードの切り替えを実現することができる。
【0086】
本発明の別の態様は、RDMAネットワークカードを提供し、
図12は、本発明の一実施例におけるRDMAネットワークカードの構造模式図である。該RDMAネットワークカードは、キャッシュモジュール01、第1のスケジューラ02、待機ステーション03、第2のスケジューラ04、グループ間スケジューラ05、WQE処理モジュール06、制御モジュール07、送信モジュール08及び受信モジュール09を含む。ここで、
制御モジュール07は、キューペア識別の中に含まれるテナントタイプ識別に基づいてテナントタイプを認識し、認識された遅延敏感型テナントの送信キューの作動キューエレメントWQEを遅延敏感型WQEとしてキャッシュモジュール01の遅延敏感グループにキャッシュし、認識された帯域幅敏感型テナントの送信キューのWQEを帯域幅敏感型WQEとしてキャッシュモジュール01の帯域幅敏感グループにキャッシュするために用いられ、ここで、キャッシュモジュール01の帯域幅敏感グループにキャッシュされる少なくとも一部の処理すべきWQEが待機ステーション03に記憶され、前記キャッシュモジュールに含まれる遅延敏感グループと帯域幅敏感グループ内の異なるテナントのWQEが異なるキューに従ってキャッシュされ、キューの各ノードが1つのWQEであり、
待機ステーション03は、前記帯域幅敏感グループのうちの少なくとも一部の処理すべきWQEを記憶するために用いられる。ここで、該待機ステーション03の構造は、
図7を詳細に参照し、真のデュアルポートSRAM、待機WQE状態モジュール033、セットインターフェース034とリセットインターフェース035を含み、真のデュアルポートSRAMは、キャッシュモジュールにおける帯域幅敏感グループ内の帯域幅敏感型WQEを待機ステーションに伝送するための第1の待機WQE読み書きチャンネル031と、出力されていないデータパケットに対応するWQEを待機ステーションに書き戻すための第2の待機WQE読み書きチャンネル032とを含む。待機WQE状態モジュール033は、待機ステーションにおける全てのWQEの状態を維持し、且つ外に全ての待機WQE状態を出力するために用いられる。
【0087】
セットインターフェース034とリセットインターフェース035は、WQE状態のプログラミング制御を行うために用いられ、ここで、前記待機WQE状態は、アイドルと占有の2つの状態を含む。
【0088】
グループ間スケジューラ05は、遅延敏感グループ内のWQE又は帯域幅敏感グループ内のWQEのどちらかをスケジューリングすることを決定し、遅延敏感グループ内のWQEをスケジューリングする時に第1のスケジューラにスケジューリング要求を送信し、帯域幅敏感グループ内のWQEをスケジューリングすると決定する時に第2のスケジューラにスケジューリング要求を送信し、且つ第1のスケジューラ02と第2のスケジューラ04からのWQEスケジューリング結果をWQE処理モジュールに伝送するために用いられ、
第1のスケジューラ05は、グループ間スケジューラのスケジューリング要求に基づいて第1のスケジューリングアルゴリズムを利用して遅延敏感グループ内の遅延敏感型WQEをスケジューリングし、且つグループ間スケジューラ05にWQEスケジューリング結果を戻すために用いられ、
第2のスケジューラ04は、第2のスケジューリングアルゴリズムを利用して待機ステーション03における帯域幅敏感グループ内の帯域幅敏感型WQEをスケジューリングし、且つグループ間スケジューラ05にWQEスケジューリング結果を戻すために用いられ、
WQE処理モジュール06は、WQEスケジューリング結果に基づいて遅延敏感型WQEを処理して該遅延敏感型WQEに対応する全てのデータパケットを出力し、且つWQEスケジューリング結果に基づいて帯域幅敏感型WQEを処理し、経路最大伝送ユニットに基づいて該帯域幅敏感型WQEに対応する1つのデータパケットを出力し、且つ出力されていないデータパケットが存在する場合、出力されていないデータパケットに対応するWQEを前記待機ステーションに書き戻すために用いられる。
【0089】
制御モジュール07は、キューペア識別の中に含まれるテナントタイプ識別に基づいてテナントタイプを認識し、認識された遅延敏感型テナントの送信キューの作動キューエレメントWQEを遅延敏感型WQEとしてキャッシュモジュールの遅延敏感グループにキャッシュし、認識された帯域幅敏感型テナントの送信キューのWQEを帯域幅敏感型WQEとしてキャッシュモジュールの帯域幅敏感グループにキャッシュするために用いられ、ここで、キャッシュモジュールの帯域幅敏感グループにキャッシュされる少なくとも一部の処理すべきWQEが待機ステーションに記憶され、前記キャッシュモジュールに含まれる遅延敏感グループと帯域幅敏感グループ内の異なるテナントのWQEが異なるキューに従ってキャッシュされ、キューの各ノードが1つのWQEである。
【0090】
送信モジュール08は、WQEに対応するデータを送信するためのRDMAネットワークカードの従来の構成である。
【0091】
受信モジュール09は、他のネットワークカードからのデータを受信するためのRDMAネットワークカードの従来の構成である。
【0092】
上記方法に対応して、本発明は、RDMAネットワークカード送信キューの性能分離システムをさらに提供し、該システムは、コンピュータ指令が記憶されるメモリと、前記メモリによって記憶されるコンピュータ指令を実行するためのプロセッサとを含むコンピュータ機器を含み、前記コンピュータ指令がプロセッサによって実行される時に該システムが前記方法のステップを実現する。
【0093】
本発明の実施例は、プロセッサによって実行される時に前記方法のステップを実現するコンピュータプログラムが記憶されるコンピュータ可読記憶媒体をさらに提供する。該コンピュータ可読記憶媒体は、ランダムアクセスメモリ(RAM)、メモリ、リードオンリーメモリ(ROM)、電気的プログラマブルROM、電気的消去可能プログラマブルROM、レジスタ、フロッピーディスク、ハードディスク、リムーバブルストレージディスク、CD-ROM、又は技術分野内で知られている他の任意の形態の記憶媒体のような有形記憶媒体であってもよい。
【0094】
従来の技術と比べて、本発明によって提案されたRDMAネットワークカード送信キューの性能分離方法、システム及び記憶媒体は、以下の利点を有する:
(1)RDMAネットワークカード送信側の遅延敏感型アプリケーションと帯域幅敏感型アプリケーションとの間の性能分離を実現するように、遅延敏感型テナントと帯域幅敏感型テナントからのWQEをそれぞれ記憶、スケジューリングと処理する。
(2)帯域幅敏感型テナントのWQEに対して、1回の伝送で完了しないで待機ステーションに書き戻して再度スケジューリングされる方式が設計され、RDMAに基づく帯域幅敏感アプリケーションが送信側の帯域幅リソースを公平に取得することを確保することができ、1つの帯域幅敏感型アプリケーションのWQEが送信側の帯域幅リソースを長期的に占有することを効果的に避け、帯域幅敏感型アプリケーションがWQE処理モジュールリソースを長期的に占有することを効果的に避け、帯域幅敏感型アプリケーションの間の性能分離を実現する。
(3)RDMAネットワークカード送信側に公平ポーリングスケジューラを用いて対応するWQEをスケジューリングし、遅延敏感型アプリケーションがWQE処理モジュールによって処理される機会を公平に取得できることを確保する。
【0095】
当業者であれば、本明細書に開示された実施形態に関連して説明された各例示的な構成部分、システム、及び方法は、ハードウェア、ソフトウェア、又は両方の組み合わせで実現できることを理解すべきである。具体的には、ハードウェア方式で実行されるか、ソフトウェア方式で実行されるかは、技術案の特定の応用及び設計拘束条件によるものである。当業者は、各特定の応用に対して異なる方法を使用して、記述された機能を実現することができるが、このような実現は、本発明の範囲を超えていると考えるべきではない。ハードウェアの方式で実現する時、それは、例えば電子回路、特定の用途向け集積回路(ASIC)、適切なファームウェア、プラグイン、機能カード等であってもよい。ソフトウェアの方式で実現する時、本発明のエレメントは、必要とするタスクのプログラム又はコードセグメントを実行するために用いられる。プログラム又はコードセグメントは、機械可読媒体に記憶されてもよく、又はキャリアに付帯されるデータ信号によって伝送媒体又は通信リンクアップ上で伝送されてもよい。
【0096】
本発明は、上記で説明され、図に示された特定の構成及び処理に限定されないことを明確にする必要がある。既知の方法の詳細な説明は、簡明のためにここでは省略される。上述した実施例において、いくつかの具体的なステップが例として説明され、示されている。しかしながら、本発明の方法手順は、説明及び図示された特定のステップに限定されるものではなく、当業者は、本発明の精神を理解した上で、様々な変更、修正及び追加を行うか、又はステップ間の順序を変更することができる。
【0097】
本発明において、1つの実施形態に関して説明及び/又は例示された特徴は、1つ又は複数の他の実施形態において、同じように又は同様に使用され、及び/又は他の実施形態の特徴と組み合わせて、又は他の実施形態の特徴に取って代わることができる。
【0098】
以上の記載は、本発明の好ましい実施例に過ぎず、本発明を制限するためには使用されず、当業者にとって、本発明の実施例は、種々の変更及び変化が可能である。本発明の精神と原則内で行われた任意の修正、等価代替、改良等は、いずれも、本発明の保護範囲内に含まれるべきである。
【0099】
(付記)
(付記1)
RDMAネットワークカード送信キューの性能分離方法であって、
送信側RDMAネットワークカードは、キューペア識別の中に含まれるテナントタイプ識別に基づいてテナントタイプを認識し、認識された遅延敏感型テナントの送信キューの作動キューエレメントWQEを遅延敏感型WQEとしてキャッシュモジュールの遅延敏感グループにキャッシュし、認識された帯域幅敏感型テナントの送信キューのWQEを帯域幅敏感型WQEとしてキャッシュモジュールの帯域幅敏感グループにキャッシュすることであって、ここで、キャッシュモジュールの帯域幅敏感グループにキャッシュされる少なくとも一部の処理すべきWQEが待機ステーションに記憶され、前記キャッシュモジュールに含まれる遅延敏感グループと帯域幅敏感グループ内の異なるテナントのWQEが異なるキューに従ってキャッシュされ、キューの各ノードが1つのWQEであることと、
グループ間スケジューラを利用して遅延敏感グループ内のWQE又は帯域幅敏感グループ内のWQEのどちらかをスケジューリングすることを決定し、且つ遅延敏感グループ内のWQEをスケジューリングすると決定する時に第1のスケジューラにスケジューリング要求を送信し、帯域幅敏感グループ内のWQEをスケジューリングすると決定する時に第2のスケジューラにスケジューリング要求を送信することと、
第1のスケジューラによってグループ間スケジューラのスケジューリング要求に基づいて第1のスケジューリングアルゴリズムを利用して遅延敏感グループ内の遅延敏感型WQEをスケジューリングし、且つグループ間スケジューラにWQEスケジューリング結果を戻すことと、
第2のスケジューラによって第2のスケジューリングアルゴリズムを利用して待機ステーションにおける帯域幅敏感型WQEをスケジューリングし、且つグループ間スケジューラにWQEスケジューリング結果を戻すことと、
グループ間スケジューラによって第1のスケジューラと第2のスケジューラからのWQEスケジューリング結果を前記送信側RDMAネットワークカード上のWQE処理モジュールに伝送することと、
WQE処理モジュールによってWQEスケジューリング結果に基づいて遅延敏感型WQEを処理して該遅延敏感型WQEに対応する全てのデータパケットを出力し、且つWQEスケジューリング結果に基づいて帯域幅敏感型WQEを処理し、経路最大伝送ユニットに基づいて該帯域幅敏感型WQEに対応する1つのデータパケットを出力し、且つ出力されていないデータパケットが存在する場合、出力されていないデータパケットに対応するWQEを前記待機ステーションに書き戻すこととを含む、RDMAネットワークカード送信キューの性能分離方法。
【0100】
(付記2)
該方法は、
前記RDMAネットワークカード上のドライブインタフェースによってテナントの識別要求を受信し、前記識別要求に基づいてテナントにテナントタイプ識別を含むテナント識別を提供することと、
テナント識別が割り当てられた各テナントに対して、テナントタイプ識別が含まれる前記キューペア識別を有するキューペアを作成し、且つ前記キューペアに対してWQEを記憶するための前記キューペアリソースを割り当てることと、をさらに含む、付記1に記載の方法。
【0101】
(付記3)
前記テナントタイプ識別は、予め設定された長さの2進数であり、前記テナントタイプ識別は、前記テナント識別の最後のビットである、付記2に記載の方法。
【0102】
(付記4)
前記第1のスケジューリングアルゴリズムは、公平ポーリングスケジューリングアルゴリズムであり、前述した、第1のスケジューラによってグループ間スケジューラのスケジューリング要求に基づいて第1のスケジューリングアルゴリズムを利用して遅延敏感グループ内の遅延敏感型WQEをスケジューリングし、且つグループ間スケジューラにWQEスケジューリング結果を戻すステップは、
第1のスケジューラによってグループ間スケジューラのスケジューリング要求を受信し、公平ポーリングスケジューリングアルゴリズムに基づいて第1のスケジューラによって維持されるアクティブリンクリストにおける異なるテナントの遅延敏感型WQEのキューをトラバースし、遅延敏感グループ内の異なるテナントの遅延敏感型WQEのキューをポーリングすることであって、ここで、前記アクティブリンクリストに遅延敏感グループ内の異なるテナントが処理すべき遅延敏感型WQEのキュー番号が記録され、前記アクティブリンクリストの1つのノードが1つの遅延敏感型WQEの非空キューに対応することと、
ポーリングされたアクティブリンクリストヘッドのキューのWQEをWQEスケジューリング結果として前記グループ間スケジューラに戻し、且つ対応するノードを前記アクティブリンクリストから削除することと、を含む、付記1に記載の方法。
【0103】
(付記5)
前記第2のスケジューリングアルゴリズムは、トークンバケットスケジューリングアルゴリズムであり、前述した、前記第2のスケジューラによって第2のスケジューリングアルゴリズムを利用して待機ステーションにおける帯域幅敏感グループ内の帯域幅敏感型WQEをスケジューリングし、且つグループ間スケジューラにWQEスケジューリング結果を戻すステップは、
第2のスケジューラによってグループ間スケジューラのスケジューリング要求を受信し、トークンバケットスケジューリングアルゴリズムに基づいて第2のスケジューラによって維持されるアクティブリンクリストにおける異なるテナントの帯域幅敏感型WQEのキューのトークンカウンタをトラバースし、所定のリフレッシュ周期と毎回のトークンリフレッシュ数に従ってトークンをリフレッシュしてトークンカウンタカウントを更新することを含み、ここで、前記アクティブリンクリストに帯域幅敏感グループ内の異なるテナントが処理すべき帯域幅敏感型WQEのキュー番号が記録され、前記アクティブリンクリストの1つのノードが1つの帯域幅敏感型WQEの非空キューに対応する、付記1に記載の方法。
【0104】
(付記6)
該方法は、
待機ステーションにおける帯域幅敏感グループ内のWQEに対して、待機WQE状態モジュールによって待機ステーションにおける全てのWQEの状態を維持し、且つ外にアイドルと占有の2つの状態を含む全ての待機WQE状態を出力し、前記待機WQE状態モジュールによって提供されるセットとリセットインターフェースに基づいてWQE状態のプログラミング制御を行うことをさらに含む、付記1に記載の方法。
【0105】
(付記7)
前述した、グループ間スケジューラを利用して遅延敏感グループ内のWQE又は帯域幅敏感グループ内のWQEのどちらかをスケジューリングすることを決定するステップは、
グループ間スケジューラは、遅延敏感グループと帯域幅敏感グループのために構成された動的重みに基づいて、重み付きポーリングスケジューリングアルゴリズムに基づいて遅延敏感グループ内のWQE又は帯域幅敏感グループ内のWQEのどちらかをスケジューリングすることを決定し、且つ毎回のスケジューリング結果に基づいて動的重みを更新することを含む、付記1に記載の方法。
【0106】
(付記8)
前述した、毎回のスケジューリング結果に基づいて動的重みを更新することは、毎回のスケジューリング結果に基づいてスケジューリング結果に対応する遅延敏感グループ又は帯域幅敏感グループの重みを低減させることを含む、付記7に記載の方法。
【0107】
(付記9)
RDMAネットワークカードであって、
キューペア識別の中に含まれるテナントタイプ識別に基づいてテナントタイプを認識し、認識された遅延敏感型テナントの送信キューの作動キューエレメントWQEを遅延敏感型WQEとしてキャッシュモジュールの遅延敏感グループにキャッシュし、認識された帯域幅敏感型テナントの送信キューのWQEを帯域幅敏感型WQEとしてキャッシュモジュールの帯域幅敏感グループにキャッシュするための制御モジュールであって、ここで、キャッシュモジュールの帯域幅敏感グループにキャッシュされる少なくとも一部の処理すべきWQEが待機ステーションに記憶され、前記キャッシュモジュールに含まれる遅延敏感グループと帯域幅敏感グループ内の異なるテナントのWQEが異なるキューに従ってキャッシュされ、キューの各ノードが1つのWQEである制御モジュールと、
前記帯域幅敏感グループのうちの少なくとも一部の処理すべきWQEを記録するための前記待機ステーションと、
遅延敏感グループ内のWQE又は帯域幅敏感グループ内のWQEのどちらかをスケジューリングすることを決定し、遅延敏感グループ内のWQEをスケジューリングすると決定する時に第1のスケジューラにスケジューリング要求を送信し、帯域幅敏感グループ内のWQEをスケジューリングすると決定する時に第2のスケジューラにスケジューリング要求を送信し、且つ第1のスケジューラと第2のスケジューラからのWQEスケジューリング結果をWQE処理モジュールに伝送するためのグループ間スケジューラと、
グループ間スケジューラのスケジューリング要求に基づいて第1のスケジューリングアルゴリズムを利用して遅延敏感グループ内の遅延敏感型WQEをスケジューリングし、且つグループ間スケジューラにWQEスケジューリング結果を戻すための第1のスケジューラと、
第2のスケジューリングアルゴリズムを利用して待機ステーションにおける帯域幅敏感グループ内の帯域幅敏感型WQEをスケジューリングし、且つグループ間スケジューラにWQEスケジューリング結果を戻すための第2のスケジューラと、
WQEスケジューリング結果に基づいて遅延敏感型WQEを処理して該遅延敏感型WQEに対応する全てのデータパケットを出力し、且つWQEスケジューリング結果に基づいて帯域幅敏感型WQEを処理し、経路最大伝送ユニットに基づいて該帯域幅敏感型WQEに対応する1つのデータパケットを出力し、且つ出力されていないデータパケットが存在する場合、出力されていないデータパケットに対応するWQEを前記待機ステーションに書き戻すための前記WQE処理モジュールと、を含む、RDMAネットワークカード。
【0108】
(付記10)
前記待機ステーションは、
キャッシュモジュールにおける帯域幅敏感グループ内の帯域幅敏感型WQEを待機ステーションに伝送するための第1の待機WQE読み書きチャンネルと、出力されていないデータパケットに対応するWQEを待機ステーションに書き戻すための第2の待機WQE読み書きチャンネルを含む真のデュアルポートSRAMと、
待機ステーションにおける全てのWQEの状態を維持し、且つ外に全ての待機WQE状態を出力するための待機WQE状態モジュールと、
WQE状態のプログラミング制御を行うためのセットとリセットインターフェースであって、ここで、前記待機WQE状態は、アイドルと占有の2つの状態を含むセットとリセットインターフェースと、を含む、付記9に記載のRDMAネットワークカード。
【0109】
(付記11)
前記第1のスケジューリングアルゴリズムは、公平ポーリングスケジューリングアルゴリズムであり、
前記第2のスケジューリングアルゴリズムは、トークンバケットスケジューリングアルゴリズムであり、
前記グループ間スケジューラは、遅延敏感グループと帯域幅敏感グループのために構成された動的重みに基づいて、重み付きポーリングスケジューリングアルゴリズムに基づいて遅延敏感グループ内のWQE又は帯域幅敏感グループ内のWQEのどちらかをスケジューリングすることを決定し、且つ毎回のスケジューリング結果に基づいて動的重みを更新する、付記9に記載のRDMAネットワークカード。