(57)【要約】【課題】  公平性および性能を考慮して、個々のプロセスにCPUを親和させ介入を最小にすること。【解決手段】  本発明は、複数の優先順位グループに関連付けられたプロセスを複数のリソース間に分散するコンピュータで実施される方法に関する。この方法は、複数の優先順位グループの第１の優先順位グループが密（rich）であるかどうかを確認することを含む。この方法は、第１の優先順位グループが、密であるとみなされる場合には、第１の手法に従って、第１の優先順位グループのプロセスを、複数のリソースの少なくとも第１のサブセット間に分散することをも含む。さらに、この方法は、第１の優先順位グループが、粗であるとみなされる場合には、第１の手法とは異なる第２の手法に従って、第１の優先順位グループのプロセスを、複数のリソースの少なくとも第２のサブセット間に分散することを含む。   【選択図】図１
2004199674.tif 000002
【特許請求の範囲】
【請求項１】
複数の優先順位グループに関連付けられたプロセスを複数のリソース間に分散するコンピュータで実施される方法であって、
前記複数の優先順位グループの第１の優先順位グループが、前記複数のリソースの少なくとも１つの全部について使用資格を有する場合には、該第１の優先順位グループを密であるとみなし、前記複数の優先順位グループの前記第１の優先順位グループが、前記複数のリソースの前記１つの全部についての使用資格よりも少ない使用資格を有する場合には、該第１の優先順位グループを粗であるとみなすことにより、前記複数の優先順位グループの第１の優先順位グループが密であるかどうかを確認することと、
前記第１の優先順位グループが密であるとみなされる場合には、第１のコンピュータで実施される手法に従って、前記第１の優先順位グループのプロセスを、前記複数のリソースの少なくとも第１のサブセット間に分散すること、
前記第１の優先順位グループが粗であるとみなされる場合には、前記第１のコンピュータで実施される手法とは異なる第２のコンピュータで実施される手法に従って、前記第１の優先順位グループのプロセスを、前記複数のリソースの少なくとも第２のサブセット間に分散すること、
を含むコンピュータで実施される方法。
【請求項２】
前記確認することに先立って、前記複数のリソースに関する相対的な優先順位に基づいて前記複数の優先順位グループをソートすることをさらに含み、それによって、前記確認することは、最高序列の優先順位グループから開始する優先序列に基づいて、前記複数の優先順位グループのそれぞれに対して実行される、
請求項１に記載のコンピュータで実施される方法。
【請求項３】
前記第１のコンピュータで実施される方法は、
前記複数のリソースの中の第１のリソースのグループを確認することを含み、該第１のリソースのグループのサイズは、前記複数の優先順位グループの中の前記第１の優先順位グループの相対的な優先順位に対応し、
前記第１のリソースのグループを前記第１の優先順位グループに割り当てることを含み、前記第１のリソースのグループは、第１の開始リソースを含み、それによって、前記第１の優先順位グループのプロセスのラウンドロビン分散が前記第１の開始リソースから開始する、請求項２に記載のコンピュータで実施される方法。
【請求項４】
前記複数の優先順位グループの前記第１の優先順位グループが密であるかどうかを確認することの後に、前記複数の優先順位グループの第２の優先順位グループが密であるかどうかを確認することを含み、前記複数の優先順位グループの前記第２の優先順位グループが、前記複数のリソースの少なくとも前記１つの全部について使用資格を有する場合には、該第２の優先順位グループは、密であるとみなされ、前記複数の優先順位グループの前記第２の優先順位グループが、前記複数のリソースの前記１つの全部についての使用資格よりも少ない使用資格を有する場合には、該第２の優先順位グループは、粗であるとみなされ、該第２の優先順位グループは、前記第１の優先順位グループに対して低い序列の優先順位を有し、
前記第２の優先順位グループが密であるとみなされる場合には、以下のａおよびｂのステップ、すなわち
ａ）前記第１のリソースのグループとは異なる、前記複数のリソースの中の第２のリソースのグループを確認すること。該第２のリソースのグループのサイズは、前記複数の優先順位グループの中の前記第２の優先順位グループの相対的な優先順位に対応する
ｂ）前記第２のリソースのグループを前記第２の優先順位グループに割り当てること。前記第２のリソースのグループは、前記第１の開始リソースとは異なる第２の開始リソースを含み、それによって、前記第２の優先順位グループのプロセスのラウンドロビン分散が前記第２の開始リソースから開始する
のステップを実行することをさらに含む請求項３に記載のコンピュータで実施される方法。
【請求項５】
前記第１の優先順位グループの前記プロセスの前記ラウンドロビン分散、および前記第２の優先順位グループの前記プロセスの前記ラウンドロビン分散は、前記第１の開始リソースから前記第２の開始リソースに向かう方向に沿った分散方向で進行し、前記第２のリソースのグループは、前記分散方向に関して前記第１のリソースのグループよりも先行する、請求項４に記載のコンピュータで実施される方法。
【請求項６】
前記複数のリソースは、前記第１のリソースのグループのリソースでもなく、前記第２のリソースのグループのリソースでもない所与のリソースを含み、該所与のリソースは、前記分散方向に関して、前記第２のリソースのグループおよび前記第１のリソースのグループよりも先行し、前記第１の優先順位グループの前記プロセスの前記ラウンドロビン分散は、前記分散方向に沿って、かつ前記第１の開始リソースから開始する第１のループに沿って進行し、前記所与のリソースを通り、次に、前記第２の開始リソースを通り、前記第２の優先順位グループの前記プロセスの前記ラウンドロビン分散は、前記分散方向に沿って、かつ前記第２の開始リソースから開始する第２のループに沿って進行し、前記第１の開始リソースを通り、次に、前記所与のリソースを通る、請求項５に記載のコンピュータで実施される方法。
【請求項７】
前記第１の優先順位グループのプロセスから発生した発生プロセスが、前記第１の優先順位グループのプロセスの一覧の最後に追加され、前記第１のコンピュータで実施される手法に従って順に実行される、請求項６に記載のコンピュータで実施される方法。
【請求項８】
前記第２の複数のリソースの前記プロセスの前記ラウンドロビン分散は、前記第１の優先順位グループ専用のリソースを飛ばし、前記第１の優先順位グループ専用の該リソースは、前記第１のリソースのグループを前記第１の優先順位グループへ割り当てることの前に達成される前記第１の優先順位グループのプロセスによる性能に関する性能データから確認される、請求項６に記載のコンピュータで実施される方法。
【請求項９】
前記複数の優先順位グループの前記第２の優先順位グループが密であるかどうかを確認することの後に、前記複数の優先順位グループの第３の優先順位グループが密であるかどうかを確認することを含み、前記複数の優先順位グループの前記第３の優先順位グループが、前記複数のリソースの少なくとも前記１つの全部について使用資格を有する場合には、該第３の優先順位グループは、密であるとみなされ、前記複数の優先順位グループの前記第３の優先順位グループが、前記複数のリソースの前記１つの全部についての使用資格よりも少ない使用資格を有する場合には、該第３の優先順位グループは、粗であるとみなされ、該第３の優先順位グループは、前記第２の優先順位グループおよび前記第１の優先順位グループに対して低い序列の優先順位を有し、
前記第３の優先順位グループが粗であるとみなされる場合には、以下のｃおよびｄのステップ、すなわち
ｃ）前記複数のリソースのうちの残っているリソースの中から最も負荷の低いリソースを確認すること。該残っているリソースは、前記第３の優先順位グループに対してより高い序列の優先順位を有する優先順位グループに割り当てられていないリソースを表す
ｄ）前記最も負荷の低いリソースを前記第３の優先順位グループに割り当てること。前記最も負荷の低いリソースは、前記分散方向に関して、前記第１のリソースのグループおよび前記第２のリソースのグループよりも先行し、それによって、前記第３の優先順位グループのプロセスのラウンドロビン分散が、前記分散方向に沿って、かつ前記最も負荷の低いリソースから開始するループに沿って進行し、前記第２の開始リソースを通り、続いて、前記第１の開始リソースを通る
のステップを実行することをさらに含む請求項６に記載のコンピュータで実施される方法。
【請求項１０】
前記相対的な優先順位は、前記複数のリソースに関する使用資格比率によって指定される、請求項３に記載のコンピュータで実施される方法。
【発明の詳細な説明】
【技術分野】
【０００１】
コンピュータシステムがより強力になるにつれて、より多くのリソースが、絶えず増加し続けている多くのコンピュータジョブおよびコンピュータプロセスを処理するようになってきている。一例として、数百ものプロセッサ（CPU）、複数のデータベース接続、複数のディスクチャネル・多数のネットワークリンクを備えたコンピュータシステム（スタンドアロンシステム・ネットワーク化システム）が存在する。これらのコンピュータシステムは、現代の企業の計算ニーズに対処するように要求される。この現代の企業の計算ニーズは、多数のプロセスを同時に処理することを伴うことがある。
【背景技術】
【０００２】
一般に、複数のプロセスが存在すると、これらの複数のプロセスは、これらのリソースを求めて互いに競争し、これに対応して、利用可能なリソース上で実行するためにプロセスをスケジューリングする必要がある。例えば、CPUリソースの場合を取り上げる。本明細書の議論は、議論を簡単にするためにCPUリソースに集中しているが、本明細書で議論される問題および提供される解決策は、CPUに限定されるものではなく、異なるプロセスによって共有される必要がある任意のリソースに適用可能であることは、留意されるべきである。
【０００３】
スケジューリングを実施する最も簡単な方法の１つは、単一のグローバルキューを使用して、ある予め定められた公平な割り当て規則を満たすことができる任意のCPUに次のプロセスをディスパッチすることである。しかしながら、単一のグローバルなアクセスポイントは、特に、多数のCPUを有する大規模コンピュータシステムにとって論点となる可能性があり、性能が悪化することがある。また、単一のグローバルキューのアプローチは、変更されたグローバルデータをシステム内のすべてのCPUに伝達しなければならないので、スケールを変更することが特に難しくもある。CPUの個数またはプロセスの個数が増加するにつれて、性能の不利益が、単一のグローバルキューのアプローチの使用の妨げになってくる。
【０００４】
単一のグローバルキューのアプローチに関連した性能の不利益を回避する１つの方法は、例えば、各CPUにローカルキューを提供することにより、複数のローカルキューを使用し、各ローカルキューを独立に管理することである。この分離型アプローチは、低い処理オーバヘッドの点で、より効率的になる傾向があるが、公平性が悪化することが多い。
【０００５】
１つの分離型スケジューリングアプローチは、ラウンドロビンスケジューリング方式である。純粋なラウンドロビンスケジューリング方式では、プロセスは、巡回形式で次のCPUキューに割り当てられる。したがって、１０個のCPUが存在する場合、１番目のプロセスは、１番目のCPUに割り当てられ、２番目のプロセスは、２番目のCPUに割り当てられ、以下同様の割り当てが行われる。１０番目のプロセスに対する最後のCPUに到達すると、１番目のCPUが、１１番目のプロセスに再び割り当てられる。このようなことから、その名前がラウンドロビンと呼ばれる。
【０００６】
優先順位グループは、共にグループ化することができ、実行目的で同様に優先させることができるような、所定の共通性を有する複数のプロセスのことをいう。優先順位グループ化を行う機能は、多くの供給業者のスケジューラによって提供され、多くの顧客は、この機能を要求する。リソースグループを有することによって、複雑さの次元がさらに追加される。各CPUキューの各グループに１つの構成要素を有する場合、公平にすることは容易である。各CPUを完全に独立に処理することができ、各CPUは、完全な公平性を達成する。グループが、各CPUキューに少なくとも１つの代表を有する限り、このアルゴリズムは、そのグループの観点から公平である。しかし、CPU数の多いマシンでは、あらゆる優先順位グループが、全てのCPUを満たせる程に十分なプロセスはない。より一般性のあるこのサブケースは、アンダーコミットされている（under-committed）と呼ばれる。優先順位グループがアンダーコミットされていると、ラウンドロビンアプローチは、公平性を大幅に欠く傾向にある。
【０００７】
例えば、あるグループに、１００のCPUシステムの５％の使用資格（entitlement）が与えられているが、このグループは、５つの実行ジョブしか有しない場合、５％は物理的に可能であるので、そのグループは、５％を受け取ることを期待する。修正されていないラウンドロビン方式では、あらゆるグループは、同じCPU０に構成要素の分散を開始し、その後、番号の大きなCPUに順次分散を行っていく。したがって、アンダーコミットの場合であっても、最初の数個のCPUが、あらゆるグループの構成要素を有する可能性があり、後のCPUは、非常にまばらにしか、構成要素の設定を受けないことになる。このことは完全に分離されたキュー方式において、全体的な効果として、そのグループが、それらの５個のCPUの5％すなわち0.25％しか取得しないということになる。十分に負荷を与えられたCPU上のジョブは、公平性の規則に従う一方、自身のCPU上ですべてジョブが行われる。いくつかのCPUは、完全にアイドルになる可能性がある。すべてのグループでは、目標を達成しないことになる。
【０００８】
さらに別の例として、最小のグループを５％に制限する理由が、そのグループが取得しすぎであり抑制する必要があること、またはシステムを支配することであると仮定する。そのグループが、すべてのCPUを占有するのに十分なプロセスを有する場合、制限されると仮定されるこのグループで、システム全体の５３％を支配することができる。多くのコーナーケースが、分離された純粋なラウンドロビンの解決法が公平でないことを実証している。
【０００９】
バッチスケジューリング方式、定期的リバランス（periodic rebalancing）方式、クレジット／デビット方式、アイドルスチール、またはロビンフッドスケジューリングといった他のアプローチがある。この場合、公平性や性能にさまざまな不備がある。特に、優先順位グループが含まれる場合がそうである。これらのアプローチの多くは、オペレーティングシステム（ＯＳ）による積極的な補償・管理が必要である。これにより、スケジューリングのコストが増加傾向になり、これらのアプローチを、多数のリソース・多数の優先順位グループ・多数のプロセスを有するコンピュータシステムのニーズに合うように拡張することが困難になる。特に、あるCPUから別のCPUがプロセスをスティールすることに頼るいかなる方式を用いても、キャッシュ性能が崩壊し、含まれるすべてのCPU上の作業が一時的に停止する。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
個々のプロセスにCPUを親和させ介入を最小にすることは、性能において重要である。しかし、これらの方式のほとんどは、基本的にすべてのプロセスが等しいということを前提とし、これは、グループ間の公平性の要求に直接矛盾する。個々のキューの長さは、そのプロセスの相対的な優先順位と関連性がないことがある。公平性および性能の双方の軸で同時に考察することが必要であり、従って新しい解決法が必要になる。
【課題を解決するための手段】
【００１１】
本発明は、一実施の形態において、複数の優先順位グループに関連付けられたプロセスを複数のリソース間に分散するコンピュータで実施される方法に関する。この方法は、複数の優先順位グループの第１の優先順位グループが密（rich）であるかどうかを確認することを含む。複数の優先順位グループの第１の優先順位グループが、複数のリソースの少なくとも１つの全部について使用資格を有する場合には、この第１の優先順位グループは、密であるとみなされ、複数の優先順位グループの第１の優先順位グループが、複数のリソースの１つの全部についての使用資格よりも少ない使用資格を有する場合には、この第１の優先順位グループは、粗（poor）であるとみなされる。また、この方法は、第１の優先順位グループが、密であるとみなされる場合には、第１のコンピュータで実施される手法に従って、第１の優先順位グループのプロセスを、複数のリソースの少なくとも第１のサブセット間に分散することをも含む。さらに、この方法は、第１の優先順位グループが、粗であるとみなされる場合には、第１のコンピュータで実施される手法とは異なる第２のコンピュータで実施される手法に従って、第１の優先順位グループのプロセスを、複数のリソースの少なくとも第２のサブセット間に分散することを含む。
【００１２】
別の実施の形態では、本発明は、当該実施の形態に具現化されたコンピュータ読み取り可能コードを有するプログラム記憶媒体を備える製品に関する。このコンピュータ読み取り可能コードは、複数の優先順位グループに関連付けられたプロセスを複数のリソース間に分散するように構成される。このコンピュータ読み取り可能コードは、複数の優先順位グループの第１の優先順位グループが密であるかどうかを確認するコンピュータ読み取り可能コードを含む。複数の優先順位グループの第１の優先順位グループが、複数のリソースの少なくとも１つの全部について使用資格を有する場合には、この第１の優先順位グループは、密であるとみなされる。複数の優先順位グループの第１の優先順位グループが、複数のリソースの１つの全部についての使用資格よりも少ない使用資格を有する場合には、この第１の優先順位グループは、粗であるとみなされる。第１の優先順位グループが、密であるとみなされる場合には、第１の手法に従って、第１の優先順位グループのプロセスを、複数のリソースの少なくとも第１のサブセット間に分散するコンピュータ読み取り可能コードが含まれる。また、第１の優先順位グループが、粗であるとみなされる場合には、第１の手法とは異なる第２の手法に従って、第１の優先順位グループのプロセスを、複数のリソースの少なくとも第２のサブセット間に分散するコンピュータ読み取り可能コードも含まれる。
【００１３】
さらに別の実施の形態では、本発明は、複数のプロセスによって共有される複数のリソースをその内部に有するコンピュータシステムに関する。複数のプロセス内のプロセスは、より少数の複数の優先順位グループと関連付けられる。複数の優先順位グループの第１の優先順位グループのプロセスは、複数のリソースの少なくとも第１のリソースのグループによってサービスを提供される。第１の優先順位グループのプロセスは、第１のリソースのグループのリソース間に、ラウンドロビン形式で分散される。この分散は、第１のリソースのグループの第１の開始リソースから開始される。複数の優先順位グループの第２の優先順位グループのプロセスは、複数のリソースの少なくとも第２のリソースのグループによってサービスを提供される。第２の優先順位グループのプロセスは、第２のリソースのグループのリソース間に、ラウンドロビン形式で分散される。この分散は、第１のリソースのグループの第２の開始リソースから開始される。第１の優先順位グループは、複数のリソースに関して、第２の優先順位グループよりも高い優先順位を有する。第２の開始リソースは、第１の開始リソースとは異なる。
【００１４】
本発明のこれらの特徴および他の特徴は、本発明の詳細な説明において図面と共に以下にさらに詳細に説明される。
【００１５】
本発明を、添付図面の図の例によって説明するが、この例は、本発明を限定するものではない。添付図面において、同じ参照符号は、同様の構成要素を参照する。
【発明を実施するための最良の形態】
【００１６】
次に、本発明を、添付図面に示すような本発明のいくつかの好ましい実施の形態を参照して詳細に説明する。以下の説明では、本発明の十分な理解を提供するために、多数の具体的な詳細を述べる。しかしながら本発明については、これらの具体的な詳細のいくつかまたはすべてがなくても実践できることが、当業者には明らかである。他の例では、周知のプロセスのステップ・構造を詳細に説明していないが、本発明を不必要に分かりにくくすることがないようにするためである。
【００１７】
本発明の一実施の形態によると、さまざまな優先順位グループに関連付けられたプロセス（すなわちジョブ）をコンピュータシステムリソースに、高度な公平性および効率性で分散する斬新な分散技法が提供される。この文脈において、公平性は、優先順位グループの優先順位付けの目標を可能な限り達成する分散技法の能力に関係する。他方、効率性は、最小の時間および最小のリソースオーバヘッドで、プロセスをリソースに分散する分散技法の能力に関係する。本発明は、公平性および効率性の双方を同時に改善することを目的としている。
【００１８】
さらに、独創的分散アルゴリズムは、任意の個数の優先順位グループの任意の個数のプロセスを、任意の組のリソースに分散するように設計される。このリソースは、オペレーティングシステムによって使用されるスケジューリングメカニズム（もしあれば）から独立している。ほとんどの場合、仕事負荷の分散を独創的分散アルゴリズムによって達成することにより、ＯＳは、もし少しでもあれば、非常に単純なスケジューリング・補償を実行することができる。それにより、さまざまな優先順位グループによって達成される実際の優先順位付けを、予想される優先順位でインラインに実行することができる。この点において、スケジューリング自体は受動的なものとなり、プロセスが独創的分散アルゴリズムに従ってリソースに分散される時に、公平性を補償した作業が実行される。
【００１９】
興味のあることには、リソースの個数（例えばCPUの個数など）・優先順位グループの個数が増加するにつれて、独創的な分散技法によって達成される公平性の程度は、従来技術のスケジューリング技法では減少すると予想されるが、これに反し増大する。この意味で独創的分散技法は、多数のリソースを有し、多数の優先順位グループ・多数のプロセスを処理する大規模システムへの拡張可能性が高い。
【００２０】
本発明の一実施の形態では、所与の優先順位グループが、優先順位グループのプロセスのラウンドロビン分散を開始できる開始リソースを知的に決定することによって、公平性が本来的に達成される。先に述べたように、純粋なラウンドロビンスケジューリング方式（すなわち、常に１番目のリソースから割り当てを開始する）では、統計的に見て、所定のリソースを過負荷にする傾向がある。１０個のCPUからなるグループが存在し、かつ、優先順位グループＸが、システムのCPU処理能力の５０％の使用資格を与えられているとすると、公平性をより向上させることができるのは、従来技術の純粋なラウンドロビンアプローチで行われていたように自動的に１番目のCPUから分散することではなく、５番目のCPUから、優先順位グループＸのプロセスのラウンドロビン分散を開始することである。
【００２１】
周知のように、個々の優先順位グループに関連付けられた優先順位付けは、さまざまな方法で指定することができる。優先順位付けを指定する多くの方法が存在するが、本明細書の議論は、議論を簡単にするために、使用資格比率（entitlement percentage）を使用して、優先順位付けを指定する。本発明は、優先順位グループの任意の優先順位付け方式に適用することができ、使用資格比率により優先順位付けを指定する方式に限定されるものではないことに留意すべきである。さらに、与えた例および図面では、議論は、CPUに集中しているが、本発明は、多くの優先順位グループおよび／または多くのプロセス間で共有される必要のある任意のタイプのリソースに適用可能である。
【００２２】
本発明の一態様によると、優先順位グループは、最低１つのリソース全部の分の使用資格（例えば１つのCPU分の使用資格）を有するという使用資格基準を満たす場合、密優先順位グループとみなされる。例えば、システムが１０個のCPUを有し、かつ、特定の優先順位グループが、システムのCPU処理能力の３０％の使用資格を与えられているとすると、その優先順位グループは、３つのCPU分の使用資格があるので、密である。優先順位グループが、上述した使用資格基準（すなわち、少なくとも１つのリソース全部の分の使用資格を有するという基準）を満たさない場合には、その優先順位グループは、粗優先順位グループとみなされる。１０個のCPUシステムの例を使用すると、ある優先順位グループが、システムのCPU処理能力の５％の使用資格を与えられている場合、その優先順位グループは、１つのCPU分の使用資格の半分しか使用資格を持たないので、粗である。
【００２３】
密優先順位グループと粗優先順位グループとを区別することは意味がある。これらの優先順位グループが、本発明の一実施の形態による異なる方法で分散されるからである。密優先順位グループは、使用資格の大きさに基づいたサイズを有するリソースの集合をブロックオフすることを交替で行うことによって、１番目の最良のものを最も豊富に選択する。粗優先順位グループには、そのプロセスが、異なる方法でリソースに割り当てられる。この異なる方法とは、例えば、密優先順位グループへの割り当てが完了した後に残っているリソースへの最適適合方式である。実質的に、密優先順位グループは、さまざまなリソースの所有を許可されるが、他の優先順位グループとリソースを共有しなければならない機会が比較的少ない。粗優先順位グループは、残ったリソースを獲得するための競合が生じたままとなる。
【００２４】
各優先順位グループのプロセスを異なるリソースにどのように分散するかを事前に決定することにより、分散用のロードマップが作成される。なおこのロードマップによって、分散アルゴリズムの実行と実行の間の時間にオペレーティングシステムが、アクティブに介入する必要はほとんどない。分散アルゴリズムを最後に実行することで、ある密優先順位グループが、その予想される優先順位、例えばその予想されるリソースの使用資格を達成できなかったことが判明すると、是正する動作を分散アルゴリズムの現在の実行において行うことができる。是正する動作とは例えば、あるリソース（例えばあるCPU）を、ある密優先順位グループからのプロセスのみの専用サービスとし、その密優先順位グループが、その予想されるリソースの使用資格をより良く達成できるようにすることがある。ある意味で、分散アルゴリズムの一実行から次の実行へのフィードバックメカニズムが存在し、それにより公平性が、時間が経つにつれて改善される。
【００２５】
効率性を考慮し、分散アルゴリズムは、頻繁には実行しないことで性能への影響を最小にするように設計される。プロセス分散用に作成されたロードマップは、期間中、公平性を維持するために、プロセスの分散を継続的に完全に再バランス(rebalance)させる必要がないようになっている。グループの構成要素または構成の変更はあまりないので、一度確立されたこのバランスを崩す可能性のあるこれら２つのオペレーションは、新しいプロセスフォークであり、既存のプロセスを終了する。終了は、統計的に、すべてのCPUにわたってバランスされるので、プロセス終了にあまりにも多く取り組む必要はないかもしれない。しかしながら、このモデルでは、新しくフォークされたプロセスは、可能な限り長い期間、優先順位グループ間で公平性を維持するような方法で管理される。
【００２６】
さらに、独創的分散アルゴリズムは、リソース間にプロセスを分散するのにグローバルキューに頼らない。これにより、グローバルキューを使用することに関連した性能の不利益が回避される。たとえ、分散がリソース自体の分離キューを使用した分離形式で実行されて、効率性が改善されても、公平性は、過度には犠牲にされない。これらのキューは、実際の分散プロセス中は全体的にロックされる一方、分散プロセス自体は、全体的なロックに費やされる時間が最小になるように効率的に動作するよう設計される。本発明のさまざまな実施の形態のこれらの機能および他の機能ならびにこれらの利点および他の利点は、図面および以下の議論を参照することにより、より良く理解できる。
【００２７】
図１は、本発明の一実施の形態による独創的分散アルゴリズムの主要なステップを示している。一般に、この分散アルゴリズムは、例えば図に関連付けられた例では毎秒ごとに、周期的に実行するように設計される。このアルゴリズムは、その入力として、優先順位グループの一覧、構成連続番号、およびプロセスの一覧を取り込む。構成連続番号は、優先順位グループの構成が変化するごとに割り当てられる識別子を表す。例えば、ある優先順位グループの追加または削除は、構成の変化の代表であり、新しい構成連続番号が、その新しい構成を識別するために割り当てられる。別の例として、既存の優先順位グループの使用資格の比率が変化することがあり、この変化によって、新しい構成連続番号が割り当てられる。
【００２８】
このアルゴリズムは、優先順位グループの一覧をソートすることから開始する。優先順位グループの一覧は、例えば使用資格比率などの何らかの優先順位付け指定に基づいて降順にソートされる。しかしながら、前回の分散アルゴリズムの実行以降に構成が変化した場合、優先順位グループを、再びソートすることができる（ブロック１０２およびブロック１０４）。一般に、任意の適切なソートアルゴリズムを使用することができる（例えば、バブルソートやバイナリソートを含む）。以下の実施例の節の実施例Ａを参照すると、ソートされた例示的な一覧が表１に示され、この表１では、優先順位グループ１〜４が、使用資格に基づいて降順にソートされている。
【００２９】
ブロック１０６では、変数SHARES（共有）の値が、すべての使用資格の総和に等しくなるように設定される。優先順位グループに関連付けられた優先順位付けを指定するのに、使用資格比率が使用される場合には、SHARESは、100となる（ただし、相対的な優先順位付けが他の方法で指定される場合には、100である必要はない）。
【００３０】
ブロック１０８では、前回の分散アルゴリズムの実行の結果得られる性能データが、フィードバックとして使用される。それにより、現在の分散が、リソースへのプロセスのその分散において、より公平になるようにする。本明細書の図２から分かるように、特定の優先順位グループ専用になる必要のあるCPUがある場合、フィードバックデータは、このCPU数を確認するために使用されて、その優先順位グループが、期待使用資格により近い実際の使用資格を得るようにする。
【００３１】
ブロック１１０では、リソースについてのLOAD（負荷）の配列が初期化される。この配列は、さまざまなCPUの負荷を追跡するために使用される。特に、すべての粗優先順位グループによるCPUの共有、および、場合によっては、最低順位の密優先順位グループから残された一CPUの一部の共有を容易にするために使用されることになる。
【００３２】
ブロック１１２では、使用資格に基づいて、優先順位グループの開始CPUの配列が確認される。従来技術のラウンドロビンスケジューリング方式と異なり、本発明は、優先順位グループが、指定されたさまざまなリソースでラウンドロビン分散を開始できるようにする。したがって、ブロック１１２では、各優先順位グループは、システムのCPUの中から、そのプロセスのラウンドロビン分散用の開始CPUを割り当てられる。ブロック１１２は、本明細書の図３において、より詳細に論述される。
【００３３】
ブロック１１４は、特定の優先順位グループ専用になる必要があるCPUを指定し、それにより、それらの優先順位グループが、分散アルゴリズムの前回の実行から受け取った実際の使用資格と、期待使用資格との間の差を縮めるようにする。専用CPUは、その優先順位グループの開始CPUのデータ（図１／図３のブロック１１２で得られる）だけでなく、フィードバックデータ（図１／図２のブロック１０８で得られる）にも基づいて確認される。ブロック１１４は、本明細書の図４において、より詳細に議論される。
【００３４】
ブロック１１６では、グローバルスケジュールロックが取得される。グローバルスケジュールロックとは、さまざまな優先順位グループに関連付けられたプロセスが、独創的分散アルゴリズムに従って分散されるとき、CPUキューにおけるどのプロセスについても、スケジューリングまたは分散の衝突がないようにするものである。グローバルロックは、本質的に高いオーバヘッドを有する高価なオペレーションであるので、システム性能に対する影響を最小にするために、グローバルスケジュールロックだけは、分散（ブロック１１８）が完了し、ブロック１２０ですぐに解放されるまで継続する。
【００３５】
分散ブロック１１８は、自身を最適化することにより、分散・分離された形式でローカルCPUキュー間に、公平であるが効率的なプロセスを分散できるようにする。ブロック１１８では、優先順位グループに関連付けられたプロセスが、CPU間に分散される。各優先順位グループについて、分散プロセスは、その優先順位グループに割り当てられたCPUから開始し、分散は、他の優先順位グループ専用のCPUを飛ばしながら、ラウンドロビン形式で行われる。最後のCPUに到達すると、分散は、再び最初のCPU（CPU０）から開始する。例示的な分散は、本明細書の実施例Ａの表４に示されている。
【００３６】
図２は、本発明の一実施の形態による、必要な専用CPUの個数を決定する主要なステップを示している。このステップにより、優先順位グループの実際の使用資格を、期待される使用資格に近づける。図２は、各優先順位グループを順に進み（ブロック２０２〜２０６）。そして、問題となる優先順位グループが、期待される使用資格を前回の分散アルゴリズムの実行後に得ていなかった場合に（ブロック２０８で判定）、ブロック２１０で、この優先順位グループを援助してその期待使用資格を達成するために必要とされる、専用CPUの個数が計算される。実施例Ａでは、表３において、グループ１が、分散アルゴリズムの最初の実行後、その期待使用資格を達成していなかった（５０％の期待使用資格に対して、４０％の実際の使用資格）ことを示す。図２では、実施例Ａのグループ１がその予想される５０％の使用資格を達成するに当たり、グループ１で（599／100）−1または４つの、専用となる共有されないCPUが必要であることを出す。一形態では、この計算で小数部の値を切り捨てる。その理由は、整数のリソースの単位にのみ興味があるからである。これらの４つの専用CPUは、実施例Ａの表４に示されている。
【００３７】
オプションとして、ブロック２１０では、特定の優先順位グループ専用となるCPUの最大数が、その優先順位グループのプロセス数を越えないようにする。効率性を改善するためである。その理由は、特定の優先順位グループに対して、その優先順位グループに存在するプロセスよりも多くのCPUが専用になると、専用CPUの少なくとも１つが使用されず、したがって無駄に浪費されるからである。
【００３８】
図３は、本発明の一実施の形態による、開始CPUを各優先順位グループについて確認する主要なステップを示している。この開始CPUにおいて、優先順位グループは、そのプロセスのそのラウンドロビン分散を開始することができる。また図３は、この優先順位グループに割り当てられるCPUの個数（整数部および小数部）も確認する。特定の優先順位グループに割り当てられるCPU数は、各CPUが正確に１つのCPU分の作業を行うことを保証しようとする規則に基づいて確認される。公平に動作している時、システム全体は、各CPUの全使用資格の総和（CPUS＊SHARES）に等しい総作業量を行うことになる。したがって、分割不能な基本単位の作業をCPUの配分比率と考える。これらの単位で負荷を表現するとき、他の方式では起こり得るような丸め誤差が起こらない。各グループが、その目標となるCPUの配分比率を達成できる限り、優先順位付けは、達成されることになる。任意のCPUが、１つのCPUより多い作業または１つのCPUより少ない作業を担当すると、公平性に好ましくない影響がでる。この段階において、各CPU上に存在する可能性があるプロセスの量ではなく質が、最大の関心事となる。
【００３９】
一般に、図３のプロセスは、最高序列の密優先順位グループから開始する。このプロセスでは、この優先順位グループに割り当てられるCPU数および開始CPUの番号を確認する。続いて、次に高い序列の密優先順位グループが、適切な個数のCPUおよび適切な開始CPUの番号を割り当てられて、そのプロセスのそのラウンドロビン分散を開始する。図３は、すべての密優先順位グループが割り当てられるまで続く。他方で、粗優先順位グループは、密優先順位グループがすべて割り当てられた後、残されたリソースを得るために競争を行う。
【００４０】
なお図３の場合に、このCPUの所与の優先順位グループへの割り当ては、非排他的な割り当てである点に留意されたい。それは、所与の優先順位グループへのプロセスのラウンドロビン分散が、別の優先順位グループへのそれと重なる場合に、他の優先順位グループに関連付けられたプロセスも、それらのCPUを共有し得る、という意味においてである。実施例Ａを参照すると、優先順位グループ１は、CPU５〜９を割り当てられ、優先順位グループ２は、CPU１〜４を割り当てられ、優先順位グループ３は、CPU０を割り当てられている。しかしながら、これらのCPUは、優先順位グループ４のプロセスによって共有される。優先順位グループ４は、示すように、CPU０でそのプロセスの分散を開始し、CPU１、CPU２、CPU３からCPU９までずっとラウンドロビン形式で進む。特定の優先順位グループに割り当てられたCPUが、他の優先順位グループに関連付けられたプロセスによって共有できないことを保証する唯一の方法は、そのCPUをその特定の優先順位グループ専用にすることである。
【００４１】
本発明の一態様によると、密優先順位グループの順位が、ソートされた一覧において高い序列を有するほど、その密優先順位グループは、粗優先順位グループのプロセスからより遠く離れることになる。これは、粗優先順位グループのプロセスが、ラウンドロビン分散によって、より高い序列の密プロセスに割り当てられたCPUに分散される可能性を低くする。実施例Ａに関して言うと、優先順位グループ１は、ソートされた一覧において最高序列であるので（表１参照）、優先順位グループ１は、CPU５、CPU６、CPU７、CPU８、およびCPU９に割り当てられ、優先順位グループ１のプロセスは、CPU５で開始するラウンドロビン形式で分散される。他方、粗優先順位グループ４のプロセスは、CPU０でその分散を開始する。したがって、最高序列の密優先順位グループ１に割り当てられたCPUと粗優先順位グループ４のプロセスとを分離する４つのCPU（CPU１、CPU２、CPU３、およびCPU４）からなるバッファが存在する。本発明者らがより多くのCPUを有するほど、この保護バッファは、より大きくなる。
【００４２】
粗優先順位グループ４が、２つのプロセスしか持たない場合（これは、実施例Ａの事例ではないが、議論のために仮定する）、粗優先順位グループ４のこの２つのプロセスは、この場合、CPU０およびCPU１に分散されていることになる。その場合、密優先順位グループ１のプロセスは、粗優先順位グループ４のプロセスとCPU５〜９を共有する必要はない。他方、密優先順位グループ１のプロセスのラウンドロビン分散が、密優先順位グループ１に割り当てられたCPU群を使い果たす（すなわち、CPU５〜９を使い果たし、CPU０への折り返しを開始する）まで、密優先順位グループ１に関連付けられたプロセスは、粗優先順位グループ４のプロセスとCPUを共有する必要はない。換言すると、密優先順位グループ１のプロセスは、CPUの共有が必要になる前に、その使用資格の比率（５０％）までCPU５〜９に分散することができる。実施例Ａでは、密優先順位グループ１には５つのプロセスしかなく、密優先順位グループ１のプロセスのラウンドロビン分散は、CPU０へ折り返さないので、密優先順位グループ１のプロセスによる共有は回避される。
【００４３】
図３のオペレーションは、本明細書の実施例Ａを参照することにより、最もよく理解することができる。実施例Ａに示すように、最初に、密共有（rich_share）＝０および上限（upper_bound）＝９に設定される（ブロック３０２）。続いて、図３は、ソートされた一覧において最高序列の優先順位グループから開始して、すべての優先順位グループが使い果たされるまで、各優先順位グループを順に巡る（ブロック３０２、ブロック３０４、およびブロック３０６）。考慮中の各優先順位グループについて、図３は、変数「積（product）」および変数「SHARES」を使用して、その優先順位グループが密であるか、粗であるかを判定する。優先順位グループ１〜４の判定は、実施例Ａに示されている。実施例Ａでは、優先順位グループ１、優先順位グループ２、および優先順位グループ３が密優先順位グループと判定され、優先順位グループ４が粗優先順位グループと判定される。
【００４４】
変数LASTRESOURCE（優先順位グループ＃）（最後のリソース）は、ラウンドロビン分散方式に従って優先順位グループのプロセスを分散する開始CPUを追跡する。密優先順位グループ１のLASTRESOURCE（優先順位グループ１）の値の計算、密優先順位グループ２のLASTRESOURCE（優先順位グループ２）の値の計算、および密優先順位グループ３のLASTRESOURCE（優先順位グループ３）の値の計算は、ブロック３１８およびブロック３２０ならびに実施例Ａに示されている。実施例Ａに示すように、密優先順位グループ１は、CPU５でそのラウンドロビン分散を開始し、密優先順位グループ２は、CPU１でそのラウンドロビン分散を開始し、密優先順位グループ３は、CPU０でそのラウンドロビン分散を開始する。
【００４５】
粗優先順位グループ４のLASTRESOURCE（優先順位グループ４）の値の計算は、ブロック３１２およびブロック３２０に示されている。実施例Ａでは、グループ４は、CPU０を共有する。一般に、粗優先順位グループは、最適適合パラダイムを使用して、残りのCPUに適合することができる。この残りのCPUには、最低順位の密優先順位グループに割り当てられたCPUであって、部分的に利用される任意のCPUが含まれる。したがって、最高序列の粗優先順位グループは、密優先順位グループへの割り当て後に残っているCPU（もしあれば）の中で負荷の最も低いCPUで、そのプロセスのそのラウンドロビン分散を開始するように割り当てられる。そして、次に高順位の粗優先順位グループは、最高序列の粗優先順位グループへの最初の割り当て後に残っているCPUの中で次に負荷の低いCPUで、そのプロセスのそのラウンドロビン分散を開始するように割り当てられる。以下同様である。その結果の分散は、実施例Ａの表２に示されている。グループに対する真の最適適合アルゴリズムが、より正確なものとなり得るが、より複雑でもあり、時間がかかる。本発明者らのアプローチに関連した誤差は、十分小さく（最悪の場合で、１つのCPUの半分の作業量）、本発明者らが処理しなければならないグループが多くなるほど、本発明者らの近似は良くなる。また、より悪い場合の誤差は、平均的なCPUによって行われる仕事量に基づいているので、誤差の量も、CPUが追加されるごとに低下する。
【００４６】
図４は、本発明の一実施の形態による、専用CPUを作成する主要なステップを示している。本発明は、過去の分散のアンバランスを是正するために、分散アルゴリズムの前回の実行からの性能データの形のフィードバックデータを使用して、CPUを考慮中の特定の優先順位グループの専用にする必要があるかどうか、および、必要があるならば、どれだけのCPUを専用にする必要があるかを判定することを思い出すべきである（図２参照）。高いレベルでは、図４は、（図２によって決定された）専用CPUを必要とする各優先順位グループについて、１＋LASTRESOURCE（優先順位グループ＃）であるCPUから開始する専用CPUを指定し、専用CPUの個数が、図１のステップ１０８および図２で先に確認された専用CPUの所望の個数と等しくなるまで、後続のCPUを、専用CPUとして指定し続ける。優先順位グループに割り当てられたCPU群の最初のCPU（例えば、優先順位グループ１のCPU５、優先順位グループ２のCPU１など）は、共有されることがあるので、最初の専用CPUは、１＋LASTRESOURCE（優先順位グループ＃）になるように設定される。
【００４７】
したがって、実施例Ａに関しては、優先順位グループ１が、分散アルゴリズムの最初の実行からその予想された使用資格を達成しなかったので、図２は、その優先順位グループ１が、アルゴリズムの２番目の実行で、４つの専用CPUを必要とすると判定する。この情報が使用され、２番目の実行において、図４のステップを使用して、CPU６、CPU７、CPU８、およびCPU９が優先順位グループ１専用になる（実施例Ａの２番目の実行の議論および実施例Ａの表４を参照）。
【００４８】
図５は、本発明の一実施形態による、優先順位グループのプロセスをCPU間に分散する主要なステップを示している。この分散は、図１のDISTRIBUTE  BLOCK１１８と同じである。図５では、すべてのプロセスが処理されるまで（ブロック５０２、ブロック５０４、およびブロック５０６）、プロセスが直線的に処理される。各プロセスについて、関連付けられた優先順位グループに対して次に割り当てられるCPU＃だけでなく、その関連付けられた優先順位グループも確認される（ブロック５０８）。ブロック５１０は、他の優先順位グループ専用のすべてのCPUを飛ばす。ブロック５１２は、割り当てを実際に実行し、またブロック５１４は、考慮中の優先順位グループに対して次に割り当てられるCPUを更新する。ブロック５１０およびブロック５１４のモジュラス演算（「ｍｏｄ  リソースカウント」）は、すべてのCPUが、ラウンドロビン分散中に使い果たされた場合に、次のCPUが、再び１番目のCPU（すなわちCPU０）になることを保証することに留意されたい。したがって、密優先順位グループ１は、CPU５から開始し、その５つのプロセスをCPU５〜９間に分散する。密優先順位グループ２は、CPU１から開始し、その４つのプロセスをCPU１〜４間に分散する。密優先順位グループ３は、CPU０から開始し、その１つのプロセスをCPU０に分散する。粗優先順位グループ４は、CPU０から開始し、その１０個のプロセスをCPU１〜９間にラウンドロビン形式で分散する。
【００４９】
上述したように、スケジューリングのグローバルロックが、図５の分散プロセスの継続期間中に作動する。グローバルロックは、システム性能全体を劣化させる可能性を有するので、できるだけ効率的な分散プロセスを有する必要がある。最善の可能な適合として、すべてのプロセスは、優先順位グループによって分割される必要があるが、優先順位グループは、余裕のない空間および時間のオーバヘッドである。このような場合に、プロセスおよび本発明者らの割り当て計画の全体にわたる第２の工程が、次に必要とされる。このアルゴリズムは、非常に良い適合を１つの工程および最小の時間で与える。アルゴリズムはラウンドロビン技法を組み込むので、本発明者らが、CPUよりも多くのプロセスを各優先順位グループに有するいかなる場合（オーバーコミット（over-committed））にも、本発明者らは、修正されていないラウンドロビンと同じ理想的なバランスを達成する。本発明者らが、全体的にアンダーコミットであり、各優先順位グループが、アルゴリズムの使用資格を達成するのに必要なプロセスと全く同数のプロセス（またはそれより少ないプロセス）を有する、という全く正反対の場合にも、このアルゴリズムは理想に到達する。これら一般的な両極端の中間にあるいかなる点においても、このアルゴリズムは、必要に応じて適合できる良好な妥協点を提供する。
【００５０】
例Ｂは、粗優先順位グループが含まれていない場合にも、分散アルゴリズムが、良好な結果をもたらすことを示すために本明細書に含まれる。
【００５１】
図６は、本発明の一実施形態による、新しくフォークされたプロセスの処理に伴う主要なステップを示している。従来技術で行われているように、新しくフォークされたプロセスを、親のプロセスと同じCPUに自動的に割り当てる代わりに、本発明は、新しくフォークされたプロセスを、親の優先順位グループのまさに別のプロセスとして取り扱う。そして、本発明は、分散アルゴリズムの前回の実行によって作成された同じ分散ロードマップを使用して、この新しくフォークされたプロセスを同じラウンドロビン形式でCPUにわたって分散する。換言すると、新しくフォークされたプロセスは、優先順位グループのプロセスの一覧に追加され、あたかも最初から存在したかのように分散される。従来技術の場合に、このように、プロセスの増加は、この従来技術の場合よりもCPUにわたって均等に分散され、フォークされたプロセスは、親プロセスを実行しているCPUに単に積み重ねられる。
【００５２】
上述から理解できるように、本発明は、各CPUの純粋なプロセス数に基づく分散を含むものから、各CPUの作業負荷を考慮に入れるものへとパラダイムをシフトする。本発明は、各CPUが、作業分散目的のために１つのCPU分の作業を有することを保証する（図３および説明を参照）。このパラダイムシフトの結果、生のプロセス数および優先順位グループの双方を同時にバランスさせる能力が得られ、性能および公平性の双方の制約が満たされる。真に最適化されたスケジューラに対して、従来技術は、優先順位グループ数＊プロセス数＊リソース数に比例した計算および空間を必要とする。これは指数関数的に増加する。この断面的な視点へと変更することにより、複雑度を、優先順位グループ数＋プロセス数＋リソース数により近いものへと根本的に削減している。また、このモデルは、CPUの親和性を促進することにより、性能をも改善し、システムで行われるプロセス移動の総数を削減する。
【００５３】
さらに、本発明は、有利なことに、フィードバックメカニズムを含み、このフィードバックメカニズムにおいて、分散アルゴリズムの前回の実行から得られた性能データ（例えば、個々の優先順位グループの実際の使用資格比率など）が、分散アルゴリズムの現在の実行に使用されて、CPUが優先順位グループ専用になる。これにより、優先順位グループの実際の使用資格比率が、期待使用資格比率に近づけられる。
【００５４】
さらに、本発明は、有利なことに、フィードフォワードメカニズムを含み、このフィードフォワードメカニズムにより、是正措置を介入させることなく、さらに長い期間中、バランスを維持するために、同じ分散ポリシーを、新しくフォークされたプロセスの処理に使用することが可能になる。
【００５５】
相対的な優先順位付け（例えば、使用資格比率など）に基づく分散ロードマップまたはポリシーを作成し、それらの分散ロードマップまたはポリシーに従ってプロセスをリソース（例えばCPUなど）に分散することにより、本発明は、優先順位グループの相対的にスケジューリングしての使用を予想された値にかなり近くで行い続ける。仮に、ＯＳが、介入期間中に、容認できる実際の比率を達成するために補償を行う必要があったとしても、その必要はほとんどない。ほとんど場合、分散のみを介して達成された結果は、容認できる範囲内にすでに存在し得るので、ＯＳが、コストの要する複雑な補償方式（例えばクレジット／デビット方式など）を実行して、公平性を保証することは不要である。したがって、プロセスによるリソースの公平な共有を保証することに伴う全体のオーバヘッドは、ほぼ削減される。
【００５６】
より重要なこととして、本発明は、多数のリソース（例えばCPUなど）および多数の優先順位グループを有するシステムへの高い拡張性を有する。実際に、リソース数および／または優先順位グループ数が増加するにつれて、独創的分散技法を使用して達成される公平性は向上する。例Ｃは、例Ａと比較して、多数の優先順位グループを含む場合に達成される結果を示している。優先順位グループ数が増加すると、結果が改善されていることに留意されたい。先に説明したように、これは、グループが多くなることで、各CPUに対する適合がより良好になり、各CPUが正確に１つのCPUで行うはずの作業を担当する、という事実に起因する。本発明は、リソースの増加、プロセスの増加、および優先順位グループの増加に対して、公平性および性能を改善および維持するように設計され、基本的な場合に対しても、同様に最低限のことを行うので、この発明は従来技術よりも優れている。
【実施例】
【００５７】
［実施例Ａ］
本発明者らは、共有されるリソースの組を代表して、１０個のCPUを有するコンピュータシステムを有すると仮定する。
【００５８】
リソースカウント（resource_count）＝１０
連続番号（sequence number）＝１
【表１】
2004199674.tif 000003
【００５９】
＜最初の実行＞
図１（１００〜１１０）を通過する。
【００６０】
SHARES（共有）＝１００
ＬＯＡＤ［０〜９］（負荷）＝０
構成が変更されていないものと仮定する。これは、最初の通過であるので、次の繰り返しまで、FEEDBACK（フィードバック）を無視する。
【００６１】
（１１２）で図３に移動する。
【００６２】
密共有（rich_shares）＝０
上限（upperbound）＝９
Ｇ＝グループ１
積（product）＝５００
１００以上のものはどれか（which is >=100）
密共有＝５００
オフセット（offset）＝５
上限＝５（したがって、CPU５、６、７、８、９がグループ１の対象になる。）
負荷［５］＝１００
LASTRESOURCE（１）＝５
Ｇ＝グループ２
積＝３５０
１００以上のものはどれか
密共有＝８５０
オフセット＝９
上限＝１（したがって、CPU１の一部、およびCPU２、３、４のすべてがグループ２の対象になる。）
負荷［１］＝５０
LASTRESOURCE（２）＝１
Ｇ＝グループ３
積＝１００
１００以上のものはどれか
密共有＝９５０
オフセット＝１０
上限＝０
負荷［０］＝５０
LASTRESOURCE（３）＝０
Ｇ＝グループ４
積＝５０
本発明者らの最初の粗優先順位グループ
０から０まで探索し、最少の負荷を有するCPUは、５０の負荷を有するCPU０である。負荷［０］＝１００、選択（choice）＝０
LASTRESOURCE（４）＝０
グループはこれ以上存在しないので、図１に戻る。
【００６３】
（１１４）CPUSNEEDED（必要とされるCPU）は、すべてゼロであるので、本発明者らは、CREATE  DEDICATED（専用CPU作成）を飛ばすことができる。
【００６４】
（１１８）DISTRIBUTION（分散）は、表２に示される通りである。
【表２】
2004199674.tif 000004
【００６５】
たとえ分離キューを有していても、スケジューリングアルゴリズムの最も単純なもの、例えば、ＯＳが、単に各CPUの各ローカルキューを検査し、その優先順位グループの使用資格に比例した各プロセス時間を与えるようなもの、を使用する場合には、使用資格は表３に示すように達成される。CPU９に関して、例えば、優先順位グループ１のプロセスに認められる時間量は、優先順位４のプロセスに認められる時間量の１０倍である（優先順位グループ１の５０％の使用資格に対して、優先順位グループ４の５％の使用資格）。
【表３】
2004199674.tif 000005
【００６６】
＜２回目の実行＞
グループ１は、その使用資格を満たさなかったので、図２は、CPUSNEEDED（１）＝４を作成する。一方、それ以外のすべてのグループのCPUSNEEDEDは、０のままである。図３から、LASTRESOURCE配列は、以前と同じ結果になる。しかしながら、本発明者らは、LASTRESOURCE（１）＋１で開始する４つのCPUを必要とするので，CPU６、CPU７、CPU８およびCPU９が、図４のオペレーションによるDEDICATED［６〜９］＝１の設定により、グループ１専用になる。
【００６７】
次のDISTRIBUTION（分散）（１１８）が達成される。
【表４】
2004199674.tif 000006
【００６８】
スケジューリングの最も基本的なアルゴリズムを使用すると、２回目のスケジューリングから達成される比率は、次のようになる。
【表５】
2004199674.tif 000007
【００６９】
これは、ＯＳからの積極的でコストを要する介入を行うことなく、より一層近づいている。実際の近づけるものを持ってくる必要がある場合、それは、細かなポリシーの部分に対して最小の努力を追加するにより行うことができる。
【００７０】
［実施例Ｂ］
実施例Ｂは、すべての優先順位グループを密にできることを示す例である。再び、共有される１０個のCPUが存在するものと仮定する。
【表６】
2004199674.tif 000008
【００７１】
アンダーコミット、すなわちCPUよりもプロセスが少ない一般的な場合を仮定すると、現在、最大のグループは、自己用にブロックオフされる最大の余裕を暗に有する。一方、過負荷の場合、すなわちCPUよりもプロセスが多い場合には、分散は、最初の少数のCPUが過負荷になる傾向がほぼ削減される点を除いて、単純なラウンドロビンと同様である。
【００７２】
［実施例Ｃ］
実施例Ｃでは、多数の優先順位グループが存在し、それらの多くは粗である。
【表７】
2004199674.tif 000009
【００７３】
この場合も、総SHARES＝１００
最初の３つのグループは、すべて密である。
【００７４】
グループ１はCPU７から開始し、CPU８およびCPU９をもその範囲に有する。負荷［７］＝１００
グループ２はCPU４から開始し、CPU５およびCPU６をも有する。負荷［４］＝５０
グループ３はCPU３から開始し、CPU４の他の半分を取得する。負荷［３］＝１００
これは、CPU０、CPU１およびCPU２を、７つの粗優先順位グループが分割するように残している。グループ４、グループ５およびグループ６は、それぞれ、最初の未使用のCPUを取得する。
【００７５】
LASTRESOURCE［４］＝０、負荷［０］＝８０
LASTRESOURCE［５］＝１、負荷［１］＝７０
LASTRESOURCE［６］＝０、負荷［２］＝５０
次に、本発明者らは共有を開始する。
【００７６】
LASTRESOURCE［７］＝２、負荷［２］＝５０＋４０＝９０
LASTRESOURCE［８］＝１、負荷［１］＝７０＋３０＝１００
LASTRESOURCE［９］＝０、負荷［１］＝８０＋２０＝１００
LASTRESOURCE［１０］＝２、負荷［２］＝９０＋１０＝１００
したがって、すべてのCPUが、正確に１つのCPU分の実行作業を有することが分かる。このようなことは、必ずしも当てはまるとは限らないが、このアルゴリズムは、グループが多くなりCPUが多くなるほど、より良く機能する傾向を有する。
【００７７】
単純なＯＳの分散によって達成される実際の使用資格は、表８に示される。
【表８】
2004199674.tif 000010
【００７８】
この発明を、いくつかの好ましい実施の形態の観点から説明してきたが、この発明の範囲内に入る変更形態、置換形態および均等物が存在する。例えば、CPUが、本明細書の例で例示的なリソースとして使用されてきたが、本発明は、任意のＯＳキューまたはユーザ空間キューに容易に適用される。また、本発明の方法および装置を実施する多くの代替的な方法が存在することにも留意すべきである。したがって、添付の特許請求は、本発明の真の精神および範囲内に入るようなすべての変更形態、置換形態および均等物を含むものとして解釈されることが意図される。
【図面の簡単な説明】
【００７９】
【図１】本発明の一実施形態による、新規の分散アルゴリズムの主要なステップ。
【図２】本発明の一実施形態による、優先順位グループの実際の使用資格をその期待使用資格に近づけるにあたり、必要とされる専用CPUの個数を決定する主要なステップ。
【図３】本発明の一実施形態による、優先順位グループが、そのプロセスのそのラウンドロビン分散を開始することができる開始CPUを各優先順位グループについて確認する主要なステップ。
【図４】本発明の一実施形態による、専用CPUを作成する主要なステップ。
【図５】本発明の一実施形態による、優先順位グループのプロセスをCPU間に分散する主要なステップ。
【図６】本発明の一実施形態による、新しくフォークされたプロセスの処理に伴う主要なステップ。
【図１】
2004199674.tif 000011
【図２】
2004199674.tif 000012
【図３】
2004199674.tif 000013
【図４】
2004199674.tif 000014
【図５】
2004199674.tif 000015
【図６】
2004199674.tif 000016