(57)【要約】【課題】論理区分の間におけるネットワーク・アダプタ・リソース割振りを提供すること。【解決手段】一実施形態では、ネットワーク・アダプタが、複数の論理ポートに多重化される物理ポートを有し、論理ポートはデフォルトのキューを有する。アダプタはまた、任意の論理ポートに割り振ることのできる他のキューと、タプルをキューにマッピングするリソースとを有する。タプルは、物理ポートを介して受信されたパケット中のデータから導出される。アダプタは、受け取ったタプルおよびリソースに基づいて、どのキューがパケットを受け取るべきかを決定する。受け取ったタプルがリソースと一致する場合は、アダプタは対応するキューにパケットを記憶する。そうでない場合は、アダプタは、パケットによって指定される論理ポートに対するデフォルトのキューにパケットを記憶する。割振り要求を要求元区分から受け取るのに応答して、遊休状態のリソースがない場合は、選択された区分にすでに割り振られているリソースが差替えのために選択される。選択されたリソースは次いで要求元区分に割り振られる。【選択図】図１
2010537297.tif 000002
【特許請求の範囲】
【請求項１】
タプルとキューの識別子とを含む第１の割振り要求を第１の要求元区分から受け取ること、
選択区分に割り振られている選択リソースを複数のリソースの中から選択すること、および、
前記選択リソースを前記第１の要求元区分に割り振ることを含む方法であって、前記割り振ることがさらに、前記キューに対する前記タプルのマッピングを前記選択リソースに記憶することを含む方法。
【請求項２】
前記第１の割振り要求がさらに第１の優先順位を含み、前記選択区分が、第２の優先順位を含む第２の割振り要求を送っており、前記選択することがさらに、
前記第１の優先順位が前記第２の優先順位よりも大きいと判定すること、および、
複数の区分のうちの他の区分に前記第２の優先順位で割り振られている前記リソースの割合と比較して、前記選択区分に、その割り振られているリソースの最大割合が前記第２の優先順位で割り振られていると判定することを含む、請求項１に記載の方法。
【請求項３】
前記選択することがさらに、
前記第２の優先順位を、前記複数のリソースに割り当てられている最低の優先順位として選択することを含む、請求項２に記載の方法。
【請求項４】
前記選択することがさらに、
前記選択区分に割り振られている前記リソースのうちで最低の下位優先順位の前記選択リソースを選択することを含む、請求項３に記載の方法。
【請求項５】
前記第１の割振り要求がさらに第１の優先順位を含み、前記選択区分が、第２の優先順位を含む第２の割振り要求を送っており、前記選択することがさらに、
前記第１の優先順位が、現在割り振られている前記複数のリソース全ての優先順位以下であると判定すること、および、
前記第１の要求元区分が有する、その上限に対する前記第１の優先順位の前記複数のリソースの数の割合が、前記選択区分が有する前記第２の優先順位についての割合未満であると判定することを含み、前記第１の優先順位と前記第２の優先順位とが同一である、請求項１に記載の方法。
【請求項６】
前記選択することがさらに、
前記選択区分に割り振られている前記リソースに割り当てられている最低の下位優先順位の前記選択リソースを選択することを含む、請求項５に記載の方法。
【請求項７】
前記第１の割振り要求がさらに第１の優先順位を含み、前記選択することがさらに、
前記第１の優先順位が、現在割り振られている前記複数のリソース全ての優先順位以下であると判定すること、
前記第１の要求元区分が有する、その上限に対する前記第１の優先順位で割り振られている前記複数のリソースの数の割合が、他の全ての区分が有する、それらの上限に対する前記第１の優先順位についての割合よりも大きいと判定すること、および、
前記第１の要求元区分にすでに割り振られている前記リソースと比較して、最低の下位優先順位を有する前記選択リソースを選択することを含む、請求項１に記載の方法。
【請求項８】
ネットワークからパケットを受信すること、
前記パケット中のデータが前記タプルと一致すると判定すること、および、
前記マッピングによって指定される前記キューに前記パケットを記憶することをさらに含む、請求項１ないし７のいずれかに記載の方法。
【請求項９】
前記第１の要求元区分から割振り解除要求を受け取ること、
複数の保存済み要求の中から第１の保存済み要求を選択することであって、前記第１の保存済み要求が、前に第２の要求元区分から受け取られ、前記複数のリソース全てが割り振られていて差し替えることができなかったときに保存されたものであること、および、
前記選択リソースを前記第２の要求元区分に割り振ることをさらに含む、請求項１ないし８のいずれかに記載の方法。
【請求項１０】
前記第１の保存済み要求を選択することがさらに、
前記複数の保存済み要求のうちで最高の優先順位を選択すること、
前記最高の優先順位で割り振られている前記複数のリソースの割合がその上限に対して最も低い、第２の選択区分を選択すること、および、
最高の下位優先順位を有する、前記第２の選択区分によって送られた前記第１の保存済み要求を選択することを含む、請求項９に記載の方法。
【請求項１１】
前記要求元区分が第１の優先順位で割り振ることが許される、前記複数のリソースの数の上限を設定することをさらに含む、請求項１ないし１０のいずれかに記載の方法。
【請求項１２】
複数のリソース全てが割り振られていると判定するステップをさらに含み、複数のリソースの中から選択リソースを選択する前記ステップが前記判定に応答する、請求項１ないし１１のいずれかに記載の方法。
【請求項１３】
命令でエンコードされた記憶媒体であって、前記命令が、実行されたとき、
タプルとキューの識別子とを含む第１の割振り要求を第１の要求元区分から受け取ること、
複数のリソースの全てが割り振られていると判定すること、
前記判定することに応答して、選択区分に割り振られている選択リソースを前記複数のリソースの中から選択すること、および、
前記選択リソースを前記第１の要求元区分に割り振ることを含み、前記割り振ることがさらに、前記キューに対する前記タプルのマッピングを前記選択リソースに記憶することを含む記憶媒体。
【請求項１４】
前記第１の割振り要求がさらに第１の優先順位を含み、前記選択区分が、第２の優先順位を含む第２の割振り要求を送っており、前記選択することがさらに、
前記第１の優先順位が前記第２の優先順位よりも大きいと判定すること、および、
複数の区分のうちの他の区分に前記第２の優先順位で割り振られている前記リソースの割合と比較して、前記選択区分に、その割り振られているリソースの最大割合が前記第２の優先順位で割り振られていると判定することを含む、請求項１３に記載の記憶媒体。
【請求項１５】
前記選択することがさらに、
前記第２の優先順位を、前記複数のリソースの最低の優先順位として選択することを含む、請求項１４に記載の記憶媒体。
【請求項１６】
前記選択することがさらに、
前記選択区分に割り振られている前記リソースのうちで最低の下位優先順位の前記選択リソースを選択することを含む、請求項１５に記載の記憶媒体。
【請求項１７】
前記第１の割振り要求がさらに第１の優先順位を含み、前記選択区分が、第２の優先順位を含む第２の割振り要求を送っており、前記選択することがさらに、
前記第１の優先順位が、現在割り振られている前記複数のリソース全ての優先順位以下であると判定すること、および、
前記第１の要求元区分が有する、その上限に対する前記第１の優先順位の前記複数のリソースの数の割合が、前記選択区分が有する前記第２の優先順位についての割合未満であると判定することを含み、前記第１の優先順位と前記第２の優先順位とが同一である、請求項１３に記載の記憶媒体。
【請求項１８】
前記選択することがさらに、
前記選択区分に割り振られている前記リソースに割り当てられている最低の下位優先順位の前記選択リソースを選択することを含む、請求項１７に記載の記憶媒体。
【請求項１９】
前記第１の割振り要求がさらに第１の優先順位を含み、前記選択することがさらに、
前記第１の優先順位が、現在割り振られている前記複数のリソース全ての優先順位以下であると判定すること、
前記第１の要求元区分が有する、その上限に対する前記第１の優先順位で割り振られている前記複数のリソースの数の割合が、他の全ての区分が有する、それらの上限に対する前記第１の優先順位についての割合よりも大きいと判定すること、および、
前記第１の要求元区分にすでに割り振られている前記リソースと比較して、最低の下位優先順位を有する前記選択リソースを選択することを含む、請求項１３に記載の記憶媒体。
【請求項２０】
ネットワークからパケットを受信すること、
前記パケット中のデータが前記タプルと一致すると判定すること、および、
前記マッピングによって指定される前記キューに前記パケットを記憶することをさらに含む、請求項１３ないし１９のいずれかに記載の記憶媒体。
【請求項２１】
前記第１の要求元区分から割振り解除要求を受け取ること、
複数の保存済み要求の中から第１の保存済み要求を選択することであって、前記第１の保存済み要求が、前に第２の要求元区分から受け取られ、前記複数のリソース全てが割り振られていて差し替えることができなかったときに保存されたものであること、および、
前記選択リソースを前記第２の要求元区分に割り振ることをさらに含む、請求項１３ないし２０のいずれかに記載の記憶媒体。
【請求項２２】
前記第１の保存済み要求を選択することがさらに、
前記複数の保存済み要求のうちで最高の優先順位を選択すること、
前記最高の優先順位で割り振られている前記複数のリソースの割合がその上限に対して最も低い、第２の選択区分を選択すること、および、
最高の下位優先順位を有する、前記第２の選択区分によって送られた前記第１の保存済み要求を選択することを含む、請求項２１に記載の記憶媒体。
【請求項２３】
前記要求元区分が複数の優先順位で割り振ることが許される、前記複数のリソースの数の複数の上限を設定することをさらに含む、請求項１３ないし２２のいずれかに記載の記憶媒体。
【請求項２４】
プロセッサと、
前記プロセッサに通信可能に接続されたメモリとを備えるコンピュータであって、前記メモリが命令をエンコードし、前記命令が、前記プロセッサによって実行されたとき、
タプルとキューの識別子とを含む第１の割振り要求を第１の要求元区分から受け取ること、
複数のリソースの全てが割り振られていると判定すること、前記判定することに応答して、選択区分に割り振られている選択リソースを前記複数のリソースの中から選択することを含み、前記コンピュータがさらに、
前記プロセッサに通信可能に接続されたネットワーク・アダプタを備え、前記ネットワーク・アダプタがロジックおよび前記複数のリソースを備え、前記ロジックが、前記第１のキューに対する前記タプルのマッピングを前記選択リソースに記憶することによって、前記選択リソースを前記第１の要求元区分に割り振る、コンピュータ。
【請求項２５】
前記第１の割振り要求がさらに第１の優先順位を含み、前記選択区分が、第２の優先順位を含む第２の割振り要求を送っており、前記選択することがさらに、
前記第１の優先順位が前記第２の優先順位よりも大きいと判定すること、および、
複数の区分のうちの他の区分に前記第２の優先順位で割り振られている前記リソースの割合と比較して、前記選択区分に、その割り振られているリソースの最大割合が前記第２の優先順位で割り振られていると判定することを含む、請求項２４に記載のコンピュータ。
【請求項２６】
前記選択することがさらに、
前記第２の優先順位を、前記複数のリソースの最低の優先順位として選択することを含む、請求項２５に記載のコンピュータ。
【請求項２７】
前記選択することがさらに、
前記選択区分に割り振られている前記リソースのうちで最低の下位優先順位の前記選択リソースを選択することを含む、請求項２６に記載のコンピュータ。
【請求項２８】
前記第１の割振り要求がさらに第１の優先順位を含み、前記選択区分が、第２の優先順位を含む第２の割振り要求を送っており、前記選択することがさらに、
前記第１の優先順位が、現在割り振られている前記複数のリソース全ての優先順位以下であると判定すること、および、
前記第１の要求元区分が有する、その上限に対する前記第１の優先順位の前記複数のリソースの数の割合が、前記選択区分が有する前記第２の優先順位についての割合未満であると判定することを含み、前記第１の優先順位と前記第２の優先順位とが同一である、請求項２４に記載のコンピュータ。
【請求項２９】
前記選択することがさらに、
前記選択区分に割り振られている前記リソースに割り当てられている最低の下位優先順位の前記選択リソースを選択することを含む、請求項２８に記載のコンピュータ。
【請求項３０】
前記第１の割振り要求がさらに第１の優先順位を含み、前記選択することがさらに、
前記第１の優先順位が、現在割り振られている前記複数のリソース全ての優先順位以下であると判定すること、
前記第１の要求元区分が有する、その上限に対する前記第１の優先順位で割り振られている前記複数のリソースの数の割合が、他の全ての区分が有する、それらの上限に対する前記第１の優先順位についての割合よりも大きいと判定すること、および、
前記第１の要求元区分にすでに割り振られている前記リソースと比較して、最低の下位優先順位を有する前記選択リソースを選択することを含む、請求項２４に記載のコンピュータ。
【請求項３１】
前記ロジックがさらに、ネットワークからパケットを受信し、前記パケット中のデータが前記タプルと一致する場合は、前記マッピングによって指定される前記第１のキューに前記パケットを記憶し、前記パケット中の前記データが前記タプルと一致しない場合は、前記パケットによって指定される論理ポートに関連するデフォルトのキューに前記パケットを記憶する、請求項２４ないし３０のいずれかに記載のコンピュータ。
【請求項３２】
前記命令がさらに、
前記第１の要求元区分から割振り解除要求を受け取ること、および、
複数の保存済み要求の中から第１の保存済み要求を選択することを含み、前記第１の保存済み要求が、前に第２の要求元区分から受け取られ、前記複数のリソース全てが割り振られていて差し替えることができなかったときに保存されたものであり、
前記ロジックがさらに、前記選択リソースを前記第２の要求元区分に割り振ることを含む、請求項２４ないし３１のいずれかに記載のコンピュータ。
【請求項３３】
前記第１の保存済み要求を選択することがさらに、
前記複数の保存済み要求のうちで最高の優先順位を選択すること、
前記最高の優先順位で割り振られている前記複数のリソースの割合がその上限に対して最も低い、第２の選択区分を選択すること、および、
最高の下位優先順位を有する、前記第２の選択区分によって送られた前記第１の保存済み要求を選択することを含む、請求項３２に記載のコンピュータ。
【請求項３４】
前記命令がさらに、
前記要求元区分が複数の優先順位で割り振ることが許される、前記複数のリソースの数の複数の上限を設定することを含む、請求項２４ないし３３のいずれかに記載のコンピュータ。
【請求項３５】
コンピュータ上で実行されるときに請求項１ないし１２のいずれかに記載の方法を実施するように適合されたプログラム・コード手段を含むコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の一実施形態は、一般に、論理的に区分化されたコンピュータ中の複数の区分の間でネットワーク・アダプタのリソースを割り振ることに関する。
【背景技術】
【０００２】
１９４８年のＥＤＶＡＣコンピュータ・システムの開発は、コンピュータ時代の始まりとしてしばしば引用される。この時以来、コンピュータ・システムは、著しく複雑なデバイスに発展した。コンピュータ・システムは通常、ハードウェア（例えば半導体、回路板など）とソフトウェア（例えばコンピュータ・プログラム）との組合せを含む。半導体加工およびコンピュータ・アーキテクチャにおける進歩がコンピュータ・ハードウェアの性能をより高く押し上げるのに伴い、ハードウェアのより高い性能を利用するためにより複雑なコンピュータ・ソフトウェアが発展し、その結果、ほんの数年前よりもはるかに強力な今日のコンピュータ・システムがもたらされた。コンピュータ技術における進歩の１つは、並列処理、すなわち複数のタスクを並行して実施することの開発である。
【０００３】
増大する並列処理を容易にするために、いくつかのコンピュータ・ソフトウェア技術およびハードウェア技術が開発されてきた。ハードウェアの観点からは、コンピュータは、ますます複数のマイクロプロセッサに依拠して、作業負荷容量の増大を提供する。ソフトウェアの観点からは、マルチスレッド化されたオペレーティング・システムおよびカーネルが開発されてきたが、これらは、複数のコンピュータ・プログラムが並行して複数のスレッド中で実行されるのを可能にし、したがって複数のタスクを本質的に同時に実施することができる。加えて、いくつかのコンピュータは、論理区分化の概念を実現する。論理区分化では、単一の物理コンピュータが本質的に、論理区分と呼ばれる複数の独立した仮想コンピュータのように動作することが可能にされ、物理コンピュータ中の様々なリソース（例えばプロセッサ、メモリ、アダプタ、および入出力デバイス）が、区分マネージャまたはハイパーバイザを介して様々な論理区分の間で割り振られる。各論理区分は、別々のオペレーティング・システムを実行し、また、ユーザおよび論理区分中で実行されるソフトウェア・アプリケーションから見れば、完全に独立したコンピュータとして動作する。
【０００４】
各論理区分は本質的に、コンピュータの限られたリソースを求めて他の論理区分と競合しているので、また各論理区分のニーズは時の経過に伴って変化することがあるので、論理的に区分化されたシステムにおける１つの難題は、コンピュータ・システムの限られたリソースを区分が共有するようにリソースを動的に区分に割り振ることである。複数の区分によってしばしば共有されるリソースの１つは、ネットワーク・アダプタである。ネットワーク・アダプタは、コンピュータ・システム（およびそれを共有する区分）をネットワークに接続し、それにより区分は、ネットワークにやはり接続された他のシステムと通信することができる。ネットワーク・アダプタは通常、１つまたは複数の物理ポートを介してネットワークに接続し、各ポートはネットワーク・アドレスを有する。ネットワーク・アダプタは、その物理ポートを介してデータ・パケットをネットワークに送信し、また、ネットワークからのデータ・パケットがその物理ポート・アドレスを指定する場合にはこれらのデータ・パケットを受信する。
【０００５】
しばしば多くの論理区分がアクティブなので、所与のネットワーク・アダプタ上で多くの異なるセッションもまた並行してアクティブである。パケットの必要とされるハイパーバイザ処理が削減され、パケットを待機している区分中のアプリケーションにパケットが直接にルーティングされるように、ネットワーク・アダプタがパケットの入来トラフィックをソートすることが望ましい。各区分は普通、少なくとも一時的にはネットワーク接続性を必要とするが、各区分は必ずしも物理ポートの完全な帯域幅を常時必要とはしないので、区分はしばしば物理ポートを共有する。この共有は、ネットワーク・アダプタが１つ（または複数）の物理ポートを複数の論理ポートに多重化することによって実施され、各論理ポートは単一の区分に割り振られる。したがって、各論理区分には、論理ネットワーク・アダプタおよび論理ポートが割り振られ、各論理区分は、その論理ネットワーク・アダプタおよび論理ポートを、ちょうど専用のスタンドアロン物理アダプタおよび物理ポートを使用するかのようにして使用する。
【０００６】
論理ポートを使用してパケットをそれらのターゲット区分にルーティングすることは、キュー・ペア（ＱＰ）を介して実施されることがある。各論理ポートには１つのキュー・ペア（送信キューと受信キュー）が与えられ、または割り当てられ、このキュー・ペアは、入来パケットのためのデフォルトのキュー・ペアとしての働きをする。ネットワーク・アダプタがネットワークからパケットを受信すると、アダプタは、ターゲット論理ポート・アドレスのルックアップを実施し、この論理ポート・アドレスに基づいて入来パケットを適切なキュー・ペアにルーティングする。
【０００７】
いくつかのネットワーク・アダプタはまた、「接続単位キューイング（ｐｅｒ  ｃｏｎｎｅｃｔｉｏｎ  ｑｕｅｕｉｎｇ）」と呼ばれる機構を提供して、パケットの復号およびソートを加速させる。ネットワーク・アダプタは追加のキュー・ペアを割り振り、これらのキュー・ペア上に、ネットワーク・アダプタは入来パケットを配置することができる。マッピング・テーブルがこのルーティングを容易にする。マッピング・テーブルには、「タプル」と、そのタプルに関連するパケットをどのキュー・ペアに送達すべきかの指示とが含まれる。タプルは、様々なネットワーク・アドレスおよび宛先アドレスの組合せであり、これはセッションを一意に識別する。タプルの使用により、ネットワーク・アダプタはパケットを種々のキュー・ペアに自動的にソートすることができ、これにより、次いで区分は、入来パケットをソートするための非常に長い前処理（非常に長いかもしれない）を最初に必要とすることなく、すぐに処理を開始することができる。問題は、ネットワーク・アダプタがマッピング・テーブル中の固定数のレコード（リソース）しかサポートせず、これらのリソースを論理区分の間で共有しなければならないことである。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
リソースを共有するための現在の技法の１つは、利用可能なリソースを区分に対して専用に固定割振りすることである。この技法は、リソースの多くがしばしば使用されないことになるという欠点を有する。これは例えば、所与の区分が現在アクティブ化されていないか、遊休状態であるか、または比較的ビジーでなく、それによりこの区分はその完全なリソース割振りを必要としないからである。しかし、他の区分はよりビジーである場合があり、これらの遊休リソースを他の区分に割り振ることができさえすれば、他の区分は遊休リソースを使用してその重要な作業を加速させることができるであろう。
【０００９】
第２の現在の技法は、区分によるリソース使用を監視し、区分のニーズが変化するのに伴ってリソースを再割当てすることを試みる。この技法はいくつかの欠点を有する。第１に、現在のリソース使用をリアルタイムで（または少なくとも適時に）監視することを必要とする。第２に、望まれる使用（例えば区分がその現在のリソース割振りよりも多くを望むかもしれない）を決定する必要もあり、これは各区分との継続的な通信を必要とする。第３に、リソース割振りの変更を行うことができる前にリソース要件が再び変化することになるような十分なレイテンシが存在する場合があるという点で、過渡的なリソース要件に伴う問題が発生することがある。第４に、種々の区分に割り当てられるリソースの相対的な価値を決定するのが難しい。最後に、異なる区分が異なる目標および異なる優先順位を有する場合があるので、どのようにリソースを最も効率的に割り振るかの決定は達成困難である。例えば、ある区分はレイテンシを低減することを望み、別の区分はスループットを増加させることを望むかもしれない。別の例として、ある区分はリソースを使用して価値のある作業を実施するかもしれないが、別の区分は価値の劣る作業を実施し、またはそのリソースを単にそれが利用可能だから使用し、このリソースは別の区分でよりよく使用されるかもしれない。
【課題を解決するための手段】
【００１０】
第１の態様によれば、タプルとキューの識別子とを含む第１の割振り要求を第１の要求元区分から受け取ること、選択区分に割り振られている選択リソースを複数のリソースの中から選択すること、および選択リソースを第１の要求元区分に割り振ることを含む方法が提供され、割り振ることはさらに、キューに対するタプルのマッピングを選択リソースに記憶することを含む。
【００１１】
第２の態様によれば、命令でエンコードされた記憶媒体が提供され、命令は、実行されたとき、タプルとキューの識別子とを含む第１の割振り要求を第１の要求元区分から受け取ること、複数のリソースの全てが割り振られていると判定すること、判定に応答して、選択区分に割り振られている選択リソースを複数のリソースの中から選択すること、および選択リソースを第１の要求元区分に割り振ることを含み、割り振ることはさらに、キューに対するタプルのマッピングを選択リソースに記憶することを含む。
【００１２】
第３の態様によれば、プロセッサと、プロセッサに通信可能に接続されたメモリとを備えるコンピュータが提供され、メモリは命令をエンコードし、命令は、プロセッサによって実行されたとき、タプルとキューの識別子とを含む第１の割振り要求を第１の要求元区分から受け取ること、複数のリソースの全てが割り振られていると判定すること、判定に応答して、選択区分に割り振られている選択リソースを複数のリソースの中から選択することを含み、コンピュータはさらに、プロセッサに通信可能に接続されたネットワーク・アダプタを備え、ネットワーク・アダプタは、ロジックおよび複数のリソースを備え、ロジックは、第１のキューに対するタプルのマッピングを選択リソースに記憶することによって選択リソースを第１の要求元区分に割り振る。
【００１３】
本発明は、コンピュータ・ソフトウェア中で実施することができる。
【発明の効果】
【００１４】
ネットワーク・アダプタの利用可能リソースを全ての区分にわたってより効率的に利用する向上した技法が、好ましくは提供される。
【００１５】
方法、装置、システム、および記憶媒体が提供される。一実施形態では、第１の割振り要求が、要求元区分から受け取られる。第１の割振り要求は、タプルと、キューの識別子と、第１の優先順位とを含む。第１の割振り要求を受け取るのに応答して、遊休状態のリソースがない場合は、選択された区分に第２の優先順位ですでに割り振られているリソースが選択される。選択されたリソースは、次いで要求元区分に割り振られる。この割振りは、キューに対するタプルのマッピングを、選択されたリソースに記憶することを含む。一実施形態では、リソースは、割振り要求の第１の優先順位が、選択された区分への割振りの第２の優先順位よりも大きいと判定すること、および、他の区分に第２の優先順位で割り振られているリソースの割合と比較して、選択された区分に、その割り振られているリソースの最大割合が第２の優先順位で割り振られていると判定することによって、選択され、第２の優先順位は、割り振られているリソースの最低優先順位である。別の実施形態では、リソースは、第１の優先順位が、現在割り振られている全てのリソースの優先順位以下であると判定すること、および、要求元区分が有する、その上限に対する第１の優先順位で割り振られているリソースの割合が、選択された区分の、その上限に対する第２の優先順位で割り振られているリソースの割合未満であると判定することによって、選択され、第２の優先順位は第１の優先順位と同一である。このようにして、一実施形態では、リソースはより効果的に区分に割り振られ、これによりパケット処理の性能が増大する。
【００１６】
次に、ほんの一例として、また以下の図面を参照しながら、本発明の好ましい実施形態について述べる。
【００１７】
ただし、本発明は他の等しく有効な実施形態も認めるので、添付の図面は、本発明の例示的な実施形態のみを示し、したがって本発明の範囲を限定するものとは見なされないことに留意されたい。
【図面の簡単な説明】
【００１８】
【図１】本発明の一実施形態を実施するための例示的なシステムの高レベルのブロック図である。
【図２】本発明の一実施形態による、例示的なネットワーク・アダプタのブロック図である。
【図３】本発明の一実施形態による、例示的な区分のブロック図である。
【図４】本発明の一実施形態による、構成要求に関する例示的なデータ構造のブロック図である。
【図５】本発明の一実施形態による、リソース限度に関する例示的なデータ構造のブロック図である。
【図６】本発明の一実施形態による、構成データに関する例示的なデータ構造のブロック図である。
【図７】本発明の一実施形態による、構成要求およびアクティブ化要求に関する例示的な処理のフローチャートである。
【図８】本発明の一実施形態による、割振り要求に関する例示的な処理のフローチャートである。
【図９】本発明の一実施形態による、割振り済みリソースを差し替えるべきかどうか判定するための例示的な処理のフローチャートである。
【図１０】本発明の一実施形態による、リソースの割振りを差し替えるための例示的な処理のフローチャートである。
【図１１】本発明の一実施形態による、リソースを割振り解除するための例示的な処理のフローチャートである。
【図１２】本発明の一実施形態による、パケットを受信するための例示的な処理のフローチャートである。
【図１３】本発明の一実施形態による、区分を非アクティブ化するための例示的な処理のフローチャートである。
【図１４】本発明の一実施形態による、保存済み割振り要求を扱うための例示的な処理のフローチャートである。
【発明を実施するための形態】
【００１９】
一実施形態では、ネットワーク・アダプタが、複数の論理ポートに多重化される物理ポートを有する。各論理ポートは、デフォルトのキューを有する。ネットワーク・アダプタはまた、任意の論理ポートに割り振ることのできる追加のキューを有する。ネットワーク・アダプタは、タプルとキューとの間の、リソースとも呼ばれるマッピングのテーブルを有する。タプルは、パケットのフィールド中のデータの組合せから導出される。ネットワーク・アダプタは、パケット中のタプルとテーブル中のリソースとに基づいて、パケットをデフォルトのキューが受け取るべきか別のキューが受け取るべきかを決定する。入来パケットから導出されたタプルがテーブル中のタプルと一致する場合は、ネットワーク・アダプタは、このタプルに対応する指定キューにパケットをルーティングする。そうでない場合は、ネットワーク・アダプタは、パケットによって指定される論理ポートのデフォルトのキューにパケットをルーティングする。区分は、割振り要求をハイパーバイザに送ることによって、キューおよびタプルに対するリソースの割振りを要求する。遊休状態のまたは割り振られていないリソースがない場合、すでに割り振られているリソースが選択されてその割振りが差し替えられ、それにより、選択されたリソースを要求元区分に割り振ることができる。このようにして、一実施形態では、リソースがより効果的に区分に割り振られ、これによりパケット処理の性能が増大する。
【００２０】
図面を参照するが、複数の図を通して、同じ番号は同じ部分を示す。図１に、本発明の一実施形態による、ネットワーク１３０を介してハードウェア管理コンソール・コンピュータ・システム１３２とクライアント・コンピュータ・システム１３５とに接続されたサーバ・コンピュータ・システム１００の高レベルのブロック図表現を示す。用語「クライアント」および「サーバ」は、本明細書では便宜的に使用するに過ぎず、様々な実施形態で、ある環境でクライアントとして動作するコンピュータ・システムが別の環境でサーバとして動作する場合もあり、その逆もある。一実施形態では、コンピュータ・システム１００、１３２、および１３５のハードウェア・コンポーネントは、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションから入手可能なＩＢＭ（Ｒ）Ｓｙｓｔｅｍ  ｉ５コンピュータ・システムによって実現することができる。（ＩＢＭは、米国および他国におけるインターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標である）。しかし、本発明の実施形態の機構および装置が任意の適切なコンピューティング・システムに等しく適用されることは、当業者なら理解するであろう。
【００２１】
コンピュータ・システム１００の主要なコンポーネントは、１つまたは複数のプロセッサ１０１、メイン・メモリ１０２、端末インタフェース１１１、記憶装置インタフェース１１２、Ｉ／Ｏ（入出力）デバイス・インタフェース１１３、およびネットワーク・アダプタ１１４を含み、これらは全て、メモリ・バス１０３、Ｉ／Ｏバス１０４、およびＩ／Ｏバス・インタフェース・ユニット１０５を介したコンポーネント間通信のために直接的または間接的に、通信可能に結合される。
【００２２】
コンピュータ・システム１００は、１つまたは複数の汎用のプログラム可能な中央処理装置（ＣＰＵ）１０１Ａ、１０１Ｂ、１０１Ｃ、および１０１Ｄを含み、本明細書ではこれらをプロセッサ１０１と総称する。一実施形態では、コンピュータ・システム１００は、比較的大型のシステムに特有である複数のプロセッサを含む。しかし別の実施形態では、コンピュータ・システム１００は別法として、単一ＣＰＵシステムであってもよい。各プロセッサ１０１は、メモリ１０２に記憶された命令を実行し、１つまたは複数のレベルのオンボード・キャッシュを備えることができる。
【００２３】
メイン・メモリ１０２は、データおよびプログラムを記憶またはエンコードするための、ランダムアクセス半導体メモリである。別の実施形態では、メイン・メモリ１０２は、コンピュータ・システム１００の仮想メモリ全体を表し、また、コンピュータ・システム１００に結合されたかまたはネットワーク１３０を介して接続された他のコンピュータ・システムの仮想メモリを含むこともできる。メイン・メモリ１０２は、概念的には単一のモノリシック・エンティティだが、他の実施形態では、メイン・メモリ１０２は、キャッシュおよび他のメモリ・デバイスの階層など、より複雑な構成である。例えば、メモリは複数レベルのキャッシュに存在する場合があり、これらのキャッシュはさらに機能によって分割される場合があり、したがって、あるキャッシュは命令を保持し、別のキャッシュは１つまたは複数のプロセッサによって使用される非命令データを保持する。メモリはさらに、様々ないわゆる不均等メモリ・アクセス（ＮＵＭＡ）コンピュータ・アーキテクチャのいずれかにおいて知られるように、分散して、異なるＣＰＵまたはＣＰＵセットに関連付けられる場合もある。
【００２４】
メイン・メモリ１０２は、区分１５０−１および１５０−２、ハイパーバイザ１５２、リソース限度１５４、ならびに構成データ１５６を記憶またはエンコードする。区分１５０−１および１５０−２、ハイパーバイザ１５２、リソース限度１５４、ならびに構成データ１５６はコンピュータ・システム１００中のメモリ１０２内に含まれるように示されているが、他の実施形態では、これらのいくつかまたは全ては、異なるコンピュータ・システム上にあってもよく、例えばネットワーク１３０を介して、リモートにアクセスすることができる。コンピュータ・システム１００は仮想アドレス指定機構を使用することができ、これにより、コンピュータ・システム１００のプログラムは、複数のより小さい記憶エンティティへのアクセスではなく、大きい単一の記憶エンティティへのアクセスのみを有するかのように挙動することができる。したがって、区分１５０−１および１５０−２、ハイパーバイザ１５２、リソース限度１５４、ならびに構成データ１５６はメイン・メモリ１０２内に含まれるように示されているが、これらの要素は必ずしも全てが同時に同じ記憶デバイスに完全に含まれるとは限らない。さらに、区分１５０−１および１５０−２、ハイパーバイザ１５２、リソース限度１５４、ならびに構成データ１５６は別々のエンティティとして示されているが、他の実施形態では、これらのいくつか、これらのいくつかの一部、またはこれら全てが共にパッケージされてもよい。
【００２５】
区分１５０−１および１５０−２については、図３を参照しながらさらに後述する。ハイパーバイザ１５２は、ハードウェア管理コンソール１３２からの要求に応答して、区分１５０−１および１５０−２をアクティブ化し、リソース限度１５４および構成データ１５６を使用して区分１５０−１および１５０−２にリソースを割り振る。リソース限度１５４については、図５を参照しながらさらに後述する。構成データ１５６については、図６を参照しながらさらに後述する。
【００２６】
一実施形態では、ハイパーバイザ１５２は、図７、８、９、１０、１１、１２、１３、および１４を参照しながらさらに後述する機能を実施するために、プロセッサ１０１上で実行できる命令、または、プロセッサ１０１上で実行される命令によって解釈できるステートメントを含む。別の実施形態では、ハイパーバイザ１５２は、プロセッサベースのシステムに代えてまたは追加で、論理ゲートおよび他のハードウェア・デバイスを介してハードウェア中で実現される。
【００２７】
メモリ・バス１０３は、プロセッサ１０１、メイン・メモリ１０２、およびＩ／Ｏバス・インタフェース・ユニット１０５の間でデータを転送するためのデータ通信経路を提供する。Ｉ／Ｏバス・インタフェース・ユニット１０５はさらに、様々なＩ／Ｏユニットとの間でデータを転送するために、システムＩ／Ｏバス１０４に結合される。Ｉ／Ｏバス・インタフェース・ユニット１０５は、システムＩ／Ｏバス１０４を介して、Ｉ／Ｏプロセッサ（ＩＯＰ）またはＩ／Ｏアダプタ（ＩＯＡ）とも呼ばれる複数のＩ／Ｏインタフェース・ユニット１１１、１１２、１１３、および１１４と通信する。システムＩ／Ｏバス１０４は、例えば、業界標準ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｆａｃｅ）バスまたはいずれか他の適切なバス技術とすることができる。
【００２８】
Ｉ／Ｏインタフェース・ユニットは、様々な記憶デバイスおよびＩ／Ｏデバイスとの通信をサポートする。例えば、端末インタフェース・ユニット１１１は、１つまたは複数のユーザ端末１２１の取付けをサポートし、ユーザ端末１２１は、ユーザ出力デバイス（ビデオ表示デバイス、スピーカ、またはテレビジョン・セット、あるいはこれら全てなど）およびユーザ入力デバイス（キーボード、マウス、キーパッド、タッチパッド、トラックボール、ボタン、ライトペン、または他のポインティング・デバイスなど）を備えることができる。
【００２９】
記憶装置インタフェース・ユニット１１２は、１つまたは複数の直接アクセス記憶デバイス（ＤＡＳＤ）１２５、１２６、および１２７（これらは通常は回転磁気ディスク・ドライブ記憶デバイスだが、別法として、ホストからは単一の大きい記憶デバイスに見えるように構成されたディスク・ドライブのアレイを含めた、他のデバイスとしてもよい）の取付けをサポートする。メイン・メモリ１０２の内容は、必要に応じて、直接アクセス記憶デバイス１２５、１２６、および１２７に記憶し、これらから取り出すことができる。
【００３０】
Ｉ／Ｏデバイス・インタフェース１１３は、プリンタやファクス機など、様々な他の入出力デバイスおよび他のタイプのデバイスのいずれかへのインタフェースを提供する。ネットワーク・アダプタ１１４は、コンピュータ・システム１００から、他のディジタル・デバイスならびにコンピュータ・システム１３２および１３５への、１つまたは複数の通信経路を提供する。このような経路は、例えば１つまたは複数のネットワーク１３０を含むことができる。
【００３１】
図１では、メモリ・バス１０３は、プロセッサ１０１、メイン・メモリ１０２、およびＩ／Ｏバス・インタフェース１０５の間の直接通信経路を提供する比較的単純な単一のバス構造として示されているが、実際には、メモリ・バス１０３は複数の異なるバスまたは通信経路を含んでもよく、これらは、階層構成、スター構成、またはウェブ構成のポイントツー・ポイント・リンク、複数の階層バス、並列および冗長経路、あるいはいずれか他の適切なタイプの構成など、様々な形のいずれかで構成することができる。さらに、Ｉ／Ｏバス・インタフェース１０５およびＩ／Ｏバス１０４は単一のそれぞれのユニットとして示されているが、コンピュータ・システム１００は、実際には複数のＩ／Ｏバス・インタフェース・ユニット１０５または複数のＩ／Ｏバス１０４あるいはその両方を含んでもよい。様々なＩ／Ｏデバイスに延びる様々な通信経路からシステムＩ／Ｏバス１０４を分離する複数のＩ／Ｏインタフェース・ユニットが示されているが、他の実施形態では、Ｉ／Ｏデバイスのいくつかまたは全てが、１つまたは複数のシステムＩ／Ｏバスに直接に接続される。
【００３２】
様々な実施形態で、コンピュータ・システム１００は、マルチユーザ「メインフレーム」コンピュータ・システム、単一ユーザ・システム、あるいは、直接ユーザ・インタフェースをほとんどまたは全く有さないが他のコンピュータ・システム（クライアント）から要求を受け取るサーバまたは類似デバイスとすることができる。他の実施形態では、コンピュータ・システム１００は、パーソナル・コンピュータ、ポータブル・コンピュータ、ラップトップまたはノートブック・コンピュータ、ＰＤＡ（パーソナル・ディジタル・アシスタント）、タブレット・コンピュータ、ポケット・コンピュータ、電話機、ページャ、自動車、遠隔会議システム、アプライアンス、またはいずれか他の適切なタイプの電子デバイスとして実現することができる。
【００３３】
ネットワーク１３０は、任意の適切なネットワーク、またはネットワークの組合せとすることができ、コンピュータ・システム１００、ハードウェア管理コンソール１３２、およびクライアント・コンピュータ・システム１３５との間のデータまたはコードあるいはその両方の通信に適した任意の適切なプロトコルをサポートすることができる。様々な実施形態で、ネットワーク１３０は、コンピュータ・システム１００に直接的または間接的に接続された記憶デバイス、または記憶デバイスの組合せを表すことができる。一実施形態では、ネットワーク１３０はＩｎｆｉｎｉｂａｎｄ（Ｒ）アーキテクチャをサポートすることができる。別の実施形態では、ネットワーク１３０はワイヤレス通信をサポートすることができる。別の実施形態では、ネットワーク１３０は、電話回線やケーブルなどのハードワイヤード通信をサポートすることができる。別の実施形態では、ネットワーク１３０はイーサネット（Ｒ）ＩＥＥＥ（電気電子学会）８０２．３仕様をサポートすることができる。別の実施形態では、ネットワーク１３０はインターネットとすることができ、ＩＰ（インターネット・プロトコル）をサポートすることができる。
【００３４】
別の実施形態では、ネットワーク１３０は、ローカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）とすることができる。別の実施形態では、ネットワーク１３０はホットスポット・サービス・プロバイダ・ネットワークとすることができる。別の実施形態では、ネットワーク１３０はイントラネットとすることができる。別の実施形態では、ネットワーク１３０はＧＰＲＳ（汎用パケット無線サービス）ネットワークとすることができる。別の実施形態では、ネットワーク１３０はＦＲＳ（ファミリ無線サービス）ネットワークとすることができる。別の実施形態では、ネットワーク１３０は、任意の適切なセルラー・データ・ネットワークまたはセルベース無線ネットワーク技術とすることができる。別の実施形態では、ネットワーク１３０はＩＥＥＥ８０２．１１Ｂワイヤレス・ネットワークとすることができる。さらに別の実施形態では、ネットワーク１３０は、任意の適切なネットワーク、またはネットワークの組合せとすることができる。１つのネットワーク１３０が示されているが、他の実施形態では、任意の数の（同じまたは異なるタイプの）ネットワークがあってもよい。クライアント・コンピュータ・システム１３５は、サーバ・コンピュータ・システム１００に備わるものとして先に上述したハードウェア・コンポーネントのいくつかまたは全てを備えることができる。クライアント・コンピュータ・システム１３５は、ネットワーク１３０およびネットワーク・アダプタ１１４を介して区分１５０−１および１５０−２にデータ・パケットを送信する。様々な実施形態で、データ・パケットは、ビデオ、オーディオ、テキスト、グラフィックス、画像、フレーム、ページ、コード、プログラム、またはいずれか他の適切なデータを含むことができる。
【００３５】
ハードウェア管理コンソール１３２は、サーバ・コンピュータ・システム１００に備わるものとして先に上述したハードウェア・コンポーネントのいくつかまたは全てを備えることができる。特に、ハードウェア管理コンソール１３２は、Ｉ／Ｏデバイス１９２とプロセッサ１９４とに接続されたメモリ１９０を備える。メモリ１９０は、構成マネージャ１９８および構成要求１９９を含む。別の実施形態では、構成マネージャ１９８および構成要求１９９は、サーバ・コンピュータ・システム１００のメモリ１０２に記憶されてもよく、構成マネージャ１９８はプロセッサ１０１上で実行されてもよい。構成マネージャ１９８は、構成要求１９９をサーバ・コンピュータ・システム１００に送る。構成要求１９９については図４を参照しながらさらに後述する。
【００３６】
一実施形態では、構成マネージャ１９８は、図７および１３を参照しながらさらに後述する機能を実施するために、プロセッサ１９４上で実行できる命令、または、プロセッサ１９４上で実行される命令によって解釈できるステートメントを含む。別の実施形態では、構成マネージャ１９８は、プロセッサベースのシステムに代えてまたは追加で、論理ゲートおよび他のハードウェア・デバイスを介してハードウェア中で実現される。
【００３７】
図１はサーバ・コンピュータ・システム１００、ネットワーク１３０、ハードウェア管理コンソール１３２、およびクライアント・コンピュータ・システム１３５の代表的な主要コンポーネントを高レベルで示すものとすること、また個々のコンポーネントは図１に表すよりも複雑な場合があること、また図１に示すコンポーネントに対して他のまたは追加のコンポーネントが存在する場合があること、またこのようなコンポーネントの数、タイプ、および構成は変動する場合があることを理解されたい。本明細書では、このような追加の複雑さまたは追加の変形のいくつかの特定の例を開示するが、これらは例に過ぎず、必ずしも唯一のそうした変形ではないことを理解されたい。
【００３８】
図１に示され本発明の様々な実施形態を実施する様々なソフトウェア・コンポーネントは、様々なコンピュータ・ソフトウェア・アプリケーション、ルーチン、コンポーネント、プログラム、オブジェクト、モジュール、データ構造などの使用を含めたいくつかの方式で実現することができ、以下では「コンピュータ・プログラム」または単に「プログラム」と呼ぶ。コンピュータ・プログラムは通常は１つまたは複数の命令を含み、この命令は、様々な時点でサーバ・コンピュータ・システム１００中またはハードウェア管理コンソール１３２中あるいはその両方の様々なメモリおよび記憶デバイスにあり、この命令はまた、サーバ・コンピュータ・システム１００中またはハードウェア管理コンソール１３２中あるいはその両方の１つまたは複数のプロセッサによって読み取られ実行されたとき、サーバ・コンピュータ・システム１００またはハードウェア管理コンソール１３２あるいはその両方に、本発明の一実施形態の様々な態様を構成するステップまたは要素を実行するのに必要なステップを実施させる。
【００３９】
さらに、本発明の実施形態を、完全に機能するコンピュータ・システムのコンテキストで述べてきたが、また以下でもそのようなコンテキストで述べるが、本発明の様々な実施形態は、様々な形のプログラム製品として配布することができ、本発明は、実際に配布を行うのに使用される信号担持媒体の特定のタイプにかかわらず等しく適用される。この実施形態の機能を定義するプログラムは、プロセッサ１０１および１９４などの１つまたは複数のプロセッサに動作可能または通信可能に（直接的または間接的に）接続できる様々な有形の信号担持媒体を介して、サーバ・コンピュータ・システム１００またはハードウェア管理コンソール１３２あるいはその両方に送達することができる。信号担持媒体は、限定しないが以下のものを含むことができる。
（１）ＣＤ−ＲＯＭドライブによって読取り可能なＣＤ−ＲＯＭなど、書換え不可能な記憶媒体、例えばコンピュータ・システムに外付けまたは内蔵される読取り専用メモリ・デバイスに、永続的に記憶される情報。
（２）書換え可能な記憶媒体、例えばハード・ディスク・ドライブ（例えばＤＡＳＤ１２５、１２６、または１２７）、メイン・メモリ１０２または１９０、ＣＤ−ＲＷ、またはディスケットに記憶される可変情報。あるいは、
（３）コンピュータや電話ネットワーク、例えばネットワーク１３０を介してなど、通信媒体によって、サーバ・コンピュータ・システム１００ないしはハードウェア管理コンソール１３２またはその両方に搬送される情報。
【００４０】
このような有形の信号担持媒体が、本発明の機能を指示するコンピュータ可読かつ実行可能な命令でエンコードされたとき、またはこれらの命令を搬送するとき、このような有形の信号担持媒体は本発明の実施形態を表す。
【００４１】
本発明の実施形態はまた、クライアント企業、非営利団体、政府エンティティ、内部組織構造などとのサービス契約の一部として送達することもできる。これらの実施形態の態様は、本明細書に述べる方法のいくつかまたは全てを実施するようにコンピュータ・システムを構成し、本明細書に述べる方法のいくつかまたは全てを実現するコンピューティング・サービス（例えばコンピュータ可読コード、ハードウェア、およびウェブ・サービス）を展開することを含むことができる。これらの実施形態の態様はまた、クライアント会社を分析し、分析に応答して推奨を生み出し、推奨の各部分を実施するためのコンピュータ可読コードを生成し、コンピュータ可読コードを既存のプロセス、コンピュータ・システム、およびコンピューティング・インフラストラクチャに統合し、本明細書に述べる方法およびシステムの使用を計測し、ユーザに費用を割り振り、ユーザによるこれらの方法およびシステムの使用に対してユーザに課金することを含むこともできる。
【００４２】
加えて、以下に述べる様々なプログラムは、それらが本発明の特定の実施形態で実施される場合の適用例に基づいて識別することができる。しかし、後続のどんな特定のプログラム用語も、便宜的に使用するに過ぎず、したがって本発明の実施形態は、そのような用語によって識別または含意あるいはその両方がなされるいずれか特定の適用例のみにおける使用に限定すべきではない。
【００４３】
図１に示した例示的な環境は、本発明を限定するものとはしない。実際、本発明の範囲を逸脱することなく、他の代替ハードウェア環境またはソフトウェア環境あるいはその両方を使用することができる。
【００４４】
図２に、本発明の一実施形態による、例示的なネットワーク・アダプタ１１４のブロック図を示す。ネットワーク・アダプタ１１４は、キュー・ペア２１０−１、２１０−２、２１０−１０、２１０−１１、２１０−１２、２１０−１３、２１０−１４、および２１０−１５を備える（これらに接続される）。ネットワーク・アダプタ１１４はさらに、論理ポート２０５−１、２０５−２、および２０５−１０を備える（これらに接続される）。ネットワーク・アダプタ１１４はさらに、リソース・データ２１５、ロジック２２０、および物理ポート２２５を備える（これらに接続される）。ロジック２２０は、物理ポート２２５、リソース・データ２１５、論理ポート２０５−１、２０５−２、および２０５−１０、ならびにキュー・ペア２１０−１、２１０−２、２１０−１０、２１０−１１、２１０−１２、２１０−１３、２１０−１４、および２１０−１５に接続される。
【００４５】
様々な実施形態で、キュー・ペア２１０−１、２１０−２、２１０−１０、２１０−１１、２１０−１２、２１０−１３、２１０−１４、および２１０−１５、論理ポート２０５−１、２０５−２、および２０５−１０、ならびにリソース・データ２１５は、メモリ位置またはレジスタあるいはその両方を介して実現することができる。ロジック２２０は、論理ゲート、モジュール、回路、チップ、または他のハードウェア・コンポーネントによって実現できるハードウェアを含む。他の実施形態では、ロジック２２０は、メモリに記憶されプロセッサ上で実行されるマイクロコード、命令、またはステートメントによって実現することができる。
【００４６】
物理ポート２２５は、ネットワーク・アダプタ１１４と、ネットワーク１３０の一部を形成する他のコンピュータまたはデバイスとの間の物理インタフェースを提供する。物理ポート２２５は、プラグまたはケーブルが接続する、アウトレットまたは他の機器である。電子的には、アウトレットを構成するいくつかの導体が、ネットワーク・アダプタ１１４とネットワーク１３０のデバイスとの間の信号転送を提供する。様々な実施形態で、物理ポート２２５は、オス・ポート（突出したピンを有する）またはメス・ポート（ケーブルの突出したピンを受けるように設計されたレセプタクルを有する）によって実現することができる。様々な実施形態で、物理ポート２２５は、円形、長方形、正方形、台形、またはいずれか他の適切な形状など、様々な形状を有することができる。様々な実施形態で、物理ポート２２５は、シリアル・ポートまたはパラレル・ポートとすることができる。シリアル・ポートは、単一のワイヤ対（例えば接地および＋／−）を介して一度に１ビットずつ送受信する。パラレル・ポートは、いくつかの組のワイヤを介して同時に複数のビットを送受信する。
【００４７】
物理ポート２２５がネットワーク１３０に接続された後、ネットワーク・アダプタ１１４は通常、「ハンドシェーキング」を必要とするが、これは、２つのファクス機が接続を行うときに発生する交渉に類似する概念であり、転送タイプ、転送レート、および他の必要情報が、データ送信前でも共有される。一実施形態では、物理ポート２２５はホットプラグ可能である。すなわち、ネットワーク・アダプタ１１４がすでに電源投入されている（電力を受け取っている）間に、物理ポート２２５をネットワーク１３０にプラグインまたは接続することができる。一実施形態では、物理ポート２２５はプラグアンドプレイ機能を提供する。すなわち、ネットワーク・アダプタ１１４のロジック２２０は、ホットプラギングが行われるとすぐにネットワーク・アダプタ１１４と被接続デバイスとが自動的にハンドシェーキングを開始するように、設計される。一実施形態では、特別なソフトウェア（ドライバと呼ばれる）をネットワーク・アダプタ１１４にロードして、いくつかのデバイスに対して通信を可能に（信号を訂正）しなければならない。
【００４８】
物理ポート２２５は、関連する物理ネットワーク・アドレスを有する。物理ポート２２５は、物理ポート２２５の物理ネットワーク・アドレスを含むパケットをネットワーク１３０から受信する。次いでロジック２２０は、パケット中で指定されている論理ネットワーク・アドレスを有する論理ポートにパケットを送出またはルーティングする。したがって、ロジック２２０は、単一の物理ポート２２５を多重化して複数の論理ポート２０５−１、２０５−２、および２０５−１０を生み出す。一実施形態では、論理ポート２０５−１、２０５−２、および２０５−１０は論理イーサネット（Ｒ）ポートであり、それぞれは異なるイーサネット（Ｒ）ＭＡＣ（媒体アクセス制御）アドレスを有する。各区分（オペレーティング・システムまたはアプリケーション）は、その特定の論理ポートの唯一の持主であり、その特定の論理ポートへの排他的アクセスを有する。次いで区分（オペレーティング・システム・インスタンスまたはアプリケーション）は、その区分が所有する論理ポートに関連するキュー・ペアからパケットを取り出す。区分がパケットを取り出すキュー・ペアは、論理ポートに関連するデフォルトのキュー・ペア（２０１−１、２０１−２、または２１０−１０）、あるいは、ロジック２２０がリソース・データ２１５を介して一時的に論理ポートに割り当てる別のキュー・ペア（２０１−１１、２１０−１２、２１０−１３、２１０−１４、または２１０−１５）とすることができる。
【００４９】
キュー・ペア２１０−１、２１０−２、２１０−１０、２１０−１１、２１０−１２、２１０−１３、２１０−１４、および２１０−１５は、通信リンクの論理的なエンドポイントである。キュー・ペアは、通信がアプリケーションおよびデバイス間の直接的なメモリ間転送を介して達成される、メモリベースの抽象化である。キュー・ペアは、作業要求（ＷＲ）の送信キューおよび受信キューを含む。別の実施形態では、キュー・ペア構成は必要でなく、送信キューと受信キューを別々にパッケージすることができる。各作業要求は、ネットワーク・アダプタ１１４とネットワーク１３０との間でデータを送受信するための登録済みバッファへのポインタを含めた、メッセージ・トランザクションに必要なデータを含む。
【００５０】
一実施形態では、キュー・ペアのモデルは、２種類のメッセージ・トランザクション、すなわち送受信およびリモートＤＭＡ（直接メモリ・アクセス）を有する。転送を行うには、区分１５０−１または１５０−２中のアプリケーションまたはオペレーティング・システムが、作業要求を構築し、区分および論理ポートに割り振られたキュー・ペアにこれを供給する。この供給方法は、作業要求を適切なキュー・ペアに追加し、ネットワーク・アダプタ１１４中のロジック２２０に保留動作を通知する。送受信パラダイムでは、ターゲット区分は、入来データが配置されることになるメモリ領域を識別する受信作業要求を事前供給する。ソース区分は、送信するデータを識別する送信作業要求を供給する。ソース区分上での各送信動作は、ターゲット区分上での受信作業要求を消費する。この方式では、区分中の各アプリケーションまたはオペレーティング・システムは、それ自体のバッファ空間を管理し、メッセージ・トランザクションのどちらの端も、ピアの登録済みバッファに関する明示的な情報を有さない。対照的に、リモートＤＭＡメッセージは、ソース・バッファとターゲット・バッファの両方を識別する。ターゲット区分を巻き込むことなく、リモート・アドレス空間に対して直接にデータの書込みおよび読取りができる。
【００５１】
リソース・データ２１５は、例示的なレコード２３０、２３２、２３４、２３６、および２３７を含む。一実施形態では、リソース・データ２１５は、固定サイズ、および最大レコード数を有し、それにより、リソース・データ２１５の検索は、ネットワーク１３０からの入来パケット・ストリームに遅れずついていくのに十分なほど素早く完了することができる。リソース・データ２１５中のエントリまたはレコード（例えばレコード２３０、２３２、２３４、２３６、および２３７）は、論理区分１５０−１および１５０−２の間で割り振られるリソースである。各レコード２３０、２３２、２３４、２３６、および２３７は、リソース識別子フィールド２３８、関連するタプル・フィールド２４０、および関連する宛先キュー・ペア識別子フィールド２４２を含む。リソース識別子フィールド２３８は、レコードまたはリソースを識別する。タプル・フィールド２４０は、何らかのパケット（複数可）のプロパティであるデータを含み、様々な実施形態で、何らかの受信済みのまたは受信が予期されるパケット（複数可）のフィールドからの、あるいはこれらのパケット（複数可）のフィールドの組合せからのデータを含むことができる。様々な実施形態で、タプル２４０は、パケット（複数可）を送信したソース・コンピュータ・システム１３５のネットワーク（例えばＩＰすなわちインターネット・プロトコル・アドレス）、パケット（複数可）の宛先のネットワーク・アドレス（例えばＩＰすなわちインターネット・プロトコル・アドレス）（例えば物理ポート２２５のネットワーク・アドレス）、ＴＣＰ／ＵＤＰ（伝送制御プロトコル／ユーザ・データグラム・プロトコル）ソース・ポート、ＴＣＰ／ＵＤＰ宛先ポート、パケット（複数可）の送信に使用された送信プロトコル、あるいは、パケット（複数可）の宛先である論理ポート２０５−１、２０５−２、または２０５−１０を識別する論理ポート識別子を含むことができる。
【００５２】
宛先キュー・ペア識別子フィールド２４２は、タプル２４０によって識別されるパケットを受け取ることになるキュー・ペアを識別する。したがって、リソース・データ２１５中の各レコード（リソース）は、タプル・フィールド２４０中のデータと、宛先キュー・ペア・フィールド２４２中のデータとの間のマッピングまたは関連付けを表す。受信パケットから導出されたタプルが、リソース・データ２１５中のレコード（リソース）中のタプル２４０と一致する場合は、ロジック２２０はこのパケットを、このレコード（リソース）中のこのタプル２４０に関連する対応する指定宛先キュー・ペア２４２にルーティング、送出、または記憶する。例えば、受信パケットから導出されたタプルが「タプルＢ」である場合は、ロジック２２０は、レコード２３２のタプル・フィールド２４０中で「タプルＢ」が指定され、レコード２３２中の対応する宛先キュー・ペア識別子フィールド２４２中で「キュー・ペアＥ」が指定されていると決定し、したがってロジック２２０は、受信パケットをキュー・ペアＥ２１０−１２にルーティング、送出、または記憶する。
【００５３】
入来パケットから導出されたタプルが、リソース・データ２１５中のどのレコード（リソース）中のどのタプル２４０とも一致しない場合は、ロジック２２０は、このパケットを、パケット中で指定されている論理ポートに関連する（または割り当てられた）デフォルトのキュー・ペアにルーティング、送出、または記憶する。例えば、キュー・ペア２１０−１は論理ポート２０５−１に割り当てられたデフォルトのキュー・ペアであり、キュー・ペア２１０−２は論理ポート２０５−２に割り当てられたデフォルトのキュー・ペアであり、キュー・ペア２１０−１０は論理ポート２０５−１０に割り当てられたデフォルトのキュー・ペアである。したがって例えば、受信パケットから導出されたタプルが「タプルＦ」である場合は、ロジック２２０は、「タプルＦ」がリソース・データ２１５中のどのレコード（リソース）のタプル・フィールド２４０中でも指定されていないと決定し、したがってロジック２２０は、受信パケットによって指定される論理ポートに割り当てられたデフォルトのキュー・ペアであるキュー・ペア２１０−１、２１０−２、または２１０−１０に、受信パケットをルーティング、送出、または記憶する。
【００５４】
図３に、本発明の一実施形態による、例示的な区分１５０のブロック図を示す。例示的な区分１５０は、区分１５０−１および１５０−２を一般に表す。区分１５０は、オペレーティング・システム３０５、割振り要求３１０、およびアプリケーション３１５を含む。
【００５５】
オペレーティング・システム３０５は、プロセッサ１０１上で実行できる命令、または、プロセッサ１０１上で実行される命令によって解釈できるステートメントを含む。オペレーティング・システム３０５は、区分化されないコンピュータのオペレーティング・システムとほぼ同様にして、区分１５０の主要動作を制御する。オペレーティング・システム３０５は、端末１２１のキーボードからの入力を認識したり、端末１２１の表示画面に出力を送ったりするなど、区分１５０に関する基本的なタスクを実施する。オペレーティング・システム３０５はさらに、ファイルまたはデータ・オブジェクトの開閉、記憶デバイス１２５、１２６、および１２７に対するデータの読み書き、ディスク・ドライブやプリンタなどの周辺デバイスの制御を行うことができる。
【００５６】
オペレーティング・システム３０５はさらに、マルチユーザ、複数プロセッシング、マルチタスキング、およびマルチスレッディング動作をサポートすることができる。マルチユーザ動作では、オペレーティング・システム３０５は、異なる端末１２１における２人以上のユーザが同時に（並行して）アプリケーション３１５を実行できるようにする。マルチプロセッシング動作では、オペレーティング・システム３０５は、複数のプロセッサ１０１上でアプリケーション３１５を実行するのをサポートすることができる。マルチタスキング動作では、オペレーティング・システム３０５は、複数のアプリケーション３１５を並行して実行するのをサポートすることができる。マルチスレッディング動作では、オペレーティング・システム３０５は、単一のアプリケーション３１５の異なる部分または異なるインスタンスが並行して稼動するのをサポートすることができる。一実施形態では、オペレーティング・システム３０５は、カーネルの最上部にある、インターナショナル・ビジネス・マシーンズ・コーポレーションから入手可能なｉ５／ＯＳ（Ｒ）オペレーティング・システムを使用して実現することができる。様々な実施形態で、異なる区分のオペレーティング・システムは同じであってもよく、あるいはこれらのいくつかまたは全てが異なってもよい。（ｉ５／ＯＳは、米国または他国あるいはその両方におけるインターナショナル・ビジネス・マシーンズ・コーポレーションの商標または登録商標である。）
【００５７】
アプリケーション３１５は、ユーザ・アプリケーション、サード・パーティ・アプリケーション、またはＯＥＭ（相手先商標製造会社）アプリケーションとすることができる。様々な実施形態で、アプリケーション３１５は、プロセッサ１０１上で実行できる命令、または、プロセッサ１０１上で実行される命令によって解釈できるステートメントを含む。
【００５８】
割振り要求３１０は、タプル・フィールド３２０、キュー・ペア識別子フィールド３２２、優先順位フィールド３２４、下位優先順位フィールド３２６、および要求元区分識別子フィールド３２８を含む。タプル・フィールド３２０は、パケットまたは１組のパケットを識別するが、要求元区分１５０は、これらのパケットの処理性能の増大を望み、ハイパーバイザ１５２に対して、これらのパケット（複数可）の処理のためにネットワーク・アダプタ１１４中のリソースを要求元区分１５０に割り振ることによって処理性能を増大させるよう要求する。キュー・ペア識別子フィールド３２２は、割振り要求３１０を送る区分１５０に割り振られているキュー・ペアを識別する。
【００５９】
優先順位フィールド３２４は、この区分または他の区分が送る場合のある他の割振り要求と比較した、割振り要求３１０の相対的な優先順位を識別する。優先順位フィールド３２４が高優先順位リソースを指定する場合は、ハイパーバイザ１５２は、たとえ別の区分（その割振りの優先順位がより低いもの）からリソースを差し替えるか割振り解除するか取り去らなければならないとしても、この区分にリソースを割り振らなければならない。下位優先順位フィールド３２６は、この区分が送る場合のある同じ優先順位３２４を有する他の割振り要求と比較した、割振り要求３１０の相対的な下位優先順位を識別する。下位優先順位フィールド３２６の内容を用いて区分内のリソース割振りが決定され、これにより区分１５０は、同じ区分１５０内で同じ優先レベル３２４を有するそれ自体の割振り要求の間で優先順位を付けることができる。各区分は、どんな基準を使用してこの下位優先順位３２６を設定するかを独立して決定する。要求元区分識別子フィールド３２８は、割振り要求３１０を送るこの区分１５０を識別する。
【００６０】
区分１５０のオペレーティング・システム３０５またはアプリケーション３１５は、よりよい性能を提供するために、タプル３２０によって識別されるパケットがそれらの処理の速度増加を必要とすると決定するのに応答して、割振り要求３１０をハイパーバイザ１５２に送る。
【００６１】
図４に、本発明の一実施形態による、構成要求１９９に関する例示的なデータ構造のブロック図を示す。構成マネージャ１９８は、ハイパーバイザ１５２が割振り要求３１０に応答して区分１５０に割り振るリソースの数を制御または制限するために、構成要求１９９をハイパーバイザ１５２に送る。
【００６２】
構成要求１９９は、区分識別子フィールド４０２、高優先順位リソースの上限フィールド４０４、中優先順位リソースの上限フィールド４０６、および低優先順位リソースの上限フィールド４０８を含む。区分識別子フィールド４０２は、構成要求１９９の限度４０４、４０６、および４０８が適用されるまたは対象とする区分１５０を識別する。
【００６３】
高優先順位リソースの上限フィールド４０４は、ハイパーバイザ１５２が区分識別子フィールド４０２によって識別される区分１５０に割り振るのを構成マネージャ１９８が許可する、高い相対的優先順位（最高優先順位）を有するリソースの上限または最大数を指定する。高優先順位リソースは、高い優先順位３２４を指定する割振り要求３１０を送ることによって区分が高優先順位リソースの割振りを要求した場合に、区分に割り振られなければならないリソースである。図４に示す例示的なデータでは、構成要求１９９は、上限４０４によって指定されるように、区分識別子４０２によって識別される区分が最大で１つの高優先順位リソースを割り振ることしか許可されないことを指定する。
【００６４】
中優先順位リソースの上限フィールド４０６は、ハイパーバイザ１５２が区分識別子フィールド４０２によって識別される区分１５０に割り振るのを構成マネージャ１９８が許可する、中程度の相対的優先順位を有するリソースの上限または最大数を指定する。中優先順位は、高優先順位よりも低い、または重要でない。図４に示す例示的なデータでは、構成要求１９９は、上限４０６によって指定されるように、区分識別子４０２によって識別される区分が最大で５つの中優先順位リソースを割り振ることしか許可されないことを指定する。
【００６５】
低優先順位リソースの上限フィールド４０８は、ハイパーバイザ１５２が区分識別子フィールド４０２によって識別される区分１５０に割り振るのを構成マネージャ１９８が許可する、低い相対的優先順位を有するリソースの上限または最大数を指定する。低優先順位は、最低優先順位であって中優先順位よりも低いが、他の実施形態では、任意の適切な定義および相対的優先順位を伴う任意の数の優先順位を使用することができる。図４に示す例示的なデータでは、構成要求１９９は、上限４０８によって指定されるように、区分識別子４０２によって識別される区分が最大で８つの低優先順位リソースを割り振ることしか許可されないことを指定する。
【００６６】
図５に、本発明の一実施形態による、リソース限度１５４に関する例示的なデータ構造のブロック図を示す。ハイパーバイザ１５２は、図７を参照してさらに後述するように、ハイパーバイザ１５２が構成マネージャ１９８から受け取る構成要求１９９（様々な区分に関する）が基準を満たす場合に、構成要求１９９からリソース限度１５４にデータを追加する。
【００６７】
リソース限度１５４は、例示的なレコード５０５および５１０を含み、各レコードは、区分識別子フィールド５１５、関連する高優先順位リソース数の上限フィールド５２０、関連する中優先順位リソース数の上限フィールド５２５、および関連する低優先順位リソース数の上限フィールド５３０を含む。
【００６８】
区分識別子フィールド５１５は、それぞれのレコードに関連する区分１５０を識別する。
【００６９】
関連する高優先順位リソース数の上限フィールド５２０は、ハイパーバイザ１５２が区分識別子フィールド５１５によって識別される区分１５０に割り振るのを構成マネージャ１９８が許可する、高い相対的優先順位を有するリソースの上限または最大数を指定する。
【００７０】
関連する中優先順位リソース数の上限フィールド５２５は、ハイパーバイザ１５２が区分識別子フィールド５１５によって識別される区分１５０に割り振るのを構成マネージャ１９８が許可する、中程度の相対的優先順位を有するリソースの上限または最大数を指定する。
【００７１】
関連する低優先順位リソース数の上限フィールド５３０は、ハイパーバイザ１５２が区分識別子フィールド５１５によって識別される区分１５０に割り振るのを構成マネージャ１９８が許可する、低い相対的優先順位を有するリソースの上限または最大数を指定する。
【００７２】
図６に、本発明の一実施形態による、構成データ１５６に関する例示的なデータ構造のブロック図を示す。構成データ１５６は、割振り済みリソース６０２および保存済み割振り要求６０４を含む。割振り済みリソース６０２は、ネットワーク・アダプタ１１４中の、区分１５０に割り振られたリソースまたは遊休状態のリソースを表す。割振り済みリソース６０２は、例示的なレコード６０６、６０８、６１０、６１２、６１４、６１６、６１８、および６２０を含み、各レコードは、リソース識別子フィールド６３０、区分識別子フィールド６３２、優先順位フィールド６３４、および下位優先順位フィールド６３６を含む。
【００７３】
リソース識別子フィールド６３０は、ネットワーク・アダプタ１１４中のリソースを識別する。区分識別子フィールド６３２は、リソース識別子フィールド６３０によって識別されるリソースが割振り要求３１０に応答して割り振られている区分１５０を識別する。すなわち、区分識別子フィールド６３２によって識別される区分１５０は、リソース識別子６３０によって識別されるリソースを所有しておりその排他的使用を有し、他の区分はこのリソースを使用することもこのリソースにアクセスすることも許されない。優先順位フィールド６３４は、同じまたは異なる区分に対する他のリソースの他の全ての割振りと比較した、要求元区分６３２に対するリソース６３０の割振りの相対的な優先順位または重要性を識別する。優先順位フィールド６３４は、リソース６３０の割振りを要求した割振り要求３１０の優先順位３２４から設定される。下位優先順位フィールド６３６は、同じ区分６３２に対する他のリソースの他の全ての割振りと比較した、要求元区分６３２に対するリソース６３０の割振りの相対的な優先順位または重要性を示す。下位優先順位フィールド６３６の内容は、その割振りを要求した割振り要求３１０の下位優先順位３２６から設定される。下位優先順位フィールド６３６の内容を用いて単一の区分６３２内のリソース割振りが決定され、これにより区分６３２は、この同じ区分６３２内の同じ優先レベル６３４の要求の間で優先順位を付けることができる。各区分は、どんな基準を使用してこの下位優先順位６３６を設定するかを独立して決定する。
【００７４】
保存済み割振り要求６０４は、例示的なレコード６５０および６５２を含み、各レコードは、タプル・フィールド６６０、キュー・ペア識別子６６２、優先順位フィールド６６４、下位優先順位フィールド６６６、および要求元区分識別子フィールド６６８を含む。各レコード６５０および６５２は、ハイパーバイザ１５２が一時的に満たせなかった割振り要求を表し、あるいは、別のより高い優先順位の割振り要求で差し替えられた割振りを表す。したがって、保存済み割振り要求６０４は、現在満たされていない割振りに対する要求を表す。
【００７５】
タプル・フィールド６６０は、パケットまたは１組のパケットを識別するが、要求元区分６６８は、これらのパケットの処理性能の増大を望み、ハイパーバイザ１５２に対して、パケットの処理のためにネットワーク・アダプタ１１４中のリソースを区分６６８に割り振ることによって処理性能を増大させるよう要求する。キュー・ペア識別子フィールド６６２は、割振り要求３１０を送る区分６６８に割り振られるよう要求されるキュー・ペアを識別する。
【００７６】
優先順位フィールド６６４は、この区分または他の区分が送る場合のある他の割振り要求と比較した、このレコードの割振り要求の相対的な優先順位を識別する。下位優先順位フィールド６６６は、この要求元区分６６８が送る場合のある他の割振り要求と比較した、割振り要求の相対的な下位優先順位を識別する。下位優先順位フィールド６６６の内容を用いて区分内のリソース割振りが決定され、これにより区分は、この同じ区分内の同じ優先レベル６６４の要求の間で優先順位を付けることができる。各区分は、どんな基準を使用してこの下位優先順位６６６を設定するかを独立して決定する。要求元区分識別子フィールド６６８は、割振り要求を送った区分１５０を識別する。
【００７７】
図７に、本発明の一実施形態による、構成要求およびアクティブ化要求に関する例示的な処理のフローチャートを示す。制御はブロック７００で開始する。次いで制御はブロック７０５に進み、構成マネージャ１９８が構成要求１９９をコンピュータ・システム１００に送り、ハイパーバイザ１５２が構成要求１９９を受け取る。構成マネージャ１９８は、Ｉ／Ｏデバイス１９２を介したユーザ・インタフェース選択に応答して、またはプログラム的な基準に基づいて、構成要求１９９を送ることができる。構成要求１９９を受け取るのに応答して、ハイパーバイザ１５２は、構成データ１５６の割振り済みリソース６０２からレコード６０６、６０８、６１０、６１２、６１４、６１６、６１８、および６２０を読み取る。
【００７８】
一実施形態では、ハイパーバイザ１５２は、区分識別子フィールド４０２によって識別される区分１５０が非アクティブである間に構成要求１９９を受け取る。区分がアクティブである間にハイパーバイザ１５２が構成要求１９９を受け取った場合、ハイパーバイザ１５２は、構成要求１９９を拒否するか、あるいは、次に区分が非アクティブであるときまで構成要求１９９の変更をリソース限度１５４に適用しない。しかし別の実施形態では、ハイパーバイザ１５２は、構成要求１９９を受け取り、いつでも動的に適用することができる。
【００７９】
次いで制御はブロック７１０に進み、構成マネージャ１９８は、コンピュータ・システム１００のハイパーバイザ１５２にアクティブ化要求を送る。構成マネージャ１９８は、Ｉ／Ｏデバイス１９２を介したユーザ・インタフェース選択に応答して、またはプログラム的な基準が満たされたことに応答して、アクティブ化要求を送ることができる。アクティブ化要求は、アクティブ化すべき区分を指定する。ハイパーバイザ１５２は、構成マネージャ１９８からアクティブ化要求を受け取り、それに応答して、アクティブ化要求によって指定された区分１５０をアクティブ化する。区分をアクティブ化することは、指定された区分１５０にメモリおよび１つまたは複数のプロセッサを割り振ること、プロセッサ１０１の少なくとも１つで実行されるオペレーティング・システム３０５を開始すること、キュー・ペアを区分１５０に割り振ること、ならびに任意選択で、プロセッサ１０１の少なくとも１つで実行される区分１５０の１つまたは複数のアプリケーション３１５を開始することを含む。ハイパーバイザ１５２は区分に、その割り振られたキュー・ペアの識別子を通知する。
【００８０】
次いで制御はブロック７１５に進み、（構成要求１９９を受け取るのに応答して、またはアクティブ化要求を受け取るのに応答して、あるいはその両方で）ハイパーバイザ１５２は、構成要求１９９中の高優先順位リソースの上限４０４と、全ての区分に関するリソース限度１５４中の高優先順位リソースの上限５２０全ての合計とを足した数が、リソース・データ２１５中のリソースの総数（レコードの総数または最大数）以下かどうか判定する。リソース・データ２１５中のレコードの総数または最大数は、ネットワーク・アダプタ１１４中の割振り可能リソースの総数または最大数を表す。
【００８１】
ブロック７１５の判定が真である場合は、構成要求１９９中の高優先順位リソースの上限４０４と、全ての区分に関するリソース限度１５４中の高優先順位リソースの上限５２０全ての合計とを足した数は、リソース・データ２１５中のリソースの総数（ネットワーク・アダプタ１１４中の割振り可能リソースの総数）以下であり、したがって制御はブロック７２０に進み、ハイパーバイザ１５２は、構成要求１９９からのデータでリソース限度１５４にレコードを追加する。すなわち、ハイパーバイザ１５２は、構成要求１９９からの区分識別子４０２をリソース限度１５４中の新しいレコード中の区分識別子５１５にコピーし、構成要求１９９からの高優先順位リソースの上限４０４をリソース限度１５４中の新しいレコード中の高優先順位リソースの上限５２０にコピーし、構成要求１９９からの中優先順位リソースの上限４０６をリソース限度１５４中の新しいレコード中の中優先順位リソースの上限５２５にコピーし、構成要求１９９からの低優先順位リソースの上限４０８をリソース限度１５４中の新しいレコード中の低優先順位リソースの上限５３０にコピーする。
【００８２】
次いで制御はブロック７９９に進み、図７の論理は戻る。
【００８３】
ブロック７１５の判定が偽である場合は、高優先順位リソースの上限４０４と高優先順位リソースの上限５２０全ての合計とを足した数は、リソース・データ２１５中のリソースの総数（レコードの数）よりも大きく、したがって制御はブロック７３０に進み、ハイパーバイザ１５２は、高優先順位の構成要求を満たすのに十分なリソースをネットワーク・アダプタ１１４が有さないので、構成マネージャ１９８にエラーを返す。ブロック７３０のエラー通知は、構成データ１５６の設定の失敗ではなく、区分アクティブ化の失敗を示す。言い換えれば、リソース限度１５４は、現在アクティブであり稼動している全ての区分を反映し、区分は、その構成要求１９９が残りの利用可能リソース限度内に収まる場合にのみ、開始することが許される（アクティブ化される）。次いで制御はブロック７９９に進み、図７の論理は戻る。
【００８４】
図８に、本発明の一実施形態による、割振り要求に関する例示的な処理のフローチャートを示す。制御はブロック８００で開始する。次いで制御はブロック８０５に進み、要求元区分１５０（要求元区分１５０内のオペレーティング・システム３０５またはアプリケーション３１５）が、割振り要求３１０を構築してハイパーバイザ１５２に送る。要求元区分１５０は、パケットまたは１組のパケットに関する処理が性能の加速化または増大を必要とすることを決定するのに応答して、割振り要求３１０を構築して送る。割振り要求３１０は、区分に割り振られたキュー・ペア３２２（前にブロック７１０でハイパーバイザ１５２によって割り振られたもの）と、区分が加速化を望むパケットを識別するタプル３２０と、区分が割振りを望むリソースの優先順位３２４と、この区分１５０に割り振られている他のリソースと比較した、区分１５０が割り当てるリソースの下位優先順位３２６と、要求元区分１５０の区分識別子３２８とを識別する。ハイパーバイザ１５２は、要求元区分識別子フィールド３２８によって識別される要求元区分１５０から、割振り要求３１０を受け取る。
【００８５】
次いで制御はブロック８１０に進み、ハイパーバイザ１５２は、割振り要求３１０を受け取るのに応答して、要求された優先順位３２４の、（割振り要求３１０を送った区分３２８に）すでに割り振られているリソースの数が、区分３２８に対する優先順位３２４の上限（優先順位３２４に対応する５２０、５２５、または５３０）と等しいかどうか判定する。ハイパーバイザ１５２は、区分識別子３２８と一致する区分識別子６３２と、優先順位３２４と一致する優先順位６３４とを有する、割振り済みリソース６０２中の全てのレコードをカウントする（その数を決定する）ことによって、ブロック８１０の判定を行う。次いでハイパーバイザ１５２は、区分識別子３２８と一致する区分識別子５１５を有する、リソース限度１５４中のレコードを見つける。
【００８６】
次いでハイパーバイザ１５２は、優先順位３２４に関連する、リソース限度１５４の見つかったレコード中のフィールド（５２０、５２５、または５３０）を選択する。例えば、優先順位３２４が高の場合は、ハイパーバイザ１５２は、見つかったレコード中の高優先順位の上限フィールド５２０を選択する。優先順位３２４が中の場合は、ハイパーバイザ１５２は、見つかったレコード中の中優先順位リソースの上限フィールド５２５を選択する。優先順位３２４が低の場合は、ハイパーバイザ１５２は、見つかったレコード中の低優先順位リソースの上限フィールド５３０を選択する。次いでハイパーバイザ１５２は、リソース限度１５４中の見つかったレコード中の選択されたフィールド（５２０、５２５、または５３０）中の値を、割振り済みリソース６０２中のレコードの数のカウントと比較する。これらが同じの場合は、ブロック８１０の判定は真である。そうでない場合は、判定は偽である。
【００８７】
ブロック８１０の判定が真である場合は、要求された優先順位３２４の（割振り要求３１０を送った区分３２８に）すでに割り振られているリソースの数は、区分３２８に対する優先順位３２４の上限（５２０、５２５、または５３０）に等しく、したがって制御はブロック８１５に進み、ハイパーバイザ１５２は、割振り要求３１０を送った区分にエラーを返す。というのは、この区分にはすでにこの優先レベル３２４でその限度のリソースが割り振られているからである。次いで制御はブロック８９９に進み、図８の論理は戻る。
【００８８】
ブロック８１０の判定が偽である場合は、要求された優先順位３２４の（割振り要求３１０を送った区分３２８に）すでに割り振られているリソースの数は、区分３２８に対する優先順位３２４の上限（優先順位３２４に応じて５２０、５２５、または５３０）に等しくなく、このため、要求元区分１５０による追加リソースの割振りを求める要求がハイパーバイザ１５２によって考慮されることになり、したがって制御はブロック８２０に進み、ハイパーバイザ１５２は、割振り済みリソース６０２中に遊休リソース（まだどの区分にも割り振られていないリソース）が存在するかどうか判定する。ハイパーバイザ１５２は、どの区分にも割り振られていないレコードを割振り済みリソース６０２中で検索することによって、例えば、それぞれのリソース６３０がどの区分にも割り振られていないことまたは遊休状態であることを示す区分識別子６３２を有するレコードを検索することによって、ブロック８２０の判定を行う。図６の例では、レコード６１６、６１８、および６２０は、それぞれのリソース６３０「リソースＦ」、「リソースＧ」、および「リソースＨ」が遊休状態であること、すなわちどの区分にも割り振られていないことを示す。
【００８９】
ブロック８２０の判定が真である場合は、遊休リソースがネットワーク・アダプタ１１４中に存在し、したがって制御はブロック８２５に進み、ハイパーバイザ１５２は、割振り要求３１０中で受け取ったタプル３２０およびキュー・ペア３２２の識別子と、見つかった遊休リソース６３０の識別子とを、ネットワーク・アダプタ１１４に送る。ネットワーク・アダプタ１１４のロジック２２０は、タプル３２０およびキュー・ペア識別子３２２を受け取り、これらをリソース・データ２１５中のレコード中のタプル２４０および宛先キュー・ペア識別子２４２にそれぞれ記憶する。ネットワーク・アダプタ１１４のロジック２２０はさらに、見つかった遊休リソース６３０の識別子と一致するリソース識別子をこのレコードのために作成し、リソース識別子２３８をレコード中に記憶する。リソース識別子２３８、タプル２４０、およびキュー・ペア識別子２４２をリソース・データ２１５中のレコード中に記憶することにより、ネットワーク・アダプタ１１４は、レコードによって表されるリソースを、キュー・ペア識別子２４２によって識別されるキュー・ペアを所有する区分（要求元区分）に割り振る。このように、キュー・ペアに対するタプルのマッピングが、選択されたリソースに記憶される。ハイパーバイザ１５２は、リソースがもはや遊休状態ではなく今や要求元区分に割り振られていることを示すように、割振り済みリソース６０２中の区分識別子フィールド６３２を設定する。次いで制御はブロック８９９に進み、図８の論理は戻る。
【００９０】
ブロック８２０の判定が偽である場合は、遊休リソースがネットワーク・アダプタ１１４中に存在せず、ネットワーク・アダプタ１１４中の全てのリソースは現在、区分に割り振られている。したがって制御はブロック８３０に進み、ハイパーバイザ１５２は、図９を参照しながらさらに後述するように、割振り（この区分または別の区分への）を差し替える（変更する）ことのできる選択されたリソースが存在するかどうか判定する。
【００９１】
ブロック８３０の判定が真である場合は、割振りを差し替えることのできる選択されたリソースが存在し、したがって制御はブロック８３５に進み、ハイパーバイザ１５２は、図１０を参照しながらさらに後述するように、選択されたリソースの割振りを差し替え、選択されたリソースを要求元区分に割り振る。次いで制御はブロック８９９に進み、図８の論理は戻る。
【００９２】
ブロック８３０の判定が偽である場合は、割振りを差し替えることのできる選択されたリソースが存在せず、したがって制御はブロック８４０に進み、ハイパーバイザ１５２は、要求元区分にどんなリソースも割り振ることなく、要求３１０を保存済みリソース６０４に保存し、要求元区分識別子３２８によって識別される区分１５０に一時的失敗を返す。次いで制御はブロック８９９に進み、図８の論理は戻る。
【００９３】
図９に、本発明の一実施形態による、割振り済みリソースを差し替えるべきかどうか判定するための例示的な処理のフローチャートを示す。制御はブロック９００で開始する。次いで制御はブロック９０５に進み、ハイパーバイザ１５２は、割振り要求３１０の優先順位３２４が、別の区分（要求元区分３２８とは別の区分）に割り振られているリソースの優先順位６３４（このリソースを前に割り振らせた要求の優先順位）よりも大きい（より重要）かどうか判定する。ブロック９０５の判定が真である場合は、現在の割振り要求の優先順位３２４は、リソースを別の区分に割り振らせた前の割振り要求の優先順位６３４よりも大きく（より高く、またはより重要であり）（区分識別子６３２が要求元区分識別子３２８と異なる割振り済みリソース６０２中のレコードによって示されるように）、したがって制御はブロック９１０に進み、ハイパーバイザ１５２は、割振り済みリソース６０２内の全てのレコード中の全ての優先順位のうちで最低の優先レベル６３４を選択する。図６の例を使用すると、割振り済みリソース６０２中で最低の優先順位は、レコード６１２および６１４に示されるように中優先レベルであり、これはレコード６０６、６０８、および６１０の高優先レベルよりも低い。
【００９４】
次いで制御はブロック９１５に進み、ハイパーバイザ１５２は、選択された優先レベルでその割振り済みリソース６３０の最大割合を受け取る区分６３２を選択する。図６の例示的なデータを使用すると、区分Ｂは、中優先レベルで１つの割振り済みリソースを有し（レコード６１４に示されるように）、高優先レベルで１つの割振り済みリソースを有する（レコード６１０に示されるように）ので、中優先レベルでその割振り済みリソースの５０％を受け取る。対照的に、区分Ａは、中優先レベルで１つの割振り済みリソースを有し（レコード６１２に示されるように）、高優先レベルで２つの割振り済みリソースを有する（レコード６０６および６０８に示されるように）ので、その総割振り済みリソース（全ての優先レベルにわたる）の３３％を中優先レベルで受け取る。したがって、５０％は３３％よりも大きいので、区分Ｂが、その総割振り済みリソースの最大割合を中優先レベルで受け取る。
【００９５】
再び図９を参照すると、次いで制御はブロック９２０に進み、ハイパーバイザ１５２は、選択された区分に割り振られている他のリソースと比較して最低の下位優先順位６３６を有する、選択された区分６３２に割り振られているリソース６３０を選択する。次いで制御はブロック９９９に進み、図９の論理は真を返し、選択されたリソースを図９の論理の呼出し元に返す。
【００９６】
ブロック９０５の判定が偽である場合は、割振り要求３１０の優先順位３２４は、別の区分に割り振られているリソースの優先順位６３４よりも大きくなく（より高くなく、またはより重要でなく）（区分識別子６３２が要求元区分識別子３２８と異なる割振り済みリソース６０２中のレコードによって示されるように）、割振り要求の優先順位は現在割り振られている全てのリソースの優先順位以下である。したがって、次いで制御はブロック９２５に進み、ハイパーバイザ１５２は、優先順位６３４と３２４とが同一か等しいか同じである場合に、要求元区分３２８が有する、その上限（５２５または５３０）に対する優先順位３２４の割振り済みリソースの割合が、選択された区分に割り振られている、上限（５２５または５３０）に対する優先順位６３４のリソースの割合よりも小さいかどうか判定する。
【００９７】
ブロック９２５の判定が真である場合は、要求元区分３２８が有する、その上限（５２５または５３０）に対する優先順位３２４の割振り済みリソースの割合は、選択された区分に割り振られている、上限（５２５または５３０）に対する同じ優先順位６３４（優先順位３２４と同じ優先順位）のリソースの割合よりも小さい。したがって制御はブロック９３０に進み、ハイパーバイザ１５２は、選択された区分に最低の下位優先順位６３６で割り振られているリソースを選択する。次いで制御はブロック９９９に進み、図９の論理は真を返し、選択されたリソースを図９の論理の呼出し元に返す。
【００９８】
ブロック９２５の判定が偽である場合は、要求元区分３２８が有する、その上限（５２５または５３０）に対する優先順位３２４の割振り済みリソースの割合は、他の全ての区分に割り振られている、上限（５２５または５３０）に対する同じ優先順位６３４（優先順位３２４と同じ優先順位）のリソースの割合以上である。したがって制御はブロック９３５に進み、ハイパーバイザ１５２は、割振り要求３１０の下位優先順位３２６よりも低い下位優先順位６３６を有する割振り済みリソース６０２中のリソースが、要求元区分３２８に前に割り振られているかどうか判定する。
【００９９】
ブロック９３５の判定が真である場合は、要求元区分３２８には、割振り要求３１０の下位優先順位３２６よりも低い下位優先順位６３６を有する割振り済みリソース６０２中のリソースが前に割り振られており、したがって制御はブロック９４０に進み、ハイパーバイザ１５２は、要求を送った要求元区分３２８にすでに割り振られている（前の割振り要求を介して前に割り振られた）最低の下位優先順位６３６のリソースを選択する。次いで制御はブロック９９９に進み、図９の論理は真を返し、選択されたリソースを図９の論理の呼出し元に返す。この呼出し元は図８の論理である。
【０１００】
ブロック９３５の判定が偽である場合は、要求元区分３２８には、割振り要求３１０の下位優先順位３２６よりも低い下位優先順位６３６を有する割振り済みリソース６０２中のリソースが前に割り振られておらず、したがって制御はブロック９９８に進み、図９の論理は、偽（前に割り振られたリソースを差し替えるのが許されないことを示す）を図９の呼出し元に返す。この呼出し元は図８の論理である。
【０１０１】
図１０に、本発明の一実施形態による、リソースの割振りを差し替えるための例示的な処理のフローチャートを示す。一実施形態では、前に割り振られたリソースの差替えは、リソース・データ２１５中のレコード（リソース）が提供するマッピングを、第１のタプルおよび第１の宛先キュー・ペアの第１のマッピング（第１の関連付け）から、第２のタプルおよび第２の宛先キュー・ペアの第２のマッピング（第２の関連付け）に変更することを含む。様々な実施形態で、第１の宛先キュー・ペアおよび第２の宛先キュー・ペアは、同じまたは異なるキュー・ペアとすることができる。
【０１０２】
制御はブロック１０００で開始する。次いで制御はブロック１００５に進み、ハイパーバイザ１５２は、削除要求をネットワーク・アダプタ１１４に送る。削除要求は、差し替えられるリソースである選択されたリソースのリソース識別子を含む。選択されたリソースは、図８のブロック８３０および図９の論理に関して上述したように選択されたものである。
【０１０３】
次いで制御はブロック１０１０に進み、ネットワーク・アダプタ１１４は、削除要求をハイパーバイザ１５２から受け取り、リソース・データ２１５から、受け取ったリソース識別子によって識別されるレコード（そのリソース識別子２３８が削除要求のリソース識別子と一致するもの）を削除する（または、タプル２４０および宛先キュー・ペア識別子２４２中のデータをレコードから削除する）。次いで制御はブロック１０１５に進み、ハイパーバイザ１５２は、割振り済みリソース６０２から、差し替えられるリソースのレコード（そのリソース識別子６３０が削除要求のリソース識別子と一致するレコード）を保存済み要求６０４に移動し、これにより、選択されたリソースは割振り解除される。
【０１０４】
次いで制御はブロック１０２０に進み、ハイパーバイザ１５２は、差し替えられるリソースのリソース識別子と、割振り要求３１０中で指定されるタプル３２０と、割振り要求３１０中で指定される宛先キュー・ペア識別子３２２とを含む追加要求を、ネットワーク・アダプタ１１４に送る。次いで制御はブロック１０２５に進み、ネットワーク・アダプタ１１４は、追加要求を受け取り、新しいレコードをリソース・データ２１５に追加または記憶する。この新しいレコードは、差し替えられるリソースのリソース識別子をリソース識別子２３８に記憶し、割振り要求３１０中で指定されるタプル３２０をタプル２４０に記憶し、割振り要求３１０中で指定される宛先キュー・ペア識別子３２２を宛先キュー・ペア識別子２４２に記憶する。これは、リソース識別子２３８によって識別されるリソース（レコード）を、宛先キュー・ペア識別子２４２によって識別される宛先キュー・ペアを所有する要求元区分に割り振る働きをする。このように、キュー・ペアに対するタプルのマッピングが、選択されたリソースに記憶される。次いで制御はブロック１０９９に進み、図１０の論理は戻る。
【０１０５】
図１１に、本発明の一実施形態による、リソースを割振り解除するための例示的な処理のフローチャートを示す。制御はブロック１１００で開始する。次いで制御はブロック１１０５に進み、区分１５０は、リソース（前にこの区分に割り振られるよう要求されたもの）を使用してパケットの性能を加速させる必要がもはやないため、このリソースを解放または割振り解除するようハイパーバイザ１５２に要求する。要求は、リソースのリソース識別子、タプル、または要求元区分の識別子、あるいはこれら全てを含む。次いで制御はブロック１１０７に進み、ハイパーバイザ１５２は、リソース解放要求によって指定されるリソースが割振り済みリソース６０２中で指定されているかどうか判定する。
【０１０６】
ブロック１１０７の判定が真である場合は、リソース解放要求によって指定されるリソースは割振り済みリソース６０２中にあり、すなわちリソースは割り振られており、したがって制御はブロック１１１０に進み、ハイパーバイザ１５２は、割振り解除要求の要求リソース識別子と一致するリソース識別子６３０を有するレコードを割振り済みリソース６０２から除去するか、あるいは、リソース識別子６３０によって識別されるリソースが空き状態、遊休状態、割振り解除済み、または現在どの区分にも割り振られていない状態であることを示すように、レコード中の区分識別子６３２を設定する。次いで制御はブロック１１１５に進み、ハイパーバイザ１５２は、削除要求をネットワーク・アダプタ１１４に送る。削除要求は、割振り解除要求中で指定されたリソース識別子を指定する。次いで制御はブロック１１２０に進み、ネットワーク・アダプタ１１４は、削除要求を受け取り、削除要求によって指定されるリソース識別子と一致するリソース識別子２３８を含むレコードをリソース・データ２１５から削除する。リソースは今や割振り解除されている。
【０１０７】
次いで制御はブロック１１２５に進み、ハイパーバイザ１５２は、保存済み割振り要求６０４が少なくとも１つの保存済み要求を含むかどうか判定する。ブロック１１２５の判定が真である場合は、保存済み割振り要求６０４は、リソースの割振りを望む保存済み要求を含み、したがって制御はブロック１１３０に進み、ハイパーバイザ１５２は、図１４を参照しながらさらに後述するように、保存済み要求を見つけてそれに対するリソースを割り振る。次いで制御はブロック１１９９に進み、図１１の論理は戻る。
【０１０８】
ブロック１１２５の判定が偽である場合は、保存済み割振り要求６０４は保存済み要求を含まず、したがって制御はブロック１１９９に進み、図１１の論理は戻る。
【０１０９】
ブロック１１０７の判定が偽である場合は、リソース解放（割振り解除）要求によって指定されるリソースは割振り済みリソース６０２中になく、したがって制御はブロック１１３５に進み、ハイパーバイザ１５２は、割振り解除要求によって指定されるタプルおよび要求元区分識別子と一致するタプル６６０および区分識別子６６８を有するレコードを、保存済み要求６０４中で見つけ、見つかったレコードを保存済み要求６０４から除去する。次いで制御はブロック１１９９に進み、図１１の論理は戻る。
【０１１０】
図１２に、本発明の一実施形態による、パケットをネットワークから受信するための例示的な処理のフローチャートを示す。制御はブロック１２００で開始する。次いで制御はブロック１２０５に進み、ネットワーク・アダプタ１１４中の物理ポート２２５が、ネットワーク１３０からデータ・パケットを受信する。受信データ・パケットは、物理ポート２２５のネットワーク・アドレスと一致する物理ポート・アドレスを含む。
【０１１１】
次いで制御はブロック１２１０に進み、ネットワーク・アダプタ１１４中のロジック２２２が、受信パケットからタプルを読み取るか、または受信パケット中のデータの組合せからタプルを作成する。次いで制御はブロック１２１５に進み、ロジック２２０は、パケット中のタプルまたはパケットから作成されたタプルと一致するタプル２４０をリソース・データ２１５中で検索する。次いで制御はブロック１２２０に進み、ロジック２２０は、パケット中のタプルまたはパケットから作成されたタプルと一致するリソース・データ２１５中のタプル２４０が見つかったかどうか判定する。
【０１１２】
ブロック１２２０の判定が真である場合は、ロジック２２０は、パケット中のタプルと一致するタプル２４０を有するレコード（リソース）をリソース・データ２１５中で見つけており、すなわちパケットのタプルに対してリソースが割り振られており、したがって制御はブロック１２２５に進み、ロジック２２０は、見つかったタプル２４０に関連するリソース・データ・レコードから宛先キュー・ペア識別子２４２を読み取る。次いで制御はブロック１２３０に進み、ロジック２２０は、見つかったレコード（リソース）中の宛先キュー・ペア識別子２４２によって識別されるキュー・ペアにパケットを送る（キュー・ペアにパケットを記憶する）。
【０１１３】
次いで制御はブロック１２３５に進み、リソースが割り振られた区分６３２（受け取ったタプル２４０に対するリソース識別子２３８と一致するリソース識別子６３０を有する割振り済みリソース６０２のレコード中の区分６３２）は、宛先キュー・ペア識別子２４２によって識別されるキュー・ペアからパケットを取り出す。次いで制御はブロック１２３６に進み、区分識別子６３２によって識別される区分１５０中のオペレーティング・システム３０５（または他のコード）は、宛先キュー・ペア識別子２４２によって識別されるキュー・ペアが割り振られたターゲット・アプリケーション３１５、またはターゲット・アプリケーション３１５のセッション、あるいはその両方に、パケットをルーティングする。次いで制御はブロック１２９９に進み、図１２の論理は戻る。
【０１１４】
ブロック１２２０の判定が偽である場合は、ロジック２２０は、受信パケット中の（または受信パケットから作成された）タプルと一致するタプル２４０をリソース・データ２１５中で見つけておらず、よって受信パケットのタプルにはリソースが割り振られておらず、したがって制御はブロック１２４０に進み、ロジック２２０は、受信パケットによって指定される論理ポートに関連するまたは割り当てられているデフォルトのキュー・ペアに、受信パケットを送る（記憶する）。
【０１１５】
次いで制御はブロック１２４５に進み、ハイパーバイザ１５２は、パケットのターゲット宛先である区分を決定し、区分に通知する。通知に応答して、区分（オペレーティング・システム３０５）は、デフォルトのキューからパケットを取り出す。次いで制御はブロック１２５０に進み、区分識別子６３２によって識別される区分１５０中のオペレーティング・システム３０５（または他のコード）は、パケットを読み取り、パケット中のデータからターゲット・アプリケーション３１５、またはターゲット・アプリケーション３１５のセッション、あるいはその両方を決定し、決定されたターゲット・アプリケーションにパケットをルーティングする。一実施形態では、オペレーティング・システム３０５は、ターゲット・アプリケーションを決定するために、パケットのＴＣＰ／ＩＰスタックを読み取る。次いで制御はブロック１２９９に進み、図１２の論理は戻る。
【０１１６】
一実施形態では、ブロック１２５０の処理は、受信パケット中のデータに問い合わせることによってターゲット・アプリケーションまたはセッションあるいはその両方を決定する必要があるため、ブロック１２３６の処理よりも遅い。したがって、本発明の一実施形態（ブロック１２２５、１２３０、１２３５、および１２３６の処理によって示す）は、宛先キュー・ペア識別子２４２に対するタプル２４０のマッピングにリソースを選択的に割り振ることを利用することによって、よりよい性能を提供する。
【０１１７】
図１３は、本発明の一実施形態による、区分を非アクティブ化するための例示的な処理のフローチャートを示す。制御はブロック１３００で開始する。次いで制御はブロック１３０５に進み、ハイパーバイザ１５２は、非アクティブ化要求を構成マネージャ１９８から受け取り、それに応答して区分１５０を非アクティブ化する。ハイパーバイザ１５２は、例えば、プロセッサ１０１上でのオペレーティング・システム３０５およびアプリケーション３１５の実行を停止して、区分１５０に割り振られたリソースを割振り解除することによって、区分１５０を非アクティブ化することができる。
【０１１８】
制御はブロック１３０７に進み、ハイパーバイザ１５２は、割振り済みリソース６０２中で非アクティブ化された区分に割り振られている全てのリソースを、リソースが遊休状態、空き状態、または割振り解除済みであることを示すように変更する。これは例えば、非アクティブ化された区分を指定したレコードの区分識別子フィールド６３２を、対応するリソース・フィールド６３０によって識別されるリソースが遊休状態であることまたは現在どの区分にも割り振られていないことを示すように変更することによって行う。次いで制御はブロック１３１０に進み、ハイパーバイザ１５２は、非アクティブ化された区分に関する全てのリソース要求を保存済み要求６０４から除去する。例えば、ハイパーバイザ１５２は、保存済み割振り６０４中で、非アクティブ化された区分を要求元区分識別子フィールド６６８中で指定する全てのレコードを見つけ、見つかったレコードを保存済み割振り要求６０４から除去する。
【０１１９】
次いで制御はブロック１３１５に進み、ハイパーバイザ１５２は、非アクティブ化された区分に関する全ての限度をリソース限度１５４から除去する。例えば、ハイパーバイザ１５２は、リソース限度１５４中で、非アクティブ化された区分を区分識別子フィールド５１５中で指定する全てのレコードを見つけ、見つかったこれらのレコードをリソース限度１５４から除去する。
【０１２０】
次いで制御はブロック１３１７に進み、ハイパーバイザ１５２は、非アクティブ化された区分に割り振られている全てのリソースを指定する削除要求を、ネットワーク・アダプタ１１４に送る。次いで制御はブロック１３２０に進み、ネットワーク・アダプタ１１４は、削除要求を受け取り、非アクティブ化された区分と一致する区分識別子６３２を有する割振り済みリソース６０２のレコード中のリソース識別子６３０と一致するリソース識別子２３８を有するレコード（複数可）を、リソース・データ２１５から削除する。次いで制御はブロック１３２５に進み、ハイパーバイザ１５２は、割振り済みリソース６０２が遊休リソースを有し、保存済み割振り要求６０４が少なくとも１つの保存済み要求を含む（少なくとも１つのレコードを有する）かどうか判定する。
【０１２１】
ブロック１３２５の判定が真である場合は、割振り済みリソース６０２は遊休リソースを有し、保存済み割振り要求６０４は少なくとも１つの保存済み要求を含む。したがって制御はブロック１３３０に進み、ハイパーバイザ１５２は、図１４を参照しながらさらに後述するように、保存済み要求を見つけてそれに対するリソースを割り振ることによって、保存済み要求を処理する。次いで、制御は先に上述したブロック１３２５に進む。
【０１２２】
ブロック１３２５の判定が偽である場合は、割振り済みリソース６０２は遊休リソースを有さないか、あるいは保存済み割振り要求６０４は保存済み要求を含まない。したがって制御はブロック１３９９に進み、図１３の論理は戻る。
【０１２３】
図１４に、本発明の一実施形態による、保存済み割振り要求を扱うための例示的な処理のフローチャートを示す。制御はブロック１４００で開始する。次いで制御はブロック１４０５に進み、ハイパーバイザ１５２は、保存済み要求６０４中で最高の優先レベル６６４を選択する。（図６の例では、保存済み割振り要求６０４中の全ての要求のうちで最高の優先レベルは、レコード６５０に示すように「中」であり、これはレコード６５２の「低」優先順位よりも高い。）
【０１２４】
次いで制御はブロック１４１０に進み、ハイパーバイザ１５２は、選択された最高優先レベルで割り振られているリソースの割合が区分の上限（選択された優先レベルに応じて５２０、５２５、または５３０）に対して最も低い区分６６８を選択する。図５および６の例では、区分Ａと区分Ｂは両方とも、レコード６１２および６１４に示すように、中優先レベルで割り振られている１つのリソースを有し、区分Ａの中優先順位リソースの上限５２５は、レコード５０５に示すように「５」だが、区分Ｂの中優先順位リソースの上限５２５は、レコード５１０に示すように「２」である。ゆえに、区分Ａの上限に対する、区分Ａの割り振られている中優先順位リソースの割合は２０％（１／５＊１００）であり、区分Ｂの上限に対する、区分Ｂの割り振られている中優先順位リソースの割合は５０％（１／２＊１００）であり、したがって、２０％＜５０％なので、区分Ａは、中優先順位の要求によって割り振られているリソースの割合がその上限に対して最も低い。
【０１２５】
次いで制御はブロック１４１５に進み、ハイパーバイザ１５２は、最高の下位優先順位６６６を有する保存済み要求（選択された区分６６８によって開始されたもの）を選択する。次いで制御はブロック１４２０に進み、ハイパーバイザ１５２は、遊休リソースのリソース識別子と、選択された保存済み要求のタプル６６０と、選択された保存済み要求の宛先キュー・ペア識別子６６２とを含む追加要求を、ネットワーク・アダプタ１１４に送る。
【０１２６】
次いで制御はブロック１４２５に進み、ネットワーク・アダプタ１１４は、追加要求を受け取り、追加要求の中で指定されたリソース識別子２３８とタプル２４０と宛先キュー・ペア識別子２４２とを含む新しいレコードをリソース・データ２１５に追加する。次いで制御はブロック１４３０に進み、ハイパーバイザ１５２は、選択された保存済み要求を保存済み要求６０４から除去して、リソース識別子と区分識別子と優先順位と下位優先順位とを含む保存済み要求からのリソースを割振り済みリソース６０２に追加することによって、構成データ１５６を更新する。次いで制御はブロック１４９９に進み、図１４の論理は戻る。
【０１２７】
以上の本発明の例示的な実施形態の詳細な記述では、添付の図面（同じ番号は同じ要素を表す）を参照したが、図面は本明細書の一部を形成し、図面には、本発明を実施できる特定の例示的な実施形態が説明として示してある。これらの実施形態については当業者が本発明を実施できるよう十分に詳細に述べたが、本発明の範囲を逸脱することなく、他の実施形態を利用してもよく、論理的、機械的、電気的、および他の変更を加えてもよい。以上の記述では、多くの具体的詳細を示して本発明の実施形態の十分な理解を提供した。しかし、本発明はこれらの具体的詳細なしでも実施することができる。他の場合では、本発明を曖昧にしないために、周知の回路、構造、および技法については詳細に示していない。
【０１２８】
本明細書内で使用される単語「実施形態」の異なるインスタンスは、必ずしも同じ実施形態を指さないが、同じ実施形態を指すこともできる。本明細書に例示または記述したどんなデータおよびデータ構造も例に過ぎず、他の実施形態では、異なるデータ量、データ・タイプ、フィールド、フィールドの数およびタイプ、フィールド名、行の数およびタイプ、レコード、エントリ、またはデータ編成を使用してもよい。加えて、どんなデータもロジックと組み合わせることができ、したがって別個のデータ構造は必要ない。よって、以上の詳細な記述は、限定的な意味にとるべきではなく、本発明の範囲は添付の特許請求の範囲のみによって定義される。
【図１】
2010537297.tif 000003
【図２】
2010537297.tif 000004
【図３】
2010537297.tif 000005
【図４】
2010537297.tif 000006
【図５】
2010537297.tif 000007
【図６】
2010537297.tif 000008
【図７】
2010537297.tif 000009
【図８】
2010537297.tif 000010
【図９】
2010537297.tif 000011
【図１０】
2010537297.tif 000012
【図１１】
2010537297.tif 000013
【図１２】
2010537297.tif 000014
【図１３】
2010537297.tif 000015
【図１４】
2010537297.tif 000016
【手続補正書】
【提出日】平成22年5月21日(2010.5.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
タプルとキューの識別子とを含む第１の割振り要求を第１の要求元区分から受け取ること、
選択区分に割り振られている選択リソースを複数のリソースの中から選択すること、および、
前記選択リソースを前記第１の要求元区分に割り振ることを含む方法であって、前記割り振ることがさらに、前記キューに対する前記タプルのマッピングを前記選択リソースに記憶することを含む方法。
【請求項２】
前記第１の割振り要求がさらに第１の優先順位を含み、前記選択区分が、第２の優先順位を含む第２の割振り要求を送っており、前記選択することがさらに、
前記第１の優先順位が前記第２の優先順位よりも大きいと判定すること、および、
複数の区分のうちの他の区分に前記第２の優先順位で割り振られている前記リソースの割合と比較して、前記選択区分に、その割り振られているリソースの最大割合が前記第２の優先順位で割り振られていると判定することを含む、請求項１に記載の方法。
【請求項３】
前記選択することがさらに、
前記第２の優先順位を、前記複数のリソースに割り当てられている最低の優先順位として選択することを含む、請求項２に記載の方法。
【請求項４】
前記選択することがさらに、
前記選択区分に割り振られている前記リソースのうちで最低の下位優先順位の前記選択リソースを選択することを含む、請求項３に記載の方法。
【請求項５】
前記第１の割振り要求がさらに第１の優先順位を含み、前記選択区分が、第２の優先順位を含む第２の割振り要求を送っており、前記選択することがさらに、
前記第１の優先順位が、現在割り振られている前記複数のリソース全ての優先順位以下であると判定すること、および、
前記第１の要求元区分が有する、その上限に対する前記第１の優先順位の前記複数のリソースの数の割合が、前記選択区分が有する前記第２の優先順位についての割合未満であると判定することを含み、前記第１の優先順位と前記第２の優先順位とが同一である、請求項１に記載の方法。
【請求項６】
前記選択することがさらに、
前記選択区分に割り振られている前記リソースに割り当てられている最低の下位優先順位の前記選択リソースを選択することを含む、請求項５に記載の方法。
【請求項７】
前記第１の割振り要求がさらに第１の優先順位を含み、前記選択することがさらに、
前記第１の優先順位が、現在割り振られている前記複数のリソース全ての優先順位以下であると判定すること、
前記第１の要求元区分が有する、その上限に対する前記第１の優先順位で割り振られている前記複数のリソースの数の割合が、他の全ての区分が有する、それらの上限に対する前記第１の優先順位についての割合よりも大きいと判定すること、および、
前記第１の要求元区分にすでに割り振られている前記リソースと比較して、最低の下位優先順位を有する前記選択リソースを選択することを含む、請求項１に記載の方法。
【請求項８】
ネットワークからパケットを受信すること、
前記パケット中のデータが前記タプルと一致すると判定すること、および、
前記マッピングによって指定される前記キューに前記パケットを記憶することをさらに含む、請求項１ないし７のいずれかに記載の方法。
【請求項９】
前記第１の要求元区分から割振り解除要求を受け取ること、
複数の保存済み要求の中から第１の保存済み要求を選択することであって、前記第１の保存済み要求が、前に第２の要求元区分から受け取られ、前記複数のリソース全てが割り振られていて差し替えることができなかったときに保存されたものであること、および、
前記選択リソースを前記第２の要求元区分に割り振ることをさらに含む、請求項１ないし８のいずれかに記載の方法。
【請求項１０】
前記第１の保存済み要求を選択することがさらに、
前記複数の保存済み要求のうちで最高の優先順位を選択すること、
前記最高の優先順位で割り振られている前記複数のリソースの割合がその上限に対して最も低い、第２の選択区分を選択すること、および、
最高の下位優先順位を有する、前記第２の選択区分によって送られた前記第１の保存済み要求を選択することを含む、請求項９に記載の方法。
【請求項１１】
前記要求元区分が第１の優先順位で割り振ることが許される、前記複数のリソースの数の上限を設定することをさらに含む、請求項１ないし１０のいずれかに記載の方法。
【請求項１２】
複数のリソース全てが割り振られていると判定するステップをさらに含み、複数のリソースの中から選択リソースを選択する前記ステップが前記判定に応答する、請求項１ないし１１のいずれかに記載の方法。
【請求項１３】
命令でエンコードされた記憶媒体であって、前記命令が、実行されたとき、
タプルとキューの識別子とを含む第１の割振り要求を第１の要求元区分から受け取ること、
複数のリソースの全てが割り振られていると判定すること、
前記判定することに応答して、選択区分に割り振られている選択リソースを前記複数のリソースの中から選択すること、および、
前記選択リソースを前記第１の要求元区分に割り振ることを含み、前記割り振ることがさらに、前記キューに対する前記タプルのマッピングを前記選択リソースに記憶することを含む記憶媒体。
【請求項１４】
プロセッサと、
前記プロセッサに通信可能に接続されたメモリとを備えるコンピュータであって、前記メモリが命令をエンコードし、前記命令が、前記プロセッサによって実行されたとき、
タプルとキューの識別子とを含む第１の割振り要求を第１の要求元区分から受け取ること、
複数のリソースの全てが割り振られていると判定すること、前記判定することに応答して、選択区分に割り振られている選択リソースを前記複数のリソースの中から選択することを含み、前記コンピュータがさらに、
前記プロセッサに通信可能に接続されたネットワーク・アダプタを備え、前記ネットワーク・アダプタがロジックおよび前記複数のリソースを備え、前記ロジックが、前記第１のキューに対する前記タプルのマッピングを前記選択リソースに記憶することによって、前記選択リソースを前記第１の要求元区分に割り振る、コンピュータ。
【請求項１５】
請求項１ないし１２のいずれかに記載の方法をコンピュータに実行させる、コンピュータ・プログラム。
【国際調査報告】
2010537297.tif 000017
2010537297.tif 000018
2010537297.tif 000019