JP2007172611A - 方法、記憶媒体(仮想共有環境におけるプロセッサの有効利用法) - Google Patents
方法、記憶媒体(仮想共有環境におけるプロセッサの有効利用法) Download PDFInfo
- Publication number
- JP2007172611A JP2007172611A JP2006337642A JP2006337642A JP2007172611A JP 2007172611 A JP2007172611 A JP 2007172611A JP 2006337642 A JP2006337642 A JP 2006337642A JP 2006337642 A JP2006337642 A JP 2006337642A JP 2007172611 A JP2007172611 A JP 2007172611A
- Authority
- JP
- Japan
- Prior art keywords
- processor
- variable
- value
- selection phase
- last
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Hardware Redundancy (AREA)
Abstract
【課題】仮想共有コンピュータ環境において取得すべきプロセッサを選択する方法を提供すること。
【解決手段】この方法は、共有コンピュータ環境の最後に解放されたプロセッサを取得しようと試みる第1の選択フェーズを開始するステップと、第1の選択フェーズが最後に解放されたプロセッサの取得に失敗した場合に第2の選択フェーズを開始するステップとを含む。第2の選択フェーズはさらに、現在解放されているプロセッサに対するラウンドロビン選択プロセスを含む。
【選択図】図4
【解決手段】この方法は、共有コンピュータ環境の最後に解放されたプロセッサを取得しようと試みる第1の選択フェーズを開始するステップと、第1の選択フェーズが最後に解放されたプロセッサの取得に失敗した場合に第2の選択フェーズを開始するステップとを含む。第2の選択フェーズはさらに、現在解放されているプロセッサに対するラウンドロビン選択プロセスを含む。
【選択図】図4
Description
本発明は一般に、コンピュータ・システムの論理区分化に関し、より詳細には、仮想共有環境におけるプロセッサの有効利用法に関する。
複数の物理プロセッサと論理リソース区分化機能を備えた単一の物理コンピュータ・システム(例えば、米国特許第4843541号)においては、その物理プロセッサ上で2つ以上のオペレーティング・システム(OS)を同時に実行させることが可能である。論理パーティションによって使用可能なプロセッサの使用法を規定するとき、一般に2つの上位レベル構成が存在する。すなわち、専用と共有である。専用プロセッサを使用するパーティションとは、物理プロセッサが個々のパーティションの専用であることを意味する。言い換えると、専用物理プロセッサは、1つの特定の論理パーティションの処理を行う。図1は、専用パーティションを特徴とする単一のシステム構成を示す。
一方、共有プロセッサを使用するパーティションとは、物理プロセッサを部分プロセッサ単位で個々のパーティションに割り当てることができることを意味する。このような共有パーティション構成200の一例が図2に示されている。この図では、コンピュータ・システムには4つの物理プロセッサしか存在しないが、この2つの論理パーティションは、合わせて計5つの(完全な物理プロセッサを様々な割合で含む)論理プロセッサを有する。
専用構成または共有構成のどちらにおいても、パーティションはプロセッサ(共有の場合は部分プロセッサ)の最小数とプロセッサの最大数を定義することができる。ただし、定義された各パーティションの各最小値(部分プロセッサ単位を含む)の和は、実際の物理プロセッサの数を超えることはできない。例えば、図1の専用構成では、何らかの論理リソース区分化機能に基づいて、パーティション1は最小で3つの(完全な)プロセッサを有するように定義されるが、このパーティションは最大で4つを有することができる(その場合、4番目のプロセッサはパーティション2がアクティブでない場合のみ使用可能になる)。さらに、パーティション2は最小で1つの(完全な)プロセッサを有するように定義されるが、パーティション1がアクティブでない場合は、最大で4つの(完全な)プロセッサを有するように定義することができる。
図2の共有構成に関しても、同じ原理が適用できる。例えば、パーティション1は最小で3つの論理プロセッサ(そのうちの少なくとも1つは、「完全な」プロセッサには相当しない)を含むが、パーティション2は最小で2つの論理プロセッサ(そのうちの少なくとも1つは完全なプロセッサには相当しない)を含む。そうではなく、各パーティションが完全なプロセッサだけから構成される場合は、システムには4つの完全な物理プロセッサしか含まれないので、この2つのパーティションがコンピュータ・システム上で共存することはできない。
図1および図2のどちらにも、論理区分化を物理リソースから分離する層が存在する。この層のことを、以下で「ハイパーバイザ(hypervisor)」と呼ぶ。当技術分野で知られているように、ハイパーバイザ層は、コンピュータ・システム内に存在する任意の数の様々な種類のリソースの仮想化を提供するとともに、様々な管理機能を提供することができる。本明細書で使用する「ハイパーバイザ」という用語は、具体的には使用可能な物理プロセッサの仮想化と区分化を意味する。
図2に示されるような共有環境で動作するとき、ハイパーバイザおよびシステムそれ自体によって、各パーティション内で動作する各OSに(コンピュータ・システムの詳細に応じて)プログラミング・システム・サービスを提供することができる。このようなシステム・サービスを用いることで、使用可能なプロセッサの取得と解放が可能になる。個々のOSの詳細な要件に応じて、各OSは、これらの公開されたシステム・サービスを様々な方法で使用することができる。例えば、厳密な応答時間設計制約を含むOSは、自発的にプロセッサを解放することが許されないことがあり、したがって、常にハイパーバイザを利用して、パーティション定義だけに基づいてプロセッサを取り除くことになる。このような制約は、個々のOSインスタンスのためには意味を持つが、動作中のOSインスタンス全体にわたるコンピュータ・システム全体の使用可能な資源の有効な利用は保証しない。
米国特許第4843541号
この問題に対処するために、いくつかのOSインスタンスは、公開されたシステム・サービスを使用して、(処理機能の)低使用率が検出されたときにはプロセッサを解放しようと試み、低使用率から高使用率への遷移が検出されたときにはプロセッサを取得しようと試みる。個々のOSの詳細な内部では、低使用率および低使用率から高使用率への遷移がどのように検出されるかについて指示されるはずであるが、以下では、それらの機構の詳細については論じない。取得すべき特定のプロセッサを選択するための、より一般的な方法の1つは、単一の特定のプロセッサを選択するのではなく、単純にシステム・プロセッサの全てを選択して、それらの各々を取得しようと試みることである。しかし、要求元OSによるハイパーバイザの使用が増大するので、場合によっては、この方法は、単にハイパーバイザを使用してプロセッサの資源を管理する方法と比べて、実際にはより非効率な手法になり得る。さらに、この包括的な手法では、以前に取得された他のプロセッサが既にワークロードの処理を開始しているので、取得されたプロセッサのいくつかが、処理すべきアプリケーション・ワークロードなしでアクティブになる可能性もある。
他の可能な手法として、使用可能なプロセッサのリストを維持し、低使用率から高使用率への遷移が検出されたときはいつでも、ラウンドロビン手法を使用して次のプロセッサを選択し取得することがある。この手法は、使用可能なすべてのプロセッサを取得しようと試みる第1の手法に対してある程度の改善が示されるが、まだ理想的なものではない。なぜならば、基本的なラウンドロビン検索は、使用可能なプロセッサに関して一意の機能を提供するプロセッサを取得しようと試みることがあり、したがって取得の対象として適切でない選択になるからである。
したがって、仮想共有処理環境における低使用率から高使用率への遷移の後で、プロセッサをより効率的に選択することができれば望ましいであろう。
上で論じた従来技術の欠点および欠陥は、仮想共有コンピュータ環境で取得すべきプロセッサを選択する方法によって克服または軽減される。一例示的実施形態では、この方法は、共有コンピュータ環境の最後に解放されたプロセッサを取得しようと試みる第1の選択フェーズを開始するステップと、第1の選択フェーズが最後に解放されたプロセッサの取得に失敗した場合に、第2の選択フェーズを開始するステップとを含む。第2の選択フェーズはさらに、現在解放されているプロセッサに対するラウンドロビン選択処理を含む。
他の実施形態では、記憶媒体は、仮想共有コンピュータ環境において取得すべきプロセッサを選択するためのマシン可読コンピュータ・プログラム・コードと、コンピュータに方法を実行させるための命令とを含む。この方法はさらに、共有コンピュータ環境の最後に解放されたプロセッサを取得しようと試みる第1の選択フェーズを開始するステップと、第1の選択フェーズが最後に解放されたプロセッサの取得に失敗した場合に、第2の選択フェーズを開始するステップであって、第2の選択フェーズが現在解放されているプロセッサに対するラウンドロビン選択処理をさらに含む、ステップとを含む。
例示の図面を参照すると、いくつかの図面で、類似の要素には類似の番号が付されている。
本明細書で開示されるのは、仮想共有環境で取得すべきプロセッサを効率的に選択する方法である。概説すると、この方法は2フェーズの選択処理を使用する。第1のフェーズは、最後に解放されたプロセッサ(すなわち、一番最近に解放されたプロセッサ)を再利用または取得しようと試みる。最後に解放されたプロセッサを選択して取得したときには、要求元OSに関してまだ有効なデータを含む、取得されたプロセッサのキャッシュを取り出す最も高い可能性が存在する。共有環境内に存在する各OSインスタンスが、その最後に解放したプロセッサを取得しようと最初に試みた場合は、ハイパーバイザ・オーバヘッドの減少とポジティブなキャッシュ効果の組み合せによりコンピュータ・システム全体での使用率が低下することになる。ハイパーバイザ使用率のこの低下により、結果としてアプリケーション・ワークロードを処理する能力を増大させることが可能になる。
最後に解放されたプロセッサの識別が確定できないか、またはそのプロセッサがもはや使用不能である場合には(以下でより詳細に説明するように)、次いで第2の選択フェーズを実行することができる。この第2のフェーズは、主に実装されたOSの個別の要件に基づく、改善された拡張可能なラウンドロビン方式によるプロセッサの選択を含む。このような2フェーズ方式に従ってプロセッサを選択することにより(すべてのプロセッサを取得しようと試みる方式、または単純な、拡張不能なラウンドロビンによる方式を選択した場合と異なり)、コンピュータ・システム全体の使用率の低減が達成される。
この時点で、本明細書で開示された例示的方法の実施形態が、特定のリソースの論理的な共有区分化を含むコンピュータ・システムにおけるプロセッサの(ホスト・オペレーティング・システムによる)効率的な選択および使用を対象とするものであり、低使用率状態および低使用率状態から高使用率状態への遷移を検出するために使用できる特定の機構の詳細に関するものではないことを理解されたい。言い換えれば、本発明のプロセッサ選択技法は、(処理リソースの)低使用率状態、高使用率状態、およびそれらの間の遷移を規定し区別するための、当技術分野における任意の許容し得る方法と組み合わせて使用することができる。
本明細書で提示した例示的実施形態では、開示された選択方法に対する参照として様々な変数およびサービスが定義される。これらの参照には、例えば、プロセッサ共有変数である「last_relinquished」や「last_acquired」が含まれる。所与のOSのlast_relinquished変数は、ハイパーバイザに解放された最後のプロセッサの識別子を格納するとともに、可能な値である[NULL,1,2,3,...n]を含むことができる。ただし、nは特定のOSインスタンスが動作している論理パーティションによって使用可能なプロセッサの総数である。同様に、所与のOSに対するlast_acquired変数は、以下で説明する選択方法によって取得された最後のプロセッサの識別子を格納する。この変数は、可能な値として[NULL,1,2,3,...n]を含むことができる。ただし、nは特定のOSインスタンスが動作している論理パーティションによって使用可能なプロセッサの数である。各プロセッサに対して、そのプロセッサが解放されているかどうかを識別するためのrelinquished_list変数を使用することもできる。例えば、relinquished_list[3] = 1の指示により、プロセッサ番号3が解放されていることを示すことができる。
さらに、例示的なハイパーバイザ・サービスは、「Acquire [n] 」および「Relinquish[n] 」を含む。Acquire [n]サービスは、入力[n]として、呼び出し元OSインスタンスによって処理の再開を求められるプロセッサの識別子を取り込む。一方、Relinquish[n]サービスは、入力[n]として、呼び出し元OSインスタンスによってハイパーバイザに解放されるプロセッサの識別子を取り込む。
この2フェーズ選択処理の詳細な説明の前に、図3は、最後に解放されたプロセッサを最初に識別し、確定するために実装することができる例示的な高使用率から低使用率への遷移時の処理を示すフローチャート300である。やはり、プロセッサ・リソースの高使用率から低使用率への遷移を判定する個々の方法は本開示の主題ではなく、任意の数の許容し得る定義または基準に従って検出することができる。どのように検出されるかには無関係に、所与のプロセッサに対する高使用率から低使用率への遷移が実際に検出された後で、ブロック302に示されるように、共有変数「last_relinquished」はその特定のプロセッサの識別に対応する値に設定される。
次に、解放されたプロセッサのリスト上にそのプロセッサが現在存在していることを示すために、ブロック304に示されるように、解放されたプロセッサに対する変数「relinquish_list」は論理真の状態に設定される。特定のプロセッサをlast_relinquishedの受け入れ可能な値のリストに含めることを不可能にすることによって、またそれらのプロセッサを解放リスト上に含めることを不可能にすることによって、個々のオペレーティング・システムに応じて、それらのプロセッサを選択処理から除外することができることに留意されたい(例えば、プロセッサ「x」が選択処理から除外される場合は、あらゆる場合に、値「x」は変数last_relinquishedに対して有効でなくなり、relinquished_list[x] = 0となる)。この機能は、選択処理の拡張機能と考えることができる。しかし、そのOSのプロセッサを解放することができると想定すると、OSは、last_relinquishedおよびrelinquished_list変数を設定した後で、ブロック306に示されるように、そのプロセッサを求める、ハイパーバイザへの解放要求を呼び出す。
次に、図4および図5を概略で参照すると、2フェーズ選択処理は、システム内の所与のプロセッサに対する低使用率状態から高使用率状態への遷移が検出されたときに開始される。この場合もやはり、選択処理は一般に、last_relinquishedのプロセッサを使用(取得)しようと試みる第1のフェーズを含み、このフェーズが不成功の場合に、OS個別のラウンドロビン手法を使用する第2のフェーズが開始される。第1のフェーズの動作は、図4のフローチャート400によって示される。低使用率状態から高使用率状態への遷移の検出(この検出の詳細もやはり、本開示の主題ではない)に続いて、判定ブロック402で、last_relinquishedの値がNULLであるかどうかが判定される。言い換えれば、判定ブロックのこの照会は、最後に解放されたプロセッサの識別を確定しようと試みるものである。last_relinquishedの値= NULLの場合は、第1の好ましいシナリオ(すなわち、最後に解放されたプロセッサを取得すること)に失敗したことになるので、処理はブロック404で示された第2のフェーズに進み、第1のフェーズは終了する。このような状況は、例えば、システム電源投入の後で、いずれかのプロセッサが解放される時より前の、最初の低使用率状態から高使用率状態への遷移に続いて生じる可能性がある。最後に解放されたプロセッサを識別することに失敗する(すなわち、last_relinquished= NULL)他の可能性については、以下で説明する。
一方、低使用率から高使用率への遷移の検出の後でlast_relinquishedの値がNULLでないと想定すると、第1のフェーズはブロック406に進み、そのブロックで、変数last_acquiredはlast_relinquishedの現在の(非NULL)値に設定される。次に、ブロック408で、変数last_relinquishedはNULLに設定される。したがって、第1のフェーズが最後に解放されたプロセッサを取得しようと試みた後で、ハイパーバイザが最終的にその取得要求を許諾したかどうかにかかわらず、そのプロセッサはもはや最後に解放されたプロセッサとは見なされない。次に、OSは、ブロック410に示されるように、そのプロセッサを求める、ハイパーバイザへの取得要求を呼び出す。この例では、第1のフェーズが成功裏に実行される(すなわち、最後に解放されたプロセッサが識別され、要求される)ので、処理のこの繰り返しにおいて第2のフェーズが開始されることはない。
プロセッサ共有変数last_relinquishedは、ブロック408でNULLに設定されるので、したがって、次に低使用率から高使用率への遷移が検出されたときに、この値がまだNULLのままであることは起こり得る。すなわち、低使用率から高使用率への遷移に関する次の検出に際して、その間に高使用率から低使用率への遷移が検出されておらず(図3)、したがって変数last_relinquishedが非NULL値に設定されていない場合である。
last_relinquished変数は、ワンディープ・キュー(one-deepqueue)と見なすことができる。低使用率状態が検出されたプロセッサに対するRelinquish []要求を発行する直前に、解放されるプロセッサの識別子は、図3から分かるように、(ブロックコンカレント動作を用いて)last_relinquished変数に格納される。あるプロセッサが、(ハイパーバイザへのAcquire[]要求、または単にハイパーバイザの自発的な要求によって)特定のOSインスタンスのために処理を再開するときは、last_relinquished変数をチェックし、その変数が再開するプロセッサに等しい場合は、last_relinquished変数にNULLを格納し、そのプロセッサが処理を再開したこと、およびそのプロセッサに関するAcquire[]サービスを他のプロセッサが使用すべきでないことを他の動作中のプロセッサに指示する。
次に図5のフローチャート500を参照すると、この図では、低使用率から高使用率への遷移検出に続くlast_relinquished = NULLの結果として第2のフェーズが開始され、拡張可能なラウンドロビン・ルーチンを実行して、relinquished_listの使用可能なプロセッサから1つのプロセッサを選択し、ハイパーバイザのAcquire[]サービスを呼び出す。従来のラウンドロビン・ルーチンでは、単純に、第2のフェーズへの最初のエントリ時には第1のプロセッサで始め、その後の、フェーズ2への次のエントリ時には第2のプロセッサで始めることになる。このパターンは、プロセッサのリストが終了するまで続けられ、その時点で、第1のプロセッサが再度選択され、ラウンドロビンが継続される。
本実施形態では、第2のフェーズは判定ブロック502で始まり、そのブロックで、最後に取得されたプロセッサの現在の位置がプロセッサ・リストの終わりかどうかがチェックされる。拡張可能なラウンドロビン・フェーズの適切な動作のために、ブロックコンカレント動作を使用して現在の位置が常に把握される。したがって、last_acquired + 1がプロセッサの総数より大きい場合は、この変数はリストの最後にあり、ブロック504に示されるように、last_acquiredの値はゼロにリセットされる。第2のフェーズの拡張可能な態様は、OSの個別の特性に応じて、last_acquired変数のリセットを(リストの先頭ではなく)特定のプロセッサにバイアスされるように調整することができる。例えば、ラウンドロビン・フェーズの一実施形態では、システムが真のSMP(Symmetric MultipleProcessor=対称型マルチプロセッサ)でない(すなわち、ある種のシステム機能は特定のプロセッサ上で実行しなければならない)ときは、第1のプロセッサをラウンドロビンから除外することができる。さらに、他の実施形態では、第1のフェーズが、取得すべき最後に解放されたプロセッサの選択に成功したときはいつでも、現在のラウンドロビン位置を名目上の開始ラウンドロビン位置にリセットすることができる。さらに、ラウンドロビン処理はまた、特定の定義されたシステム・イベントに基づいて終了および再始動することもできる。
現在のラウンドロビン位置がリストの終わりでない場合は、ブロック506に示されるように、代わりにlast_acquired値は1ずつインクリメントされる。次いで、フェーズは判定ブロック508に進み、ラウンドロビンによって識別された現在のブロックが、実際に解放リスト上に存在するかどうかが判定される。すなわち、ブロック508では、last_acquired変数によって現在指定されている特定のプロセッサに対するrelinquished_listの値がゼロに等しいかどうかがチェックされる。ゼロの場合は、このプロセッサが現在解放リスト上に存在しないことを意味する。この場合には、ラウンドロビン・フェーズはブロック502に戻って、さらにlast_acquiredをリセットまたはインクリメント、あるいはその両方を実施する。このフェーズの他の拡張可能な態様では、特定のプロセッサを、そのプロセッサのrelinquished_list変数を永久にゼロに等しくなるように指定することによって、解放リストから実際に除去することができる。最後に、last_acquiredの現在の値によって識別されたプロセッサが解放リスト上に存在すると判定された場合は、ブロック510で、そのプロセッサのrelinquished_list変数がゼロに設定され(解放リストからそのプロセッサを実際に除去し)、次いで、第2のフェーズはブロック512に進み、そのブロックで、OSは、そのプロセッサを求めるハイパーバイザへの取得要求を呼び出す。
したがって、上記のことを考慮すると、本方法の諸実施形態は、コンピュータまたはコントローラに実装されたプロセス、およびそれらのプロセスを実行するための装置の形をとることができる。この開示は、フロッピ・ディスク、CD−ROM、ハード・ドライブ、または他の任意のコンピュータ可読記憶媒体など、有形の媒体に実施された命令を含むコンピュータ・プログラム・コードの形で実施することもできる。コンピュータまたはコントローラによってコンピュータ・プログラム・コードがロードされ、実行されるとき、そのコンピュータは本発明を実施するための装置となる。この開示はまた、例えば、記憶媒体に格納され、コンピュータまたはコントローラによってロードまたは実行、あるいはその両方を実施されるか、それとも電気配線またはケーブルを介して、光ファイバを介して、あるいは電磁放射を介してなど、何らかの送信媒体を介して送信されるコンピュータ・プログラム・コードまたは信号の形で実施することもできる。コンピュータによってコンピュータ・プログラム・コードがロードされ、実行されるとき、そのコンピュータは本発明を実施するための装置となる。汎用マイクロプロセッサ上に実装されたとき、コンピュータ・プログラム・コード・セグメントは、そのマイクロプロセッサを特定の論理回路を生成するように構成する。実行可能な命令の技術的効果は、例えば、上述し、図3から図5に示した方法を実行することである。
本発明を1つまたは複数の好ましい実施形態を参照しながら説明してきたが、本発明の範囲を逸脱することなく様々な変更を実施し得ることおよびその諸要素を均等物で置き換え得ることは、当業者には理解されよう。さらに、特定の状況または材料を本発明の教示に適合させるために、本発明の本質的な範囲を逸脱することなく多くの修正形態を実施することができる。したがって、本発明は、本発明を実施するために考慮された最良の形態として開示された特定の実施形態に限定されるものではなく、添付の特許請求の範囲に含まれるあらゆる実施形態を含むものであることが意図される。
Claims (16)
- 仮想共有コンピュータ環境で取得すべきプロセッサを選択する方法であって、
前記共有コンピュータ環境の最後に解放されたプロセッサを取得しようと試みる第1の選択フェーズを開始するステップと、
前記第1の選択フェーズが前記最後に解放されたプロセッサの取得に失敗した場合に第2の選択フェーズを開始するステップであって、前記第2の選択フェーズが、現在解放されているプロセッサに対するラウンドロビン選択処理をさらに含む、ステップと
を含む方法。 - 前記第1の選択フェーズが、
前記最後に解放されたプロセッサの識別情報を追跡するために割り当てられた第1の変数がNULL値であるかどうかを判定するステップと、
前記第1の変数の値がNULLである場合に、前記第2の選択フェーズを開始するステップと、
前記第1の変数の値がNULLでない場合に、最後に取得されたプロセッサの識別を追跡するために割り当てられた第2の変数の値に前記第1の変数の値を設定し、その後、前記第1の変数の値にNULLを設定するとともに、前記第2の変数の新しい値に対応するプロセッサを求める、ハイパーバイザへの取得要求を呼び出すステップと
をさらに含む、請求項1に記載の方法。 - 前記第1の選択フェーズが、前記共有コンピュータ環境における少なくとも1つのプロセッサの低使用率状態から高使用率状態への遷移を検出した後で開始される、請求項2に記載の方法。
- 所与のプロセッサの高使用率状態から低使用率状態への遷移を検出したときに、前記第1の変数の値に前記共有コンピュータ環境内の前記所与のプロセッサの識別情報を設定するステップであって、前記第1の変数が前記共有コンピュータ環境における各プロセッサに関する共有変数を含む、ステップと、
前記所与のプロセッサが解放されたことを反映するために、各プロセッサごとに使用される第3の変数を設定するステップと、
前記所与のプロセッサを解放するための、前記ハイパーバイザへの解放要求を呼び出すステップと
をさらに含む、請求項2に記載の方法。 - 前記第2の選択フェーズが、
前記第2の変数の値が前記共有コンピュータ環境内のプロセッサの総数の最後のプロセッサに相当しているかどうかを判定し、相当している場合には、前記ラウンドロビン・プロセスにおいて求められる次のプロセッサに対応するために前記第2の変数の値をリセットすることによって更新し、相当していない場合には、前記第2の変数の値を1ずつインクリメントすることによって更新するステップと、
前記第2の変数の前記更新された値に対応するプロセッサが、解放されたプロセッサのリスト上に現在存在しているかどうかを判定するステップと、
前記第2の変数の前記更新された値に対応する前記プロセッサを求める、ハイパーバイザへの取得要求を呼び出すステップと
をさらに含む、請求項2に記載の方法。 - 前記第2の変数の前記更新された値に対応する前記プロセッサが、解放されたプロセッサの前記リスト上に現在存在していない場合は、前記第2の選択フェーズを繰り返すステップをさらに含む、請求項5に記載の方法。
- 特に指定されたプロセッサをバイパスするような方法で前記第2の変数のリセットを実行するステップをさらに含む、請求項6に記載の方法。
- 前記特に指定されたプロセッサを、解放されたプロセッサの前記リストに載せることから除外するステップをさらに含む、請求項7に記載の方法。
- 仮想共有コンピュータ環境で取得すべきプロセッサを選択するためのマシン可読のコンピュータ・プログラム・コードと、
コンピュータに方法を実行させる命令を含むプログラムであって、
前記共有コンピュータ環境の最後に解放されたプロセッサを取得しようと試みる第1の選択フェーズを開始するステップと、
前記第1の選択フェーズが前記最後に解放されたプロセッサの取得に失敗した場合に第2の選択フェーズを開始するステップであって、前記第2の選択フェーズが、現在解放されているプロセッサに対するラウンドロビン選択処理をさらに含むステップと
をコンピュータに実行させるプログラム。 - 前記第1の選択フェーズが、
前記最後に解放されたプロセッサの識別情報を追跡するために割り当てられた第1の変数がNULL値であるかどうかを判定するステップと、
前記第1の変数の値がNULLである場合に、前記第2の選択フェーズを開始するステップと、
前記第1の変数の値がNULLでない場合に、最後に取得されたプロセッサの識別を追跡するために割り当てられた第2の変数の値に前記第1の変数の値を設定し、その後、前記第1の変数の値をNULLに設定するとともに、前記第2の変数の新しい値に対応するプロセッサを求める、ハイパーバイザへの取得要求を呼び出すステップと
をさらに含む、請求項9に記載のプログラム。 - 前記第1の選択フェーズが、前記共有コンピュータ環境における少なくとも1つのプロセッサの低使用率状態から高使用率状態への遷移を検出した後で開始される、請求項10に記載のプログラム。
- 所与のプロセッサの高使用率状態から低使用率状態への遷移を検出したときに、前記第1の変数の値に前記共有コンピュータ環境内の前記所与のプロセッサの識別情報を設定するステップであって、前記第1の変数が前記共有コンピュータ環境における各プロセッサに関する共有変数を含む、ステップと、
前記所与のプロセッサが解放されたことを反映するために、各プロセッサごとに使用される第3の変数を設定するステップと、
前記所与のプロセッサを解放するための、前記ハイパーバイザへの解放要求を呼び出すステップと
をさらに含む、請求項10に記載のプログラム。 - 前記第2の選択フェーズが、
前記第2の変数の値が前記共有コンピュータ環境内のプロセッサの総数の最後のプロセッサに相当しているかどうかを判定し、相当している場合には、前記ラウンドロビン・プロセスにおいて求められる次のプロセッサに対応するために前記第2の変数の値をリセットすることによって更新し、相当していない場合には、前記第2の変数の値を1ずつインクリメントすることによって更新するステップと、
前記第2の変数の前記更新された値に対応するプロセッサが、解放されたプロセッサのリスト上に現在存在しているかどうかを判定するステップと、
前記第2の変数の前記更新された値に対応する前記プロセッサを求める、ハイパーバイザへの取得要求を呼び出すステップと
をさらに含む、請求項10に記載のプログラム。 - 前記第2の変数の前記更新された値に対応する前記プロセッサが、解放されたプロセッサの前記リスト上に現在存在していない場合は、前記第2の選択フェーズを繰り返すステップをさらに含む、請求項13に記載のプログラム。
- 特に指定されたプロセッサをバイパスするような方法で前記第2の変数のリセットを実行するステップをさらに含む、請求項14に記載のプログラム。
- 前記特に指定されたプロセッサを、解放されたプロセッサの前記リストに載せることから除外するステップをさらに含む、請求項15に記載のプログラム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/313,990 US8307371B2 (en) | 2005-12-20 | 2005-12-20 | Method for efficient utilization of processors in a virtual shared environment |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007172611A true JP2007172611A (ja) | 2007-07-05 |
Family
ID=38175262
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006337642A Pending JP2007172611A (ja) | 2005-12-20 | 2006-12-14 | 方法、記憶媒体(仮想共有環境におけるプロセッサの有効利用法) |
Country Status (2)
Country | Link |
---|---|
US (1) | US8307371B2 (ja) |
JP (1) | JP2007172611A (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20090108868A (ko) * | 2008-04-14 | 2009-10-19 | 삼성전자주식회사 | 가상 머신 관리 시스템 및 그의 프로세서 자원 관리방법 |
JP2010055296A (ja) * | 2008-08-27 | 2010-03-11 | Fujitsu Ltd | 負荷分散プログラム及び負荷分散装置 |
US8732716B2 (en) * | 2008-09-30 | 2014-05-20 | International Business Machines Corporation | Virtualization across physical partitions of a multi-core processor (MCP) |
US20100211958A1 (en) * | 2009-02-17 | 2010-08-19 | Sun Microsystems, Inc. | Automated resource load balancing in a computing system |
US20140164718A1 (en) * | 2012-12-07 | 2014-06-12 | Open Kernel Labs, Inc. | Methods and apparatus for sharing memory between multiple processes of a virtual machine |
US10860347B1 (en) | 2016-06-27 | 2020-12-08 | Amazon Technologies, Inc. | Virtual machine with multiple content processes |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US484541A (en) * | 1892-10-18 | Woven pile fabric | ||
US4843541A (en) * | 1987-07-29 | 1989-06-27 | International Business Machines Corporation | Logical resource partitioning of a data processing system |
US5467104A (en) * | 1992-10-22 | 1995-11-14 | Board Of Regents Of The University Of Washington | Virtual retinal display |
US6633897B1 (en) * | 1995-06-30 | 2003-10-14 | International Business Machines Corporation | Method and system for scheduling threads within a multiprocessor data processing system using an affinity scheduler |
US5701132A (en) * | 1996-03-29 | 1997-12-23 | University Of Washington | Virtual retinal display with expanded exit pupil |
US6226734B1 (en) * | 1998-06-10 | 2001-05-01 | Compaq Computer Corporation | Method and apparatus for processor migration from different processor states in a multi-processor computer system |
US6260068B1 (en) * | 1998-06-10 | 2001-07-10 | Compaq Computer Corporation | Method and apparatus for migrating resources in a multi-processor computer system |
US6247109B1 (en) * | 1998-06-10 | 2001-06-12 | Compaq Computer Corp. | Dynamically assigning CPUs to different partitions each having an operation system instance in a shared memory space |
US6289369B1 (en) * | 1998-08-25 | 2001-09-11 | International Business Machines Corporation | Affinity, locality, and load balancing in scheduling user program-level threads for execution by a computer system |
US6362912B1 (en) * | 1999-08-05 | 2002-03-26 | Microvision, Inc. | Scanned imaging apparatus with switched feeds |
US6574748B1 (en) * | 2000-06-16 | 2003-06-03 | Bull Hn Information Systems Inc. | Fast relief swapping of processors in a data processing system |
JP2005504366A (ja) * | 2001-07-07 | 2005-02-10 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | プロセッサクラスタ |
US7428485B2 (en) * | 2001-08-24 | 2008-09-23 | International Business Machines Corporation | System for yielding to a processor |
US6794793B2 (en) * | 2001-09-27 | 2004-09-21 | Memx, Inc. | Microelectromechnical system for tilting a platform |
US6944847B2 (en) | 2002-05-02 | 2005-09-13 | International Business Machines Corporation | Virtualization of input/output devices in a logically partitioned data processing system |
US6931391B2 (en) * | 2002-06-21 | 2005-08-16 | Microsoft Corporation | Systems and methods for generating prediction queries |
JP4371705B2 (ja) * | 2003-05-20 | 2009-11-25 | キヤノン株式会社 | 走査型画像表示装置 |
US7318128B1 (en) * | 2003-08-01 | 2008-01-08 | Sun Microsystems, Inc. | Methods and apparatus for selecting processes for execution |
US7466316B1 (en) * | 2004-12-14 | 2008-12-16 | Nvidia Corporation | Apparatus, system, and method for distributing work to integrated heterogeneous processors |
US8104033B2 (en) * | 2005-09-30 | 2012-01-24 | Computer Associates Think, Inc. | Managing virtual machines based on business priorty |
-
2005
- 2005-12-20 US US11/313,990 patent/US8307371B2/en not_active Expired - Fee Related
-
2006
- 2006-12-14 JP JP2006337642A patent/JP2007172611A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
US8307371B2 (en) | 2012-11-06 |
US20070143738A1 (en) | 2007-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8635493B2 (en) | High availability system allowing conditionally reserved computing resource use and reclamation upon a failover | |
JP6294586B2 (ja) | 命令スレッドを組み合わせた実行の管理システムおよび管理方法 | |
US7698540B2 (en) | Dynamic hardware multithreading and partitioned hardware multithreading | |
US10896065B2 (en) | Efficient critical thread scheduling for non privileged thread requests | |
US20040002974A1 (en) | Thread based lock manager | |
JP2004021985A (ja) | マルチスレッドシステムにおけるスピン−放棄 | |
CN104731560B (zh) | 支持多线程处理的功能单元、处理器及其操作方法 | |
US20080147945A1 (en) | Parallel memory migration | |
CN110673927B (zh) | 一种虚拟机的调度方法和装置 | |
US8413163B2 (en) | Program control device including per-timeslot switching of thread execution | |
CN106445631B (zh) | 一种布署虚拟机的方法、***以及物理服务器 | |
US20090019439A1 (en) | Thread pool management apparatus and method | |
US9086911B2 (en) | Multiprocessing transaction recovery manager | |
CN106537329B (zh) | 用于为多线程执行锁保护处理操作的数据处理装置及方法 | |
JPH1115793A (ja) | 資源の保全性を保護する方法 | |
US20150052529A1 (en) | Efficient task scheduling using a locking mechanism | |
JP2007172611A (ja) | 方法、記憶媒体(仮想共有環境におけるプロセッサの有効利用法) | |
US20030126187A1 (en) | Apparatus and method for synchronization in a multi-thread system of JAVA virtual machine | |
US9372724B2 (en) | System and method for conditional task switching during ordering scope transitions | |
US20040199599A1 (en) | Method of shutting down virtual machines in an orderly manner | |
US11194615B2 (en) | Dynamic pause exiting | |
US7996848B1 (en) | Systems and methods for suspending and resuming threads | |
CN109739612B (zh) | 虚拟机进程的调度方法、装置、设备和存储介质 | |
US20190294585A1 (en) | Support of Wide Single Instruction Multiple Data (SIMD) Register Vectors through a Virtualization of Multithreaded Vectors in a Simultaneous Multithreaded (SMT) Architecture | |
JP4006428B2 (ja) | 計算機システム |