(57)【要約】【課題】仮想共有コンピュータ環境において取得すべきプロセッサを選択する方法を提供すること。【解決手段】この方法は、共有コンピュータ環境の最後に解放されたプロセッサを取得しようと試みる第１の選択フェーズを開始するステップと、第１の選択フェーズが最後に解放されたプロセッサの取得に失敗した場合に第２の選択フェーズを開始するステップとを含む。第２の選択フェーズはさらに、現在解放されているプロセッサに対するラウンドロビン選択プロセスを含む。【選択図】図４
2007172611.tif 000002
【特許請求の範囲】
【請求項１】
仮想共有コンピュータ環境で取得すべきプロセッサを選択する方法であって、
前記共有コンピュータ環境の最後に解放されたプロセッサを取得しようと試みる第１の選択フェーズを開始するステップと、
前記第１の選択フェーズが前記最後に解放されたプロセッサの取得に失敗した場合に第２の選択フェーズを開始するステップであって、前記第２の選択フェーズが、現在解放されているプロセッサに対するラウンドロビン選択処理をさらに含む、ステップと
を含む方法。
【請求項２】
前記第１の選択フェーズが、
前記最後に解放されたプロセッサの識別情報を追跡するために割り当てられた第１の変数がＮＵＬＬ値であるかどうかを判定するステップと、
前記第１の変数の値がＮＵＬＬである場合に、前記第２の選択フェーズを開始するステップと、
前記第１の変数の値がＮＵＬＬでない場合に、最後に取得されたプロセッサの識別を追跡するために割り当てられた第２の変数の値に前記第１の変数の値を設定し、その後、前記第１の変数の値にＮＵＬＬを設定するとともに、前記第２の変数の新しい値に対応するプロセッサを求める、ハイパーバイザへの取得要求を呼び出すステップと
をさらに含む、請求項１に記載の方法。
【請求項３】
前記第１の選択フェーズが、前記共有コンピュータ環境における少なくとも１つのプロセッサの低使用率状態から高使用率状態への遷移を検出した後で開始される、請求項２に記載の方法。
【請求項４】
所与のプロセッサの高使用率状態から低使用率状態への遷移を検出したときに、前記第１の変数の値に前記共有コンピュータ環境内の前記所与のプロセッサの識別情報を設定するステップであって、前記第１の変数が前記共有コンピュータ環境における各プロセッサに関する共有変数を含む、ステップと、
前記所与のプロセッサが解放されたことを反映するために、各プロセッサごとに使用される第３の変数を設定するステップと、
前記所与のプロセッサを解放するための、前記ハイパーバイザへの解放要求を呼び出すステップと
をさらに含む、請求項２に記載の方法。
【請求項５】
前記第２の選択フェーズが、
前記第２の変数の値が前記共有コンピュータ環境内のプロセッサの総数の最後のプロセッサに相当しているかどうかを判定し、相当している場合には、前記ラウンドロビン・プロセスにおいて求められる次のプロセッサに対応するために前記第２の変数の値をリセットすることによって更新し、相当していない場合には、前記第２の変数の値を１ずつインクリメントすることによって更新するステップと、
前記第２の変数の前記更新された値に対応するプロセッサが、解放されたプロセッサのリスト上に現在存在しているかどうかを判定するステップと、
前記第２の変数の前記更新された値に対応する前記プロセッサを求める、ハイパーバイザへの取得要求を呼び出すステップと
をさらに含む、請求項２に記載の方法。
【請求項６】
前記第２の変数の前記更新された値に対応する前記プロセッサが、解放されたプロセッサの前記リスト上に現在存在していない場合は、前記第２の選択フェーズを繰り返すステップをさらに含む、請求項５に記載の方法。
【請求項７】
特に指定されたプロセッサをバイパスするような方法で前記第２の変数のリセットを実行するステップをさらに含む、請求項６に記載の方法。
【請求項８】
前記特に指定されたプロセッサを、解放されたプロセッサの前記リストに載せることから除外するステップをさらに含む、請求項７に記載の方法。
【請求項９】
仮想共有コンピュータ環境で取得すべきプロセッサを選択するためのマシン可読のコンピュータ・プログラム・コードと、
コンピュータに方法を実行させる命令を含むプログラムであって、
前記共有コンピュータ環境の最後に解放されたプロセッサを取得しようと試みる第１の選択フェーズを開始するステップと、
前記第１の選択フェーズが前記最後に解放されたプロセッサの取得に失敗した場合に第２の選択フェーズを開始するステップであって、前記第２の選択フェーズが、現在解放されているプロセッサに対するラウンドロビン選択処理をさらに含むステップと
をコンピュータに実行させるプログラム。
【請求項１０】
前記第１の選択フェーズが、
前記最後に解放されたプロセッサの識別情報を追跡するために割り当てられた第１の変数がＮＵＬＬ値であるかどうかを判定するステップと、
前記第１の変数の値がＮＵＬＬである場合に、前記第２の選択フェーズを開始するステップと、
前記第１の変数の値がＮＵＬＬでない場合に、最後に取得されたプロセッサの識別を追跡するために割り当てられた第２の変数の値に前記第１の変数の値を設定し、その後、前記第１の変数の値をＮＵＬＬに設定するとともに、前記第２の変数の新しい値に対応するプロセッサを求める、ハイパーバイザへの取得要求を呼び出すステップと
をさらに含む、請求項９に記載のプログラム。
【請求項１１】
前記第１の選択フェーズが、前記共有コンピュータ環境における少なくとも１つのプロセッサの低使用率状態から高使用率状態への遷移を検出した後で開始される、請求項１０に記載のプログラム。
【請求項１２】
所与のプロセッサの高使用率状態から低使用率状態への遷移を検出したときに、前記第１の変数の値に前記共有コンピュータ環境内の前記所与のプロセッサの識別情報を設定するステップであって、前記第１の変数が前記共有コンピュータ環境における各プロセッサに関する共有変数を含む、ステップと、
前記所与のプロセッサが解放されたことを反映するために、各プロセッサごとに使用される第３の変数を設定するステップと、
前記所与のプロセッサを解放するための、前記ハイパーバイザへの解放要求を呼び出すステップと
をさらに含む、請求項１０に記載のプログラム。
【請求項１３】
前記第２の選択フェーズが、
前記第２の変数の値が前記共有コンピュータ環境内のプロセッサの総数の最後のプロセッサに相当しているかどうかを判定し、相当している場合には、前記ラウンドロビン・プロセスにおいて求められる次のプロセッサに対応するために前記第２の変数の値をリセットすることによって更新し、相当していない場合には、前記第２の変数の値を１ずつインクリメントすることによって更新するステップと、
前記第２の変数の前記更新された値に対応するプロセッサが、解放されたプロセッサのリスト上に現在存在しているかどうかを判定するステップと、
前記第２の変数の前記更新された値に対応する前記プロセッサを求める、ハイパーバイザへの取得要求を呼び出すステップと
をさらに含む、請求項１０に記載のプログラム。
【請求項１４】
前記第２の変数の前記更新された値に対応する前記プロセッサが、解放されたプロセッサの前記リスト上に現在存在していない場合は、前記第２の選択フェーズを繰り返すステップをさらに含む、請求項１３に記載のプログラム。
【請求項１５】
特に指定されたプロセッサをバイパスするような方法で前記第２の変数のリセットを実行するステップをさらに含む、請求項１４に記載のプログラム。
【請求項１６】
前記特に指定されたプロセッサを、解放されたプロセッサの前記リストに載せることから除外するステップをさらに含む、請求項１５に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に、コンピュータ・システムの論理区分化に関し、より詳細には、仮想共有環境におけるプロセッサの有効利用法に関する。
【背景技術】
【０００２】
複数の物理プロセッサと論理リソース区分化機能を備えた単一の物理コンピュータ・システム（例えば、米国特許第４８４３５４１号）においては、その物理プロセッサ上で２つ以上のオペレーティング・システム（ＯＳ）を同時に実行させることが可能である。論理パーティションによって使用可能なプロセッサの使用法を規定するとき、一般に２つの上位レベル構成が存在する。すなわち、専用と共有である。専用プロセッサを使用するパーティションとは、物理プロセッサが個々のパーティションの専用であることを意味する。言い換えると、専用物理プロセッサは、１つの特定の論理パーティションの処理を行う。図１は、専用パーティションを特徴とする単一のシステム構成を示す。
【０００３】
一方、共有プロセッサを使用するパーティションとは、物理プロセッサを部分プロセッサ単位で個々のパーティションに割り当てることができることを意味する。このような共有パーティション構成２００の一例が図２に示されている。この図では、コンピュータ・システムには４つの物理プロセッサしか存在しないが、この２つの論理パーティションは、合わせて計５つの（完全な物理プロセッサを様々な割合で含む）論理プロセッサを有する。
【０００４】
専用構成または共有構成のどちらにおいても、パーティションはプロセッサ（共有の場合は部分プロセッサ）の最小数とプロセッサの最大数を定義することができる。ただし、定義された各パーティションの各最小値（部分プロセッサ単位を含む）の和は、実際の物理プロセッサの数を超えることはできない。例えば、図１の専用構成では、何らかの論理リソース区分化機能に基づいて、パーティション１は最小で３つの（完全な）プロセッサを有するように定義されるが、このパーティションは最大で４つを有することができる（その場合、４番目のプロセッサはパーティション２がアクティブでない場合のみ使用可能になる）。さらに、パーティション２は最小で１つの（完全な）プロセッサを有するように定義されるが、パーティション１がアクティブでない場合は、最大で４つの（完全な）プロセッサを有するように定義することができる。
【０００５】
図２の共有構成に関しても、同じ原理が適用できる。例えば、パーティション１は最小で３つの論理プロセッサ（そのうちの少なくとも１つは、「完全な」プロセッサには相当しない）を含むが、パーティション２は最小で２つの論理プロセッサ（そのうちの少なくとも１つは完全なプロセッサには相当しない）を含む。そうではなく、各パーティションが完全なプロセッサだけから構成される場合は、システムには４つの完全な物理プロセッサしか含まれないので、この２つのパーティションがコンピュータ・システム上で共存することはできない。
【０００６】
図１および図２のどちらにも、論理区分化を物理リソースから分離する層が存在する。この層のことを、以下で「ハイパーバイザ（hypervisor）」と呼ぶ。当技術分野で知られているように、ハイパーバイザ層は、コンピュータ・システム内に存在する任意の数の様々な種類のリソースの仮想化を提供するとともに、様々な管理機能を提供することができる。本明細書で使用する「ハイパーバイザ」という用語は、具体的には使用可能な物理プロセッサの仮想化と区分化を意味する。
【０００７】
図２に示されるような共有環境で動作するとき、ハイパーバイザおよびシステムそれ自体によって、各パーティション内で動作する各ＯＳに（コンピュータ・システムの詳細に応じて）プログラミング・システム・サービスを提供することができる。このようなシステム・サービスを用いることで、使用可能なプロセッサの取得と解放が可能になる。個々のＯＳの詳細な要件に応じて、各ＯＳは、これらの公開されたシステム・サービスを様々な方法で使用することができる。例えば、厳密な応答時間設計制約を含むＯＳは、自発的にプロセッサを解放することが許されないことがあり、したがって、常にハイパーバイザを利用して、パーティション定義だけに基づいてプロセッサを取り除くことになる。このような制約は、個々のＯＳインスタンスのためには意味を持つが、動作中のＯＳインスタンス全体にわたるコンピュータ・システム全体の使用可能な資源の有効な利用は保証しない。
【特許文献１】米国特許第４８４３５４１号
【発明の開示】
【発明が解決しようとする課題】
【０００８】
この問題に対処するために、いくつかのＯＳインスタンスは、公開されたシステム・サービスを使用して、（処理機能の）低使用率が検出されたときにはプロセッサを解放しようと試み、低使用率から高使用率への遷移が検出されたときにはプロセッサを取得しようと試みる。個々のＯＳの詳細な内部では、低使用率および低使用率から高使用率への遷移がどのように検出されるかについて指示されるはずであるが、以下では、それらの機構の詳細については論じない。取得すべき特定のプロセッサを選択するための、より一般的な方法の１つは、単一の特定のプロセッサを選択するのではなく、単純にシステム・プロセッサの全てを選択して、それらの各々を取得しようと試みることである。しかし、要求元ＯＳによるハイパーバイザの使用が増大するので、場合によっては、この方法は、単にハイパーバイザを使用してプロセッサの資源を管理する方法と比べて、実際にはより非効率な手法になり得る。さらに、この包括的な手法では、以前に取得された他のプロセッサが既にワークロードの処理を開始しているので、取得されたプロセッサのいくつかが、処理すべきアプリケーション・ワークロードなしでアクティブになる可能性もある。
【０００９】
他の可能な手法として、使用可能なプロセッサのリストを維持し、低使用率から高使用率への遷移が検出されたときはいつでも、ラウンドロビン手法を使用して次のプロセッサを選択し取得することがある。この手法は、使用可能なすべてのプロセッサを取得しようと試みる第１の手法に対してある程度の改善が示されるが、まだ理想的なものではない。なぜならば、基本的なラウンドロビン検索は、使用可能なプロセッサに関して一意の機能を提供するプロセッサを取得しようと試みることがあり、したがって取得の対象として適切でない選択になるからである。
【００１０】
したがって、仮想共有処理環境における低使用率から高使用率への遷移の後で、プロセッサをより効率的に選択することができれば望ましいであろう。
【課題を解決するための手段】
【００１１】
上で論じた従来技術の欠点および欠陥は、仮想共有コンピュータ環境で取得すべきプロセッサを選択する方法によって克服または軽減される。一例示的実施形態では、この方法は、共有コンピュータ環境の最後に解放されたプロセッサを取得しようと試みる第１の選択フェーズを開始するステップと、第１の選択フェーズが最後に解放されたプロセッサの取得に失敗した場合に、第２の選択フェーズを開始するステップとを含む。第２の選択フェーズはさらに、現在解放されているプロセッサに対するラウンドロビン選択処理を含む。
【００１２】
他の実施形態では、記憶媒体は、仮想共有コンピュータ環境において取得すべきプロセッサを選択するためのマシン可読コンピュータ・プログラム・コードと、コンピュータに方法を実行させるための命令とを含む。この方法はさらに、共有コンピュータ環境の最後に解放されたプロセッサを取得しようと試みる第１の選択フェーズを開始するステップと、第１の選択フェーズが最後に解放されたプロセッサの取得に失敗した場合に、第２の選択フェーズを開始するステップであって、第２の選択フェーズが現在解放されているプロセッサに対するラウンドロビン選択処理をさらに含む、ステップとを含む。
【００１３】
例示の図面を参照すると、いくつかの図面で、類似の要素には類似の番号が付されている。
【発明を実施するための最良の形態】
【００１４】
本明細書で開示されるのは、仮想共有環境で取得すべきプロセッサを効率的に選択する方法である。概説すると、この方法は２フェーズの選択処理を使用する。第１のフェーズは、最後に解放されたプロセッサ（すなわち、一番最近に解放されたプロセッサ）を再利用または取得しようと試みる。最後に解放されたプロセッサを選択して取得したときには、要求元ＯＳに関してまだ有効なデータを含む、取得されたプロセッサのキャッシュを取り出す最も高い可能性が存在する。共有環境内に存在する各ＯＳインスタンスが、その最後に解放したプロセッサを取得しようと最初に試みた場合は、ハイパーバイザ・オーバヘッドの減少とポジティブなキャッシュ効果の組み合せによりコンピュータ・システム全体での使用率が低下することになる。ハイパーバイザ使用率のこの低下により、結果としてアプリケーション・ワークロードを処理する能力を増大させることが可能になる。
【００１５】
最後に解放されたプロセッサの識別が確定できないか、またはそのプロセッサがもはや使用不能である場合には（以下でより詳細に説明するように）、次いで第２の選択フェーズを実行することができる。この第２のフェーズは、主に実装されたＯＳの個別の要件に基づく、改善された拡張可能なラウンドロビン方式によるプロセッサの選択を含む。このような２フェーズ方式に従ってプロセッサを選択することにより（すべてのプロセッサを取得しようと試みる方式、または単純な、拡張不能なラウンドロビンによる方式を選択した場合と異なり）、コンピュータ・システム全体の使用率の低減が達成される。
【００１６】
この時点で、本明細書で開示された例示的方法の実施形態が、特定のリソースの論理的な共有区分化を含むコンピュータ・システムにおけるプロセッサの（ホスト・オペレーティング・システムによる）効率的な選択および使用を対象とするものであり、低使用率状態および低使用率状態から高使用率状態への遷移を検出するために使用できる特定の機構の詳細に関するものではないことを理解されたい。言い換えれば、本発明のプロセッサ選択技法は、（処理リソースの）低使用率状態、高使用率状態、およびそれらの間の遷移を規定し区別するための、当技術分野における任意の許容し得る方法と組み合わせて使用することができる。
【００１７】
本明細書で提示した例示的実施形態では、開示された選択方法に対する参照として様々な変数およびサービスが定義される。これらの参照には、例えば、プロセッサ共有変数である「last_relinquished」や「last_acquired」が含まれる。所与のＯＳのlast_relinquished変数は、ハイパーバイザに解放された最後のプロセッサの識別子を格納するとともに、可能な値である[NULL,1,2,3,...n]を含むことができる。ただし、ｎは特定のＯＳインスタンスが動作している論理パーティションによって使用可能なプロセッサの総数である。同様に、所与のＯＳに対するlast_acquired変数は、以下で説明する選択方法によって取得された最後のプロセッサの識別子を格納する。この変数は、可能な値として[NULL,1,2,3,...n]を含むことができる。ただし、ｎは特定のＯＳインスタンスが動作している論理パーティションによって使用可能なプロセッサの数である。各プロセッサに対して、そのプロセッサが解放されているかどうかを識別するためのrelinquished_list変数を使用することもできる。例えば、relinquished_list[3] = 1の指示により、プロセッサ番号３が解放されていることを示すことができる。
【００１８】
さらに、例示的なハイパーバイザ・サービスは、「Acquire [n] 」および「Relinquish[n] 」を含む。Acquire [n]サービスは、入力[n]として、呼び出し元ＯＳインスタンスによって処理の再開を求められるプロセッサの識別子を取り込む。一方、Relinquish[n]サービスは、入力[n]として、呼び出し元ＯＳインスタンスによってハイパーバイザに解放されるプロセッサの識別子を取り込む。
【００１９】
この２フェーズ選択処理の詳細な説明の前に、図３は、最後に解放されたプロセッサを最初に識別し、確定するために実装することができる例示的な高使用率から低使用率への遷移時の処理を示すフローチャート３００である。やはり、プロセッサ・リソースの高使用率から低使用率への遷移を判定する個々の方法は本開示の主題ではなく、任意の数の許容し得る定義または基準に従って検出することができる。どのように検出されるかには無関係に、所与のプロセッサに対する高使用率から低使用率への遷移が実際に検出された後で、ブロック３０２に示されるように、共有変数「last_relinquished」はその特定のプロセッサの識別に対応する値に設定される。
【００２０】
次に、解放されたプロセッサのリスト上にそのプロセッサが現在存在していることを示すために、ブロック３０４に示されるように、解放されたプロセッサに対する変数「relinquish_list」は論理真の状態に設定される。特定のプロセッサをlast_relinquishedの受け入れ可能な値のリストに含めることを不可能にすることによって、またそれらのプロセッサを解放リスト上に含めることを不可能にすることによって、個々のオペレーティング・システムに応じて、それらのプロセッサを選択処理から除外することができることに留意されたい（例えば、プロセッサ「ｘ」が選択処理から除外される場合は、あらゆる場合に、値「ｘ」は変数last_relinquishedに対して有効でなくなり、relinquished_list[x] = 0となる）。この機能は、選択処理の拡張機能と考えることができる。しかし、そのＯＳのプロセッサを解放することができると想定すると、ＯＳは、last_relinquishedおよびrelinquished_list変数を設定した後で、ブロック３０６に示されるように、そのプロセッサを求める、ハイパーバイザへの解放要求を呼び出す。
【００２１】
次に、図４および図５を概略で参照すると、２フェーズ選択処理は、システム内の所与のプロセッサに対する低使用率状態から高使用率状態への遷移が検出されたときに開始される。この場合もやはり、選択処理は一般に、last_relinquishedのプロセッサを使用（取得）しようと試みる第１のフェーズを含み、このフェーズが不成功の場合に、ＯＳ個別のラウンドロビン手法を使用する第２のフェーズが開始される。第１のフェーズの動作は、図４のフローチャート４００によって示される。低使用率状態から高使用率状態への遷移の検出（この検出の詳細もやはり、本開示の主題ではない）に続いて、判定ブロック４０２で、last_relinquishedの値がＮＵＬＬであるかどうかが判定される。言い換えれば、判定ブロックのこの照会は、最後に解放されたプロセッサの識別を確定しようと試みるものである。last_relinquishedの値= ＮＵＬＬの場合は、第１の好ましいシナリオ（すなわち、最後に解放されたプロセッサを取得すること）に失敗したことになるので、処理はブロック４０４で示された第２のフェーズに進み、第１のフェーズは終了する。このような状況は、例えば、システム電源投入の後で、いずれかのプロセッサが解放される時より前の、最初の低使用率状態から高使用率状態への遷移に続いて生じる可能性がある。最後に解放されたプロセッサを識別することに失敗する（すなわち、last_relinquished= ＮＵＬＬ）他の可能性については、以下で説明する。
【００２２】
一方、低使用率から高使用率への遷移の検出の後でlast_relinquishedの値がＮＵＬＬでないと想定すると、第１のフェーズはブロック４０６に進み、そのブロックで、変数last_acquiredはlast_relinquishedの現在の（非ＮＵＬＬ）値に設定される。次に、ブロック４０８で、変数last_relinquishedはＮＵＬＬに設定される。したがって、第１のフェーズが最後に解放されたプロセッサを取得しようと試みた後で、ハイパーバイザが最終的にその取得要求を許諾したかどうかにかかわらず、そのプロセッサはもはや最後に解放されたプロセッサとは見なされない。次に、ＯＳは、ブロック４１０に示されるように、そのプロセッサを求める、ハイパーバイザへの取得要求を呼び出す。この例では、第１のフェーズが成功裏に実行される（すなわち、最後に解放されたプロセッサが識別され、要求される）ので、処理のこの繰り返しにおいて第２のフェーズが開始されることはない。
【００２３】
プロセッサ共有変数last_relinquishedは、ブロック４０８でＮＵＬＬに設定されるので、したがって、次に低使用率から高使用率への遷移が検出されたときに、この値がまだＮＵＬＬのままであることは起こり得る。すなわち、低使用率から高使用率への遷移に関する次の検出に際して、その間に高使用率から低使用率への遷移が検出されておらず（図３）、したがって変数last_relinquishedが非ＮＵＬＬ値に設定されていない場合である。
【００２４】
last_relinquished変数は、ワンディープ・キュー（one-deepqueue）と見なすことができる。低使用率状態が検出されたプロセッサに対するRelinquish []要求を発行する直前に、解放されるプロセッサの識別子は、図３から分かるように、（ブロックコンカレント動作を用いて）last_relinquished変数に格納される。あるプロセッサが、（ハイパーバイザへのAcquire[]要求、または単にハイパーバイザの自発的な要求によって）特定のＯＳインスタンスのために処理を再開するときは、last_relinquished変数をチェックし、その変数が再開するプロセッサに等しい場合は、last_relinquished変数にＮＵＬＬを格納し、そのプロセッサが処理を再開したこと、およびそのプロセッサに関するAcquire[]サービスを他のプロセッサが使用すべきでないことを他の動作中のプロセッサに指示する。
【００２５】
次に図５のフローチャート５００を参照すると、この図では、低使用率から高使用率への遷移検出に続くlast_relinquished = ＮＵＬＬの結果として第２のフェーズが開始され、拡張可能なラウンドロビン・ルーチンを実行して、relinquished_listの使用可能なプロセッサから１つのプロセッサを選択し、ハイパーバイザのAcquire[]サービスを呼び出す。従来のラウンドロビン・ルーチンでは、単純に、第２のフェーズへの最初のエントリ時には第１のプロセッサで始め、その後の、フェーズ２への次のエントリ時には第２のプロセッサで始めることになる。このパターンは、プロセッサのリストが終了するまで続けられ、その時点で、第１のプロセッサが再度選択され、ラウンドロビンが継続される。
【００２６】
本実施形態では、第２のフェーズは判定ブロック５０２で始まり、そのブロックで、最後に取得されたプロセッサの現在の位置がプロセッサ・リストの終わりかどうかがチェックされる。拡張可能なラウンドロビン・フェーズの適切な動作のために、ブロックコンカレント動作を使用して現在の位置が常に把握される。したがって、last_acquired + 1がプロセッサの総数より大きい場合は、この変数はリストの最後にあり、ブロック５０４に示されるように、last_acquiredの値はゼロにリセットされる。第２のフェーズの拡張可能な態様は、ＯＳの個別の特性に応じて、last_acquired変数のリセットを（リストの先頭ではなく）特定のプロセッサにバイアスされるように調整することができる。例えば、ラウンドロビン・フェーズの一実施形態では、システムが真のＳＭＰ（Symmetric MultipleProcessor＝対称型マルチプロセッサ）でない（すなわち、ある種のシステム機能は特定のプロセッサ上で実行しなければならない）ときは、第１のプロセッサをラウンドロビンから除外することができる。さらに、他の実施形態では、第１のフェーズが、取得すべき最後に解放されたプロセッサの選択に成功したときはいつでも、現在のラウンドロビン位置を名目上の開始ラウンドロビン位置にリセットすることができる。さらに、ラウンドロビン処理はまた、特定の定義されたシステム・イベントに基づいて終了および再始動することもできる。
【００２７】
現在のラウンドロビン位置がリストの終わりでない場合は、ブロック５０６に示されるように、代わりにlast_acquired値は１ずつインクリメントされる。次いで、フェーズは判定ブロック５０８に進み、ラウンドロビンによって識別された現在のブロックが、実際に解放リスト上に存在するかどうかが判定される。すなわち、ブロック５０８では、last_acquired変数によって現在指定されている特定のプロセッサに対するrelinquished_listの値がゼロに等しいかどうかがチェックされる。ゼロの場合は、このプロセッサが現在解放リスト上に存在しないことを意味する。この場合には、ラウンドロビン・フェーズはブロック５０２に戻って、さらにlast_acquiredをリセットまたはインクリメント、あるいはその両方を実施する。このフェーズの他の拡張可能な態様では、特定のプロセッサを、そのプロセッサのrelinquished_list変数を永久にゼロに等しくなるように指定することによって、解放リストから実際に除去することができる。最後に、last_acquiredの現在の値によって識別されたプロセッサが解放リスト上に存在すると判定された場合は、ブロック５１０で、そのプロセッサのrelinquished_list変数がゼロに設定され（解放リストからそのプロセッサを実際に除去し）、次いで、第２のフェーズはブロック５１２に進み、そのブロックで、ＯＳは、そのプロセッサを求めるハイパーバイザへの取得要求を呼び出す。
【００２８】
したがって、上記のことを考慮すると、本方法の諸実施形態は、コンピュータまたはコントローラに実装されたプロセス、およびそれらのプロセスを実行するための装置の形をとることができる。この開示は、フロッピ・ディスク、ＣＤ−ＲＯＭ、ハード・ドライブ、または他の任意のコンピュータ可読記憶媒体など、有形の媒体に実施された命令を含むコンピュータ・プログラム・コードの形で実施することもできる。コンピュータまたはコントローラによってコンピュータ・プログラム・コードがロードされ、実行されるとき、そのコンピュータは本発明を実施するための装置となる。この開示はまた、例えば、記憶媒体に格納され、コンピュータまたはコントローラによってロードまたは実行、あるいはその両方を実施されるか、それとも電気配線またはケーブルを介して、光ファイバを介して、あるいは電磁放射を介してなど、何らかの送信媒体を介して送信されるコンピュータ・プログラム・コードまたは信号の形で実施することもできる。コンピュータによってコンピュータ・プログラム・コードがロードされ、実行されるとき、そのコンピュータは本発明を実施するための装置となる。汎用マイクロプロセッサ上に実装されたとき、コンピュータ・プログラム・コード・セグメントは、そのマイクロプロセッサを特定の論理回路を生成するように構成する。実行可能な命令の技術的効果は、例えば、上述し、図３から図５に示した方法を実行することである。
【００２９】
本発明を１つまたは複数の好ましい実施形態を参照しながら説明してきたが、本発明の範囲を逸脱することなく様々な変更を実施し得ることおよびその諸要素を均等物で置き換え得ることは、当業者には理解されよう。さらに、特定の状況または材料を本発明の教示に適合させるために、本発明の本質的な範囲を逸脱することなく多くの修正形態を実施することができる。したがって、本発明は、本発明を実施するために考慮された最良の形態として開示された特定の実施形態に限定されるものではなく、添付の特許請求の範囲に含まれるあらゆる実施形態を含むものであることが意図される。
【図面の簡単な説明】
【００３０】
【図１】専用論理パーティションに割り当てられた処理リソースを有する、パーティション分割されたコンピュータ・システムの概略図である。
【図２】論理パーティションによって共有された処理リソースを有する、パーティション分割されたコンピュータ・システムの概略図である。
【図３】本発明の一実施形態による、最後に解放されたプロセッサを最初に識別し確定するために実装することができる、例示的な高使用率から低使用率への遷移時の処理を示すフローチャートである。
【図４】本発明の一実施形態による、最後に解放されたプロセッサを取得しようと試みる第１の選択フェーズを示すフローチャートである。
【図５】本発明の一実施形態による、最後に解放されたプロセッサが使用不能の場合に拡張可能なラウンドロビン選択処理を実行する、第２の選択フェーズを示すフローチャートである。
【図１】
2007172611.tif 000003
【図２】
2007172611.tif 000004
【図３】
2007172611.tif 000005
【図４】
2007172611.tif 000006
【図５】
2007172611.tif 000007