(57)【要約】  本発明を適用した１システムは、作成すべき仮想マシン毎に、仮想マシンに割り当てるべき演算処理装置コアの数を指定する設定情報、及び設定情報が表す仮想マシンのなかで連携して動作する複数の仮想マシンをグループとして表すグループ情報を記憶した記憶部と、設定情報が表す仮想マシンのなかで演算処理装置コアを割り当てる対象となる第１の仮想マシンが発生した場合に、演算処理装置コアを搭載する何れかの演算処理装置に発生する障害に伴う稼働可能な仮想マシン全体の稼働状態の低下を考慮した規則に従って、設定情報、及びグループ情報を参照し、設定情報が指定する数の演算処理装置コアを第１の仮想マシンに割り当てる割当部と、を有する。
2014147802.tif 000002
【特許請求の範囲】
【請求項１】
作成すべき仮想マシン毎に、前記仮想マシンに割り当てるべき演算処理装置コアの数を指定する設定情報、及び前記設定情報が表す仮想マシンのなかで連携して動作する複数の仮想マシンをグループとして表すグループ情報を記憶した記憶部と、
前記設定情報が表す仮想マシンのなかで前記演算処理装置コアを割り当てる対象となる第１の仮想マシンが発生した場合に、前記演算処理装置コアを搭載する何れかの演算処理装置に発生する障害に伴う稼働可能な仮想マシン全体の稼働状態の低下を考慮した規則に従って、前記設定情報、及び前記グループ情報を参照し、前記設定情報が指定する数の演算処理装置コアを前記第１の仮想マシンに割り当てる割当部と、
を有することを特徴とする情報処理装置。
【請求項２】
前記割当部は、前記設定情報が表す仮想マシンを作成する場合、前記規則に従い、各演算処理装置が備える前記演算処理装置コアをそれぞれ異なる仮想マシンに割り当て、前記各演算処理装置が備える前記演算処理装置コアをそれぞれ異なる仮想マシンに割り当てられない状況時に、同じグループに属する２台以上の仮想マシンに対し、同一の演算処理装置が備える１つ以上の演算処理装置コアを割り当てる、
ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記仮想マシンが前記演算処理装置コアに割り当てられている演算処理装置に現れた障害の予兆を検知する検知部、を有し、
前記割当部は、何れかの演算処理装置に現れた障害の予兆を前記検知部が検知した場合、前記検知部が前記障害の予兆を検知した演算処理装置の演算処理装置コアが割り当てられている仮想マシンを前記第１の仮想マシンとして、前記第１の仮想マシンに新たな演算処理装置コアを割り当てる、
ことを特徴とする請求項１、または２記載の情報処理装置。
【請求項４】
前記割当部は、前記規則に従い、何れの仮想マシンも演算処理装置コアに割り当てられていない演算処理装置、前記第１の仮想マシンと同じグループに属する他の仮想マシンが演算処理装置コアに割り当てられている演算処理装置、前記第１の仮想マシンと同じグループに属していない他の仮想マシンが演算処理装置コアに割り当てられている演算処理装置、の順に、前記第１の仮想マシンに演算処理装置コアを割り当てる演算処理装置を選択する、
ことを特徴とする請求項３記載の情報処理装置。
【請求項５】
各演算処理装置の状態を表す状態情報を取得する取得部、を有し、
前記割当部は、前記規則に従い、前記取得部が取得する前記状態情報を更に参照し、前記第１の仮想マシンへの前記演算処理装置コアの割り当てを行う、
ことを特徴とする請求項１〜４の何れか１項に記載の情報処理装置。
【請求項６】
前記取得部が取得する状態情報は、前記各演算処理装置にエラーが発生する頻度を表す情報である、
ことを特徴とする請求項１〜４の何れか１項に記載の情報処理装置。
【請求項７】
複数の演算処理装置コアを備えた複数の演算処理装置が搭載され、設定情報が表す複数の仮想マシンを作成する情報処理装置に、
前記複数の仮想マシンのなかで前記演算処理装置コアを割り当てるべき第１の仮想マシンに対し、何れの仮想マシンも演算処理装置コアに割り当てられていない演算処理装置の演算処理装置コアを割り当てる第１の割り当てを行わせ、
前記第１の割り当てにより前記演算処理装置コアを割り当てられず、且つ前記第１の仮想マシンが前記予め設定したグループに属している場合に、前記第１の仮想マシンに対し、同じグループに属する他の仮想マシンに前記演算処理装置コアが割り当てられた演算処理装置の前記演算処理装置コアを割り当てる第２の割り当てを行わせ、
前記第２の割り当てによって前記演算処理装置を割り当てられない場合に、前記第１の仮想マシンに対し、同じグループに属さない他の仮想マシンに前記演算処理装置コアが割り当てられた演算処理装置の前記演算処理装置コアを割り当てる第３の割り当てを行わせる、
ことを特徴とする資源割当方法。
【請求項８】
複数の演算処理装置コアを備えた複数の演算処理装置が搭載され、設定情報が表す複数の仮想マシンを作成する情報処理装置に、
前記複数の仮想マシンのなかで前記演算処理装置コアを割り当てるべき第１の仮想マシンに対し、何れの仮想マシンも演算処理装置コアに割り当てられていない演算処理装置の演算処理装置コアを割り当てる第１の割り当てを行い、
前記第１の割り当てにより前記演算処理装置コアを割り当てられず、且つ前記第１の仮想マシンが前記予め設定したグループに属している場合に、前記第１の仮想マシンに対し、同じグループに属する他の仮想マシンに前記演算処理装置コアが割り当てられた演算処理装置の前記演算処理装置コアを割り当てる第２の割り当てを行い、
前記第２の割り当てによって前記演算処理装置を割り当てられない場合に、前記第１の仮想マシンに対し、同じグループに属さない他の仮想マシンに前記演算処理装置コアが割り当てられた演算処理装置の前記演算処理装置コアを割り当てる第３の割り当てを行う、
処理を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、複数の仮想マシンが作成される情報処理装置を制御する技術に関する。
【背景技術】
【０００２】
近年、情報処理装置（コンピュータ）の仮想化技術の一つである仮想マシン（ＶＭ：Virtual Machine）は、広く情報処理装置に採用されている。この仮想マシンの実行環境では、情報処理装置のハードウェア（資源）が仮想化され、各仮想マシンは仮想化したハードウェア上で動作する。それにより、各仮想マシンは個々に完全に独立した形で動作する。このことから、仮想マシン技術を用いた場合、一台の情報処理装置を複数台のサーバとして動作させることができる。【０００３】
情報処理装置には、１つ以上の演算処理装置が搭載される。この演算処理装置は、通常、ＣＰＵ（Central Processing Unit）、或いはＭＰＵ（Micro-Processing Unit）と呼ばれるプログラムを実行する装置である。以降、便宜的に、演算処理装置はＣＰＵと表記する。【０００４】
情報処理装置上に作成される各仮想マシンには、資源の一部として、１つＣＰＵが割り当てられる。情報処理装置に搭載されるＣＰＵは、通常、中核部分であるＣＰＵコアを複数、備えている。それにより、仮想マシンへのＣＰＵの割当は、ＣＰＵコア単位で行われるのが普通となっている。【０００５】
図１は、仮想マシンへのＣＰＵコアの割り当て例を表す図である。図１に表す例は、ＶＭＭ（Virtual Machine Monitor）３上で４台の仮想マシン４（４−１〜４−４）を動作させる場合である。情報処理装置１は、資源２として、４つのＣＰＵ２１（２１−１〜２１−４）、及び記憶装置２２を備えている。ＶＭＭ３はハイパーバイザーとも呼ばれる。【０００６】
記憶装置２２は、例えば補助記憶装置、及びメモリモジュールの集合体である。作成すべき仮想マシン４に割り当てるべき資源は、記憶装置２２に格納された設定情報２２ａにより指定される。ＶＭＭ３は、設定情報２２ａを参照し、各仮想マシン４に資源を割り当てる。【０００７】
各ＣＰＵ２１は、２つのＣＰＵコア２５（２５−０、２５−１）、共通資源２６を備えている。共有資源２６には、例えばＬＬＣ（Last Level Cache）、記憶装置２２とのインターフェース、及び他のＣＰＵ２１等との通信を可能にするインターフェース等が含まれる。ＣＰＵは、以降、「ＣＰＵパッケージ」と表記する。【０００８】
図１において、各仮想マシン４に割り当てられたＣＰＵコア２５は、矢印により表している。それにより、図１に表す例では、各ＣＰＵパッケージ２１−１〜２１−４の１つのＣＰＵコア２１−０は、それぞれ仮想マシン４−０〜４−４に割り当てられている。各仮想マシン４にそれぞれ異なるＣＰＵパッケージ２１の１つのＣＰＵコア２５が割り当てられているのは、ＣＰＵパッケージ２１に搭載された１つのＣＰＵコア２５当たりの処理性能は、使用されないＣＰＵコア２５が多くなるほど、高くなるからである。【０００９】
上記のように、資源２は仮想化される。そのため、各ＣＰＵパッケージ２１の各ＣＰＵコア２５も仮想化される。各仮想マシン４へのＣＰＵコア２５の割り当ては、仮想化されたＣＰＵコア２５である仮想ＣＰＵコア４ａを割り当てることで行われる。【００１０】
ＶＭＭ３は、仮想マシン４の可用性を高めるための複数の機能を有する。その機能としては、障害局所化機能、及び資源再割当機能が代表的なものである。【００１１】
障害局所化機能は、資源２を構成する何れかのハードウェアに障害が発生した場合に、その障害の影響範囲を局所化するための機能である。その障害局所化機能により、例えばＣＰＵパッケージ２１−１に障害が発生した場合には、そのＣＰＵパッケージ２１−１のＣＰＵコア２５−０を使用する仮想マシン４−１以外の仮想マシン４−２〜４−４は正常に稼働し続けることができる。【００１２】
資源再割当機能は、資源２を構成する何れかのハードウェアに障害の予兆が現れた場合に、その予兆が現れたハードウェアを使用する仮想マシン４に、別のハードウェアを再度、割り当てる機能である。その資源再割当機能により、例えばＣＰＵパッケージ２１−１に障害の予兆が現れた場合には、そのＣＰＵパッケージ２１−１のＣＰＵコア２５−０を使用する仮想マシン４−１に、別のＣＰＵパッケージ２１のＣＰＵコア２５を割り当てる。そのようなＣＰＵコア２５の再割当（割当変更）により、仮想マシン４−１は稼働し続けることができる。【００１３】
情報処理装置１上に作成される各仮想マシン４は、上記のように、個々に完全に独立した形で動作する。しかし、複数の仮想マシン４を連携させる場合がある。これは、例えば情報処理装置１が図３に表す情報処理装置３０として用いられるような場合である。【００１４】
図３は、ウェブシステムの構成例を表す図である。このウェブシステムは、ロードバランサ５０、及び情報処理装置３０を用いて、データベース（ＤＢ）サーバ４０が管理するデータ（コンテンツ）、或いはそのデータから生成されるデータを提供するためのシステムである。情報処理装置３０上には、１台のＷｅｂサーバとして動作する仮想マシン３３、及び１台のアプリケーション（ＡＰ）サーバとして動作する仮想マシン３４を有する２つの処理系３２（３２−１、３２−２）が構築されている。ロードバランサ５０は、ネットワークを介して接続された端末装置からの要求を、２つの処理系３２のうちの一方に振り分ける。２つの処理系３２は、２台の仮想マシン３３、３４が連携し、要求を送信した端末装置にＤＢサーバ４０が管理するデータを提供する等のサービスを行う。【００１５】
図３に表す情報処理装置３０として情報処理装置１を用いる場合を想定する。ここでは更に、仮想マシン４−１、及び４−２は、処理系３２−１の仮想マシン３３、及び３４として動作し、仮想マシン４−３、及び４−４は、処理系３２−２の仮想マシン３３、及び３４として動作すると想定する。【００１６】
ＣＰＵパッケージ２１−１に障害が発生するか、或いは障害の予兆が検知された場合、仮想マシン４−１に新たに割り当てるＣＰＵコア２５は、ＣＰＵパッケージ２１−２〜２１−４のなかから選択される。ここでは、混乱を避けるために、以降、特に断らない限り、障害の発生は、障害の予兆の検知を含む意味で用いる。【００１７】
上記のような想定では、仮想マシン４−１にＣＰＵコア２５を新たに割り当てるＣＰＵパッケージ２１により、何れかのＣＰＵパッケージ２１の障害発生に伴う情報処理装置１（ウェブシステム）の運用状態の変化は異なる。【００１８】
仮想マシン４−１にＣＰＵパッケージ２１−２のＣＰＵコア２５を新たに割り当てる場合、ＣＰＵパッケージ２１−２〜２１−４の何れか１つのＣＰＵパッケージ２１に障害が発生しても、１つの処理系３２は稼働し続けることができる。ＣＰＵパッケージ２１−２に障害が発生した場合、処理系３２−２が稼働し続けることができ、ＣＰＵパッケージ２１−３、或いは２１−４に障害が発生した場合、処理系３２−１が稼働し続けることができる。【００１９】
仮想マシン４−１にＣＰＵパッケージ２１−３のＣＰＵコア２５を新たに割り当てる場合、ＣＰＵパッケージ２１−３に障害が発生すると、２つの処理系３２は共に稼働し続けることができない。しかし、ＣＰＵパッケージ２１−２に障害が発生した場合、処理系３２−２が稼働し続けることができ、ＣＰＵパッケージ２１−４に障害が発生した場合、処理系３２−１が稼働し続けることができる。【００２０】
仮想マシン４−１にＣＰＵパッケージ２１−４のＣＰＵコア２５を新たに割り当てる場合、ＣＰＵパッケージ２１−４に障害が発生すると、２つの処理系３２は共に稼働し続けることができない。しかし、ＣＰＵパッケージ２１−２に障害が発生した場合、処理系３２−２が稼働し続けることができ、ＣＰＵパッケージ２１−３に障害が発生した場合、処理系３２−１が稼働し続けることができる。【００２１】
上記のように、複数台の仮想マシン４を連携させるような場合、仮想マシン４に新たにＣＰＵコア２５を割り当てるＣＰＵパッケージ２１により、情報処理装置１の運用状態、つまり仮想マシン４全体の稼働状態の変化は異なる。ＣＰＵコア２５を新たに割り当てるＣＰＵパッケージ２１によっては、１つのＣＰＵパッケージ２１に発生する障害は、情報処理装置１の運用継続を不可能にする。このことから、仮想マシン４への新たなＣＰＵコア２５の割り当てでは、その後に発生するＣＰＵパッケージ２１の障害に伴う仮想マシン４全体の稼働状態の低下を抑える、つまり実際に運用できなくなる仮想マシン４をより少なくすることが重要と云える。【００２２】
従来の情報処理装置のなかには、仮想マシン毎に、その仮想マシンが使用しているＣＰＵコアを備えたＣＰＵパッケージに障害が発生した場合に、その仮想マシンにＣＰＵコアを割り当てるＣＰＵパッケージが満たすべき条件を自動的に設定するものがある。条件は、優先順位を含め、複数、設定することができる。それにより、条件を自動的に設定する情報処理装置では、設定した条件を満たすＣＰＵパッケージのＣＰＵコアを仮想マシンに割り当てることができる。【００２３】
この従来の情報処理装置で設定可能な条件としては、占有割り当て条件、排他連携を含む占有割り当て条件、等がある。占有割り当て条件とは、１つのＣＰＵパッケージに１台の仮想マシンのみを割り当てる条件である。排他連携を含む占有割り当て条件とは、指定された仮想マシンと共に同じＣＰＵパッケージのＣＰＵコアを割り当てない条件である。【００２４】
この従来の情報処理装置では、例えば占有割り当て条件、及び排他連携を含む占有割り当て条件を共に設定する場合、そのうちの一つが代替用と設定される。それにより、この従来の情報処理装置は、代替用でない条件を満たすＣＰＵパッケージが存在しない場合、代替用の条件を満たすＣＰＵパッケージのＣＰＵコアを割り当てることにより、条件間の優先順位に沿った割り当てを行うようになっている。【００２５】
この従来の情報処理装置では、排他連携を含む占有割り当て条件は、同一のＣＰＵパッケージの共有による二重障害を防止するために設定される。そのために、排他連携を含む占有割り当て条件を設定する対象は、他の仮想マシンと連携させる仮想マシンとなっている。これは、図３に表す情報処理装置３０を例にとれば、同じ処理系３２に含まれる２台の仮想マシン３３、３４には、可能な限り、同じＣＰＵパッケージのＣＰＵコアを割り当てないようにすることを意味する。そのため、この従来の情報処理装置では、ＣＰＵコアを新たに割り当てた後のＣＰＵパッケージに発生する障害によって稼働を継続できなくなる処理系の数を抑えるのは非常に困難となっている。このことから、この従来の情報処理装置では、複数の仮想マシンを連携させる場合、ＣＰＵパッケージに発生する障害の影響を大きくさせやすくなっている。
【先行技術文献】
【特許文献】
【００２６】
【特許文献１】特開２０１０−２０５２０９号公報
【特許文献２】特開２００７−２０７２１９号公報
【発明の開示】
【発明が解決しようとする課題】
【００２７】
１側面では、本発明は、ＣＰＵパッケージ（演算処理装置）に障害が発生したとしても、その障害に伴う情報処理装置の運用状態の低下をより抑えるための技術を提供することを目的とする。
【課題を解決するための手段】
【００２８】
本発明を適用した１システムは、作成すべき仮想マシン毎に、仮想マシンに割り当てるべき演算処理装置コアの数を指定する設定情報、及び設定情報が表す仮想マシンのなかで連携して動作する複数の仮想マシンをグループとして表すグループ情報を記憶した記憶部と、設定情報が表す仮想マシンのなかで演算処理装置コアを割り当てる対象となる第１の仮想マシンが発生した場合に、演算処理装置コアを搭載する何れかの演算処理装置に発生する障害に伴う稼働可能な仮想マシン全体の稼働状態の低下を考慮した規則に従って、設定情報、及びグループ情報を参照し、設定情報が指定する数の演算処理装置コアを第１の仮想マシンに割り当てる割当部と、を有する。
【発明の効果】
【００２９】
本発明を適用した１システムでは、ＣＰＵパッケージ（演算処理装置）に障害が発生したとしても、その障害に伴う運用状態の低下をより抑えることができる。
【図面の簡単な説明】
【００３０】
【図１】仮想マシンへのＣＰＵコアの割り当て例を表す図である。
【図２】本実施形態による情報処理装置の構成例、及びその情報処理装置上に作成される仮想マシン例を説明する図である。
【図３】ウェブシステムの構成例を表す図である。
【図４】設定情報の構成例を説明する図である。
【図５】割り当て優先度の決定ポリシー例を説明する図である。
【図６】ＣＰＵ管理情報の構成例を説明する図である。
【図７】割り当て優先度情報の構成例を説明する図である。
【図８】ＣＰＵ管理情報の更新例を説明する図である。
【図９】ＣＰＵパッケージの数が仮想マシンの数より少ない場合に作成されるＣＰＵ管理情報の内容例を説明する図である。
【図１０】ＣＰＵパッケージの数が仮想マシンの数より少ない場合のＣＰＵ管理情報の更新例を説明する図である。
【図１１】ＣＰＵパッケージの数が仮想マシンの数より少ない場合のＣＰＵ管理情報の他の更新例を説明する図である。
【図１２】ＶＭＭが実行する全体処理のフローチャートである。
【図１３】ＣＰＵ管理情報作成処理のフローチャートである。
【図１４】ＣＰＵコア割り当て処理のフローチャートである。
【図１５】ＣＰＵ障害予兆監視処理のフローチャートである。
【図１６】割り当て優先度決定処理のフローチャートである。
【図１７】ＣＰＵコア切替処理のフローチャートである。
【図１８】他の実施形態による情報処理装置の構成例、及びその情報処理装置上に作成される仮想マシン例を説明する図である。
【図１９】他の実施形態で作成されるＣＰＵ管理情報の内容例を表す図である。
【図２０】訂正可能エラー累積情報の構成例を説明する図である。
【図２１】他の実施形態における割り当て優先度情報の構成例を説明する図である。
【図２２】他の実施形態におけるＣＰＵパッケージに障害が発生した場合のＣＰＵ管理情報の更新例を説明する図である。
【図２３】管理コントローラが実行する全体処理のフローチャートである。
【図２４】訂正可能エラー累積情報更新処理のフローチャートである。
【図２５】割り当て優先度反映処理のフローチャートである。
【発明を実施するための形態】
【００３１】
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
図２は、本実施形態による情報処理装置の構成例、及びその情報処理装置上に作成される仮想マシン例を説明する図である。
【００３２】
本実施形態による情報処理装置２００は、図２に表すように、資源２１０を備え、その資源２１０を用いて、ＶＭＭ２２０、及び４台の仮想マシン２３１（２３１−１〜２３１−４）が動作する。図２では、資源２１０として、４つのＣＰＵパッケージ２１１（２１１−１〜２１１−４）、記憶装置２１２、及びＮＩＣ（Network Interface Card）２１３のみを表しているが、資源２１０は図２に表す例に限定されない。
【００３３】
上記記憶装置２１２は、実際にはハードディスク装置等の補助記憶装置、及びメモリモジュール等の主記憶装置を含む記憶装置群である。その記憶装置２１２には、設定情報２１２ａの他に、ＶＭＭ２２０を実現させるプログラム（以降「ＶＭＭソフトウェア」と表記）、各仮想マシン２３０上で実行される各種プログラム（ＯＳ（Operating System）、アプリケーション・プログラム、等）も格納されている。
【００３４】
各ＣＰＵパッケージ２１１は、２つのＣＰＵコア２１５（２１５−０、２１５−１）、共有リソース２１６、及び訂正可能エラーカウンタレジスタ２１７を備えている。共有リソース２１６とは、例えばＬＬＣ、記憶装置２１２とのインターフェース、及び他のＣＰＵパッケージ２１１等との通信を可能にするインターフェース等が含まれる。各ＣＰＵコア２１５は、多くのハードウェア割り込みを生成可能なＡＰＩＣ（Advanced Programmable Interrupt Controller）２１５ａを備えている。図２中に表記の「ＡＰＩＣ  ＩＤ」は、ＡＰＩＣ２１５ａに割り当てられた識別情報を表している。以降、ＡＰＩＣ  ＩＤは、ＡＰＩＣ２１５ａに割り当てられた識別情報の意味で用いる。
【００３５】
訂正可能エラーカウンタレジスタ２１７は、例えばＬＬＣに訂正可能なエラーが発生した回数を計数するためのレジスタであり、その値は、訂正可能なエラーの発生を認識したＣＰＵコア２１５によって更新される。障害が発生する前には、単位時間当たりに発生する訂正可能なエラーの数が多くなる。このことから、訂正可能エラーカウンタレジスタ２１７の値を監視することで、ＣＰＵパッケージ２１１に現れる障害の予兆を検知することができる。
【００３６】
４台の仮想マシン２３１は、図３に表すように、２つの仮想マシングループ２３０（２３０−１、２３０−１）に分けられている。各仮想マシングループ２３０は、例えば図３に表す２つの処理系３２のうちの一方に対応する。ここでは、仮想マシングループ２３０-１は処理系３２−１、仮想マシングループ２３０−２は処理系３２−２、にそれぞれ対応していると想定する。また、仮想マシングループ２３０−１の仮想マシン２３１−１、及び２３１−２は、処理系３２−１の仮想マシン３３、及び３４として動作すると想定する。同様に、仮想マシングループ２３０−２の仮想マシン２３１−３、及び２３１−４は、処理系３２−２の仮想マシン３３、及び３４として動作すると想定する。図２では、各仮想マシン２３１には、全て１つの仮想ＣＰＵコア２３２が割り当てられると想定している。
【００３７】
ＶＭＭ２２０上には、図２に表すように、ＣＰＵコア切替部２２１、及びＣＰＵ割り当て管理部２２２が実現されている。ＣＰＵコア切替部２２１は、障害予兆検知部２２１ａ、及びコア切替部２２１ｂを備え、ＣＰＵ割り当て管理部２２２は、ＣＰＵ管理情報作成部２２２ａ、ＣＰＵコア割り当て部２２２ｂ、及びＣＰＵグルーピング部２２２ｃを備えている。また、ＶＭＭ２２０は、ＣＰＵ管理情報２２５、及び割り当て優先度情報２２６を管理する。
【００３８】
ＣＰＵコア切替部２２１は、稼働中の仮想マシン２３１に新たにＣＰＵコア２１５を割り当てるための機能である。障害予兆検知部２２１ａは、各ＣＰＵパッケージ２２１の訂正可能エラーカウンタレジスタ２１７を監視し、現れた障害の予兆の検知を行う。コア切替部２２１ｂは、割り当て優先度情報２２６を参照し、ＣＰＵコア２１５を新たに割り当てるべき仮想マシン２３１に対してＣＰＵコア２１５を割り当て、ＣＰＵ管理情報２２５の更新を行う。ＣＰＵコア切替部２２１のより詳細な動作は後述する。
【００３９】
多くの場合、ＣＰＵパッケージ２１１に障害が発生するまえに、障害の予兆が現れる。それにより、多くの場合、障害の予兆が検知され、仮想マシン２３１へのＣＰＵコア２１５の割り当てが変更される。仮想マシン２３１へのＣＰＵコア２１５の割り当ての変更方法は、障害発生時と、障害の予兆の検知時とで基本的に変化しない。このようなことから、ここでは、特に断らない限り、障害の予兆の検知は障害の発生を含む意味で用いる。
【００４０】
ＣＰＵ割り当て管理部２２２は、仮想マシン２３１の作成（稼働開始）時におけるＣＰＵコア２１５の割り当てを管理するための機能である。ＣＰＵ管理情報作成部２２２ａは、設定情報２１２ａを参照して、作成対象とする仮想マシン２３１、及び各仮想マシン２３１に割り当てるべきＣＰＵコア２１５の数を特定する。その特定結果に従い、ＣＰＵ管理情報作成部２２２ａは、各仮想マシン２３１に割り当てるべきＣＰＵコア２１５を選択し、その選択結果を表すＣＰＵ管理情報２２５を作成する。
【００４１】
ＣＰＵコア割り当て部２２２ｂは、作成されたＣＰＵ管理情報２２５に従って、各仮想マシン２３１にＣＰＵコア２１５を割り当てる。ＣＰＵグルーピング部２２２ｃは、割り当て優先度情報２２６を作成する。
【００４２】
次に、図４〜図１１に表す各種説明図を参照し、ＶＭＭ２２０の動作についてより詳細に説明する。
【００４３】
図４は、設定情報の構成例を説明する図である。この設定情報２１２ａは、作成対象とする仮想マシン２３１毎に、その仮想マシン２３１に割り当てるべき資源量を指定するための情報である。図４では、本実施形態に特に係わる資源量として、割り当てるべきＣＰＵコア２１５の数を表す情報である割り当てＣＰＵコア数のみを表記している。仮想マシン番号は、仮想マシン２３１の識別情報であり、図４中に表記の「１」〜「４」の数値は、それぞれ仮想マシン２３１−１〜２３１−４に割り当てられた仮想マシン番号を表している。
【００４４】
設定情報２１２ａは、仮想マシン２３１毎に、グループ番号を指定する。このグループ番号は、仮想マシン２３１が属する仮想マシングループ２３０に割り当てられた識別情報である。図４中に表記の「１」、「２」の数値は、それぞれ仮想マシングループ２３０−１、２３０−２に割り当てられたグループ番号を表している。
【００４５】
図５は、割り当て優先度の決定ポリシー例を説明する図である。この割り当て優先度の決定ポリシーは、各仮想マシン２３１にＣＰＵコア２１５を割り当てるうえでのルールであり、パターン毎に、設定すべき優先度を指定する。図５では、優先度を「高」「中」及び「低」のうちの何れかにより表している。「高」は、最優先で割り当てるべきＣＰＵパッケージ２１１に設定される優先度である。
【００４６】
パターンは、ＣＰＵパッケージ２１１の状態に相当する。優先度として「中」或いは「低」が設定されるパターンは、想定する仮想マシン２３１に着目してのものである。想定する仮想マシン２３１としては、図５ではＣＰＵコア２１５の割り当てを変更すべき仮想マシン２３１を想定しているが、想定する仮想マシン２３１は作成対象とする仮想マシン２３１でも内容は基本的に同じとなる。
【００４７】
「高」の優先度は、図５に表すように、何れのＣＰＵコア２１５にも仮想マシン２３１が割り当てられていないＣＰＵパッケージ２１１に設定される。「中」の優先度は、ＣＰＵコア２１５に割り当てられた仮想マシン２３１のグループ番号が全て同じであり、且つ想定する仮想マシン２３１のグループ番号と一致するＣＰＵパッケージ２１１に設定される。「低」の優先度は、ＣＰＵコア２１５に割り当てられた仮想マシン２３１のグループ番号の少なくとも一つが、想定する仮想マシン２３１のグループ番号と一致しないＣＰＵパッケージ２１１に設定される。
【００４８】
図５に表す割り当て優先度の決定ポリシーは、ＣＰＵコア割り当て部２２２ｂ、及びＣＰＵグルーピング部２２２ｃに適用される。ＣＰＵ管理情報作成部２２２ａは、割り当て優先度決定ポリシーに係わらない部分を対象に、ＣＰＵ管理情報２２５を作成する。それにより、作成される各仮想マシン２３１、及びＣＰＵコア２１５の割り当てが変更される仮想マシン２３１には、図５に表す割り当て優先度の決定ポリシーに従って、ＣＰＵコア２１５が割り当てられる。
【００４９】
図６は、ＣＰＵ管理情報の構成例を説明する図である。ＣＰＵ管理情報２２５には、図６に表すように、ＣＰＵコア２１５毎に、コア管理番号、位置情報、割り当て仮想マシン情報、及び割当除外フラグが格納される。
【００５０】
コア管理番号は、ＣＰＵコア２１５を管理するために割り当てた識別情報である。図６に表記の「１」「８」の数値は、コア管理番号の例である。位置情報は、コア管理番号が割り当てられたＣＰＵコア２１５が存在する位置を表す情報である。位置情報として表記の「ＣＰＵパッケージ番号」は、対応するＣＰＵコア２１５を搭載したＣＰＵパッケージ２１１の識別番号（後述するシリアル番号とは異なる）を表している。ＣＰＵパッケージ番号の例として表記の「Ａ」〜「Ｄ」は、それぞれＣＰＵパッケージ２１１−１〜２１１−４を表している。位置情報として表記の「ＣＰＵコア番号」は、対応するＣＰＵコア２１５の搭載されたＣＰＵパッケージ２１１内での識別番号を表している。ＣＰＵコア番号の例として表記の「０」「１」は、それぞれＣＰＵコア２１５−０、２１５−１を表している。
【００５１】
割り当て仮想マシン情報は、対応するＣＰＵコア２１５が割り当てられた仮想マシン２３１を表す情報である。その情報の例として表記の「仮想マシン１」〜「仮想マシン４」は、それぞれ仮想マシン２３１−１〜２３１−４を表している。
【００５２】
障害が発生したＣＰＵパッケージ２１１、及び障害の予兆が検知されたＣＰＵパッケージ２１１には、共に、仮想マシン２３１を割り当てるべきではない。割当除外フラグは、そのようなＣＰＵパッケージ２１１への仮想マシン２３１の割り当てを回避するための情報である。割当除外フラグの内容例として表記の「Ｎｏ」は、仮想マシン２３１への割り当てを行っても良いことを表している。仮想マシン２３１への割り当てを行うべきではないＣＰＵパッケージ２１１の割当除外フラグは、「Ｎｏ」から「Ｙｅｓ」に更新される。
【００５３】
図４に表すように、各仮想マシン２３１に割り当てるべきＣＰＵコア２１５は１つであり、ＣＰＵパッケージ２１１は４つ情報処理装置２００に搭載されている。このことから、最終的には、図６に表すように、図５に表す割り当て優先度の決定ポリシーに従って、各ＣＰＵパッケージ２１１の１つのＣＰＵコア２１５にそれぞれ仮想マシン２３１を割り当てることを指示するＣＰＵ管理情報２２５が作成される。
【００５４】
図７は、割り当て優先度情報の構成例を説明する図である。
この割り当て優先度情報２２６は、ＣＰＵパッケージ２１１毎に、仮想マシン２３１にＣＰＵコア２１５を新たに割り当てるうえでの優先度を表す情報である。図７に表すように、割り当て優先度情報２２６には、ＣＰＵパッケージ２１１毎に、そのパッケージ番号、及び優先度が格納される。
【００５５】
優先度は、上記のように、想定する仮想マシン２３１によって変化する。そのため、ＣＰＵグルーピング部２２２ｃは、割り当て優先度情報２２６を、想定する仮想マシン２３１毎に作成する。図７に内容例を表す割り当て優先度情報２２６は、仮想マシン２３１−１、或いは２３１−２を想定した場合のものである。
【００５６】
図８は、ＣＰＵ管理情報の更新例を説明する図である。
ＣＰＵ管理情報２２５は、作成された仮想マシン２３１にそれぞれ割り当てられているＣＰＵコア２１５を確認するために用いられる。そのため、ＣＰＵ管理情報２２５は、仮想マシンへのＣＰＵコアの割り当てを変更した場合、更新される。図８に内容例を表すＣＰＵ管理情報２２５は、仮想マシン２３１−１へのＣＰＵコア２１５の割り当てをＣＰＵパッケージ２１１−１のＣＰＵコア２１５−０からＣＰＵパッケージ２１１−２のＣＰＵコア２１５−１に変更した場合のものである。この割り当ての変更は、ＣＰＵパッケージ２１１−１に発生した障害、或いはそのＣＰＵパッケージ２１１−１に現れた障害の予兆の検知により行われる。そのため、ＣＰＵパッケージ２１１−１の各ＣＰＵコア２１５の割当除外フラグは「Ｎｏ」から「Ｙｅｓ」に更新されている。
【００５７】
仮想マシン２３１−１へのＣＰＵコア２１５の割り当ての変更を図８に表す内容例のように行った場合、ＣＰＵパッケージ２１１−２〜２１１−４の何れに障害が発生したとしても、２つの処理系３２のうちの少なくとも一方は運用を継続することができる。これは、その後に障害が発生したとしても、情報処理装置２００の運用状態の低下をより抑えられるように、仮想マシン２３１へのＣＰＵコア２１５の割り当て変更が最適に行われたことを意味する。
【００５８】
各仮想マシン２３１に割り当てるべきＣＰＵコア２１５が１つであっても、情報処理装置２００に搭載されるＣＰＵパッケージ２１１の数が仮想マシン２３１の数より少ない場合、各仮想マシン２３１に異なるＣＰＵパッケージ２１１を割り当てることはできない。図２に表す構成例では、同じＣＰＵパッケージ２１１が備える各ＣＰＵコア２１５に異なる仮想マシン２３１を割り当てなければならない。情報処理装置２００に搭載されるＣＰＵパッケージ２１１が３つの場合、ＣＰＵ管理情報作成部２２２ａ及びＣＰＵコア割り当て部２２２ｂによって、例えば図９に表す内容例のＣＰＵ管理情報２２５が作成される。図９に表す内容例のＣＰＵ管理情報２２５は、同じ仮想マシングループ２３０に属する２台の仮想マシン２３１−３、及び２３１−４をＣＰＵパッケージ２１１−３のＣＰＵコア２１５−０、２１５−１にそれぞれ割り当てることを指定する。
【００５９】
図９に表す内容例のＣＰＵ管理情報２２５に従って、各仮想マシン２３１にＣＰＵコア２１５を割り当てた後、ＣＰＵパッケージ２１１−１に障害が発生するか、或いは障害の予兆が検知された場合、図１０に表すように、ＣＰＵ管理情報２２５は更新される。図１０に表すような内容例の更新を行った場合、ＣＰＵパッケージ２１１−２及び２１１−３の何れか一方に障害が発生しても、２つの処理系３２のうちの一方は運用を継続することができる。このことから、障害が発生しても、情報処理装置２００の運用は継続させることができる。
【００６０】
図９に表す内容例のＣＰＵ管理情報２２５に従って、各仮想マシン２３１にＣＰＵコア２１５を割り当てた後、ＣＰＵパッケージ２１１−３に障害が発生するか、或いは障害の予兆が検知された場合、図１１に表すように、ＣＰＵ管理情報２２５は更新される。図１１に表すような内容例の更新を行った場合、ＣＰＵパッケージ２１１−１及び２１１−２の何れか一方に発生する障害、或いは障害の予兆の検知により、２つの処理系３２は共に運用を停止することになる。
【００６１】
上記のように、資源としてのＣＰＵパッケージ２１１に余裕が余りない場合であっても、同じ仮想マシングループ２３０に属する仮想マシン２３１へのＣＰＵコア２１５の割り当てに、同一のＣＰＵパッケージ２１１を優先させる。この結果、稼働可能な仮想マシン２３１は最適な形で残すことができる。それにより、発生する障害の影響はより抑えられることとなる。
【００６２】
以降は、図１２〜図１７に表すフローチャートを参照し、ＶＭＭ２２０の動作について詳細に説明する。
【００６３】
図１２は、ＶＭＭが実行する全体処理のフローチャートである。この全体処理は、ＶＭＭ２２０が仮想マシン２３１への資源２１０の割り当てのために実行する処理を抜粋し、抜粋した処理の流れを表したものである。始めに図１２を参照して、全体処理について詳細に説明する。
【００６４】
ＶＭＭ２２０には、各仮想マシン２３１を制御できるように、各仮想マシン２３１に割り当てられたＣＰＵコア２１５（ＣＰＵパッケージ２１１）が割り当てられるのが普通である。ＶＭＭ２２０を実現させるＶＭＭソフトウェアは、ＣＰＵパッケージ２１１のＣＰＵコア２１５によって実行される。このことから、処理を実行する主体としてはＣＰＵコア２１５を想定する。
【００６５】
この図１２には、後述する他の実施形態でのみ実行される処理ステップも表している。その処理ステップはＳ１０である。それにより、本実施形態では、Ｓ７の終了後、Ｓ８に移行するようになっている。
【００６６】
ＶＭＭソフトウェアを記憶装置２１２から読み出して実行を開始したＣＰＵコア２１５は、先ず、初期化処理を実行する（Ｓ１）。次にＣＰＵコア２１５は、ＣＰＵ管理情報２２５を作成するＣＰＵ管理情報作成処理を実行する（Ｓ２）。
【００６７】
図１３は、ＣＰＵ管理情報作成処理のフローチャートである。ここで図１３を参照し、ＣＰＵ管理情報作成処理について詳細に説明する。
【００６８】
先ず、ＣＰＵコア２１５は、例えば新規のＣＰＵ管理情報２２５を作成し、作成したＣＰＵ管理情報２２５を記憶装置２１２上に確保した領域に格納する（Ｓ１１）。その後、ＣＰＵ２１５は、情報処理装置２００に搭載された各ＣＰＵパッケージ２１１から、そのＣＰＵパッケージ２１１内の各ＣＰＵコア２１５からＡＰＩＣ  ＩＤを取得し、取得したＡＰＩＣ  ＩＤ中の情報をＣＰＵ管理情報２２５に格納するための処理ループＬ１０を実行する。
【００６９】
ＡＰＩＣ  ＩＤは、複数のビットで構成される識別情報である。ＡＰＩＣ  ＩＤには、ＣＰＵパッケージ番号を表すビット列、及びCPUコア番号を表すビット列が含まれる。ＣＰＵパッケージ番号、及びＣＰＵコア番号は共に、ＡＰＩＣ  ＩＤから抽出する対象となる情報である。
【００７０】
この処理ループＬ１０では、先ず、ＣＰＵコア２１５は、情報を取得すべきＣＰＵパッケージ２１１、及びそのＣＰＵパッケージ２１１内で対象となるＣＰＵコア２１５を選択し、選択したＣＰＵコア２１５のＡＰＩＣ２１５からそのＩＤを取得する（Ｓ１２）。次に、ＣＰＵコア２１５は、取得したＡＰＩＣ  ＩＤからＣＰＵパッケージ番号を取り出し（Ｓ１３）、更にそのＡＰＩＣ  ＩＤからＣＰＵコア番号を取り出す（Ｓ１４）。ＣＰＵコア２１５は、そのようにして取り出したＣＰＵパッケージ番号、及びＣＰＵコア番号に、コア管理番号を割り当て、コア管理番号、及び位置情報としてのＣＰＵパッケージ番号、及びＣＰＵコア番号をＣＰＵ管理情報２２５に格納する（Ｓ１５）。ＣＰＵ管理情報２２５がテーブルであった場合、コア管理番号、及び位置情報の格納は、１エントリを追加し、追加したエントリにコア管理番号、及び位置情報を格納することで行われる。
【００７１】
コア管理番号、及び位置情報を格納した後、他にＡＰＩＣ  ＩＤを取得すべきＣＰＵコア２１５が残っていない場合、処理ループＬ１０が終了し、その処理ループＬ１０の終了に伴い、このＣＰＵ管理情報作成処理も終了する。他にＡＰＩＣ  ＩＤを取得すべきＣＰＵコア２１５が残っている場合、上記Ｓ１２に戻り、ＡＰＩＣ  ＩＤを取得すべきＣＰＵコア２１５の選択、選択したＣＰＵコア２１５からのＡＰＩＣ  ＩＤの取得が行われる。それにより、処理ループＬ１０の実行が継続される。図２に表すＣＰＵ管理情報作成部２２２ａは、このＣＰＵ管理情報作成処理をＣＰＵコア２１５が実行することで実現される。
【００７２】
図１２の説明に戻る。
上記ＣＰＵ管理情報作成処理を実行した後はＳ３に移行する。そのＳ３では、ＣＰＵコア２１５は、作成すべき仮想マシン２３１にそれぞれ資源２１０を割り当てる処理を実行する。
【００７３】
図１４は、ＣＰＵコア割り当て処理のフローチャートである。このＣＰＵコア割り当て処理は、作成する各仮想マシン２３１にＣＰＵコア２１５を割り当てるために、Ｓ３内で実行される処理である。図２に表すＣＰＵコア割り当て部２２２ｂは、このＣＰＵコア割り当て処理をＣＰＵコア２１５が実行することで実現される。ここで図１４を参照し、ＣＰＵコア割り当て処理について詳細に説明する。
【００７４】
このＣＰＵコア割り当て処理には、仮想マシン毎にＣＰＵコア２１５を割り当てるための処理ループＬ２０が形成されている。この処理ループＬ２０内には、処理ループＬ２０で対象とした仮想マシン２３１に割り当てるべき数のＣＰＵコア２１５を探し出して割り当てるための処理ループＬ２５が形成されている。各仮想マシン２３１に割り当てるべき数のＣＰＵコア２１５を割り当てるために、ＣＰＵ管理情報２２５、及び設定情報２１２ａが参照される。
【００７５】
この処理ループＬ２５では、ＣＰＵコア２１５は、先ず、設定情報２１２ａ、及びＣＰＵ管理情報２２５を参照し、仮想マシン２３１が割り当てられていないＣＰＵコア２１５毎に、優先度を決定する（Ｓ２１）。この優先度の決定は、図５に表す割り当て優先度の決定ポリシーに沿って行われる。
【００７６】
各ＣＰＵコア２１５の優先度を決定した後、ＣＰＵコア２１５は、決定した優先度のなかで最も高い優先度のＣＰＵコア２１５を、対象とする仮想マシン２３１に割り当て、その割り当て結果をＣＰＵ管理情報２２５に反映させる（Ｓ２２）。
【００７７】
このようにして、対象とする仮想マシン２３１に、１つのＣＰＵコア２１５が割り当てられる。対象とする仮想マシン２３１に更にＣＰＵコア２１５を割り当てる必要がある場合、上記Ｓ２１に戻り、優先度の決定が再度、行われる。対象とする仮想マシン２３１に更にＣＰＵコア２１５を割り当てる必要がない場合、処理ループＬ２５が終了し、処理ループＬ２０に移行する。
【００７８】
移行先の処理ループＬ２０では、ＣＰＵコア２１５の割り当てを行うべき仮想マシン２３１が他に存在する場合、別の仮想マシン２３１が対象に選択される。ＣＰＵコア２１５の割り当てを行うべき仮想マシン２３１が他に存在しない場合、処理ループＬ２０が終了し、その処理ループＬ２０の終了に伴い、このＣＰＵコア割り当て処理も終了する。
【００７９】
図１２の説明に戻る。
上記ＣＰＵコア割り当て処理を含むＳ３を実行することにより、作成すべき全ての仮想マシン２３１への資源２１０の割り当てが終了する。そのＳ３を実行した後に移行するＳ４では、ＣＰＵコア２１５は、作成した全ての仮想マシン２３１を起動させる。
【００８０】
作成した全ての仮想マシン２３１を起動させたＣＰＵコア２１５は、次に、各ＣＰＵパッケージに現れる障害の予兆を検知するためのＣＰＵ障害予兆監視処理を実行する（Ｓ５）。
【００８１】
図１５は、ＣＰＵ障害予兆監視処理のフローチャートである。ここで図１５を参照し、ＣＰＵ障害予兆監視処理について詳細に説明する。
【００８２】
上記のように、ＣＰＵパッケージ２１１に現れる障害の予兆の検知は、訂正可能エラーカウンタレジスタ２１７の値を監視することで行われる。本実施形態では、単位時間当たりに発生する訂正可能なエラーの数がしきい値を超えた場合に、障害の予兆が現れたと見なすようにしている。このことから、ＣＰＵ障害予兆監視処理は、例えば一定時間が経過する度に実行される。
【００８３】
このＣＰＵ障害予兆監視処理では、始めに、ＣＰＵパッケージ２１１毎に、現れた障害の予兆を検知するための処理ループＬ３０が実行される。
【００８４】
この処理ループＬ３０では、ＣＰＵコア２１５は、先ず、対象とするＣＰＵパッケージ２１１に要求して、訂正可能エラーカウンタレジスタ２１７の値を取得する（Ｓ３１）。次に、ＣＰＵコア２１５は、取得した値から前回、取得した値を減算することにより、一定時間の経過による増分を計算し、今回、取得した値を保存する（Ｓ３２）。その後、ＣＰＵコア２１５は、増分が上記しきい値を超えているか否か判定する（Ｓ３３）。計算した増分がしきい値より大きい場合、Ｓ３３の判定はｙｅｓとなってＳ３４に移行する。計算した増分がしきい値以下であった場合、Ｓ３３の判定はｎｏとなって、処理ループＬ３０内の一連の処理が終了する。
【００８５】
一連の処理が終了した処理ループＬ３０は、他に対象とすべきＣＰＵパッケージ２１１が存在しない場合、終了する。他に対象とすべきＣＰＵパッケージ２１１が残っている場合、処理ループＬ３０は、残っているＣＰＵパッケージ２１１を対象に設定し、上記Ｓ３１に戻る。それにより、処理ループＬ３０の実行が継続される。
【００８６】
Ｓ３４では、ＣＰＵコア２１５は、障害の予兆が検知されたと見なす。それにより、ＣＰＵコア２１５は、ＣＰＵ管理情報２２５内の対象とするＣＰＵパッケージ２１１の割当除外フラグを「Ｎｏ」から「Ｙｅｓ」に更新する。その後、このＣＰＵ障害予兆監視処理が終了する。
【００８７】
本実施形態では、上記のように、障害の予兆の検知により、ＣＰＵ障害予兆監視処理を終了するようにしている。これは、複数のＣＰＵパッケージ２１１に一度に障害の予兆が現れる確率は極めて低い、障害の予兆が現れたＣＰＵパッケージ２１１のＣＰＵコア２１５を使用している仮想マシン２３１に別のＣＰＵコア２１５をより迅速に割り当てる、といった理由からである。
【００８８】
図１２の説明に戻る。
上記ＣＰＵ障害予兆監視処理の実行が終了すると、次にＣＰＵコア２１５は、ＣＰＵパッケージ２１１に障害の予兆が検知されたか否か判定する（Ｓ６）。ＣＰＵ管理情報２２５が表す何れかのＣＰＵパッケージ２１１の割当除外フラグが「Ｎｏ」から「Ｙｅｓ」に更新された場合、Ｓ６の判定はｙｅｓとなって処理ループＬ１に移行する。割当除外フラグが「Ｎｏ」から「Ｙｅｓ」に更新されたＣＰＵパッケージ２１１が存在しない場合、Ｓ６の判定はｎｏとなる。その場合、一定時間の経過を待ってＳ５に移行し、再度、ＣＰＵ障害予兆監視処理が実行される。
【００８９】
上記処理ループＬ１では、障害の予兆が検知されたＣＰＵパッケージ２１１のＣＰＵコア２１５を使用している仮想マシン２３１毎に、その仮想マシン２３１に別のＣＰＵコア２１５を割り当てるための一連の処理が行われる。
【００９０】
先ず、ＣＰＵコア２１５は、障害の予兆が検知されたＣＰＵパッケージ２１１のＣＰＵコア２１５を使用している１台の仮想マシン２３１を選択し、選択した仮想マシン２３１を想定して割り当て優先度情報２２６を作成する割り当て優先度決定処理を実行する（Ｓ７）。次に、ＣＰＵコア２１５は、作成した割り当て優先度情報２２６、及びＣＰＵ管理情報２２５を参照し、想定した仮想マシン２３１に割り当てられているＣＰＵコア２１５を変更するＣＰＵコア切替処理を実行する（Ｓ８）。
【００９１】
このＣＰＵコア切替処理の終了により、処理ループＬ１の一連の処理が終了する。それにより、ＣＰＵコア２１５の割り当てを変更すべき仮想マシン２３１が他に存在しない場合、処理ループＬ１が終了し、一定時間が経過した後、上記Ｓ５に戻る。ＣＰＵコア２１５の割り当てを変更すべき仮想マシン２３１が他に存在する場合、上記Ｓ７に戻る。
【００９２】
図１６は、上記Ｓ７として実行される割り当て優先度決定処理のフローチャートである。次に、図１６を参照し、その割り当て優先度決定処理について詳細に説明する。
【００９３】
この割り当て優先度決定処理では、ＣＰＵパッケージ２１１毎に、優先度を決定するための処理ループＬ４０が実行される。その処理ループＬ４０では、先ず、ＣＰＵコア２１５は、対象とするＣＰＵパッケージ２１１に対する優先度を設定する（Ｓ４１）。次に、ＣＰＵコア２１５は、割り当て優先度情報２２６の各エントリに、設定した優先度（初期値）として「高」を格納する（Ｓ４２）。初期値の格納を行った後は処理ループＬ４５に移行する。
【００９４】
この処理ループＬ４５では、対象とするＣＰＵパッケージ２１１に搭載されているＣＰＵコア２１５毎に、設定すべき優先度を設定するための処理が行われる。
【００９５】
先ず、ＣＰＵコア２１５は、ＣＰＵ管理情報２２５を参照し、対象とするＣＰＵコア２１５に既に仮想マシン２３１が割り当てられているか否か判定する（Ｓ４３）。対象とするＣＰＵコア２１５に仮想マシン２３１が割り当てられていた場合、Ｓ４３の判定はｙｅｓとなってＳ４４に移行する。対象とするＣＰＵコア２１５に仮想マシン２３１が割り当てられていない場合、Ｓ４３の判定はｎｏとなり、ここで処理ループＬ４５内の一連の処理が終了する。
【００９６】
Ｓ４４では、ＣＰＵコア２１５は、設定情報２１２ａを参照し、対象とするＣＰＵコア２１５を使用している仮想マシン２３１が属する仮想マシングループ２３０が、想定する仮想マシン２３１が属する仮想マシングループ２３０と同じか否か判定する。それら仮想マシングループ２３０が同じであった場合、Ｓ４４の判定はｙｅｓとなる。それにより、ＣＰＵコア２１５は、対象とするＣＰＵパッケージ２１１の優先度を「中」に変更する（Ｓ４５）。その後、処理ループＬ４５内の一連の処理が終了する。一方、それら仮想マシングループ２３０が同じでない場合、Ｓ４４の判定はｎｏとなる。それにより、ＣＰＵコア２１５は、対象とするＣＰＵパッケージ２１１の優先度を「低」に変更する（Ｓ４６）。その後、処理ループＬ４５内の一連の処理が終了する。
【００９７】
一連の処理が終了した処理ループＬ４５は、他に対象とすべきＣＰＵコア２１５が存在しない場合、終了し、処理ループＬ４０に戻る。他に対象とすべきＣＰＵコア２１５が存在する場合、上記Ｓ４３に戻り、他のＣＰＵコア２１５を対象にした処理が行われる。
【００９８】
移行した処理ループＬ４０は、他に対象とすべきＣＰＵパッケージ２１１が存在しない場合、終了し、処理ループＬ４０の終了に伴い、この割り当て優先度決定処理も終了する。他に対象とすべきＣＰＵパッケージ２１１が存在する場合、上記Ｓ４１に戻り、他のＣＰＵパッケージ２１１を対象にした処理が行われる。
【００９９】
処理ループＬ４５を実行することにより、対象とするＣＰＵパッケージ２１１の優先度は、図５に表す割り当て優先度の決定ポリシーに従って決定されることになる。それにより、ＣＰＵコア２１５の割り当てを変更すべき仮想マシン２３１には、ＣＰＵパッケージ２１１に発生する障害、及び障害の予兆の検知への耐性が最適となるＣＰＵコア２１５が新たに割り当てられることとなる。図２に表すＣＰＵグルーピング部２２２ｃは、ＣＰＵコア２１５がこの割り当て優先度決定処理を実行することで実現される。
【０１００】
図１７は、上記Ｓ８として実行されるＣＰＵコア切替処理のフローチャートである。最後に、図１７を参照し、そのＣＰＵコア切替処理について詳細に説明する。図２に表すコア切替部２２１ｂは、ＣＰＵコア２１５が、このＣＰＵコア切替処理を実行することで実現される。対象とする仮想マシン２３１は、図１２に表す処理ループＬ１で対象として選択された仮想マシン２３１である。
【０１０１】
このＣＰＵコア切替処理では、先ず、ＣＰＵコア２１５は、直前のＳ７での割り当て優先度決定処理の実行により作成された割り当て優先度情報２２６、及びＣＰＵ管理情報２２５を取得する（Ｓ５１）。その後、ＣＰＵコア２１５は、処理ループＬ５０を実行する。
【０１０２】
処理ループＬ５０は、優先度別に、対象とする優先度が割り当てられたＣＰＵパッケージ２１１のＣＰＵコア２１５のなかで割り当て可能なＣＰＵコア２１５を探し出し、探し出したＣＰＵコア２１５を対象とする仮想マシン２３１に割り当てるためのものである。この処理ループＬ５０内で実行される処理ループＬ５５は、対象とする優先度が割り当てられたＣＰＵパッケージ２１１のＣＰＵコア２１５を対象としたものである。
【０１０３】
処理ループＬ５５では、先ず、ＣＰＵコア２１５は、対象とする優先度が割り当てられたＣＰＵパッケージ２１１内の１つのＣＰＵコア２１５に着目し、着目したＣＰＵコア２１５の割当除外フラグが「Ｙｅｓ」か否か判定する（Ｓ５２）。その割当除外フラグが「Ｙｅｓ」であった場合、Ｓ５２の判定はｙｅｓとなり、ここで処理ループＬ５５内の一連の処理が終了する。その割当除外フラグが「Ｎｏ」であった場合、Ｓ５２の判定はｎｏとなってＳ５３に移行する。
【０１０４】
Ｓ５３では、ＣＰＵコア２１５は、着目したＣＰＵコア２１５が空いているか否か判定する。着目したＣＰＵコア２１５に何れかの仮想マシン２３１が割り当てられている場合、Ｓ５３の判定はｎｏとなり、ここで処理ループＬ５５内の一連の処理が終了する。着目したＣＰＵコア２１５に何れかの仮想マシン２３１も割り当てられていない場合、Ｓ５３の判定はｙｅｓとなってＳ５４に移行する。
【０１０５】
Ｓ５４では、ＣＰＵコア２１５は、対象とする仮想マシン２３１に、着目したＣＰＵコア２１５を新たに割り当てる。次に、ＣＰＵコア２１５は、対象とする仮想マシン２３１に新たに割り当てるべき数のＣＰＵコア２１５の割り当てが実行済みか否か判定する（Ｓ５５）。対象とする仮想マシン２３１に新たに割り当てるべき数のＣＰＵコア２１５の割り当てが実行済みであった場合、Ｓ５５の判定はｙｅｓとなり、ここでＣＰＵコア切替処理が終了する。対象とする仮想マシン２３１に新たに割り当てるべきＣＰＵコア２１５が残っている場合、Ｓ５５の判定はｎｏとなり、ここで処理ループＬ５５内の一連の処理が終了する。
【０１０６】
一連の処理が終了した処理ループＬ５５は、他に着目すべきＣＰＵコア２１５が存在しない場合、終了し、処理ループＬ５０に戻る。他に対象とすべきＣＰＵコア２１５が存在する場合、上記Ｓ５２に戻り、他のＣＰＵコア２１５に着目した処理が行われる。
【０１０７】
移行した処理ループＬ５０は、他に対象とすべきＣＰＵパッケージ２１１が存在しない場合、終了し、処理ループＬ５０の終了に伴い、このＣＰＵコア切替処理も終了する。他に対象とすべきＣＰＵパッケージ２１１が存在する場合、処理ループＬ５５で他のＣＰＵパッケージ２１１が対象として選択された後、上記Ｓ５２に戻る。
【０１０８】
対象とする他のＣＰＵパッケージ２１１は、対象とする優先度と同じ優先度が設定されたＣＰＵパッケージ２１１のなかから選択される。対象とする優先度と同じ優先度が設定され、且つ対象としていないＣＰＵパッケージ２１１が存在しない場合、対象とする優先度より一つ低い優先度が新たに対象として選択される。それにより、新たに対象とする優先度と同じ優先度が設定されたＣＰＵパッケージ２１１のなかから対象とする他のＣＰＵパッケージ２１１が選択される。
【０１０９】
（他の実施形態）
図１８は、他の実施形態による情報処理装置の構成例、及びその情報処理装置上に作成される仮想マシン例を説明する図である。
【０１１０】
他の実施形態による情報処理装置の構成は、上記本実施形態による情報処理装置２００と大部分は同じである。また、他の実施形態による情報処理装置上に作成される仮想マシンは、本実施形態による情報処理装置２００上に作成される仮想マシン２３１と区別する必要はない。他の実施形態による情報処理装置上で動作するＶＭＭの動作の大部分は、本実施形態による情報処理装置２００上で動作するＶＭＭ２２０と同じである。このようなことから、ここでは、本実施形態から異なる部分についてのみ着目する形で説明を行うこととする。
【０１１１】
他の実施形態では、図１８に表すように、情報処理装置２００の資源２１０は、６つのＣＰＵパッケージ２１１（２１１−１〜２１１−６）を備えている。他の実施形態では、各ＣＰＵパッケージ２１１が備えているレジスタ２１１０に格納された自身の識別情報であるシリアル番号が処理に用いられる。
【０１１２】
他の実施形態では、情報処理装置２００上に計６台の仮想マシン２３１（２３１−１〜２３１−６）が作成される。６台の仮想マシン２３１は、３台の仮想マシン２３１−１〜２３１−３が仮想マシングループ２３０−１に属し、残り３台の仮想マシン２３１−４〜２３１−６が仮想マシングループ２３０−２に属している。各仮想マシングループ２３０は、本実施形態と同様に、図３に表す２つの処理系３２のうちの一方に対応すると想定する。その想定では、３台の仮想マシン２３１のうちの２台の仮想マシン２３１をＡＰサーバ３４として用いることが考えられる。
【０１１３】
図１９は、他の実施形態で作成されるＣＰＵ管理情報の内容例を表す図である。
他の実施形態でも、各仮想マシン２３１には１つのＣＰＵコア２１５が割り当てられると想定している。情報処理装置２００に搭載されているＣＰＵパッケージ２１１の数は６である。このことから、作成されるＣＰＵ管理情報２２５は、図１９に表すように、各ＣＰＵパッケージ２１１には、１つのＣＰＵコア２１５にのみ、異なる仮想マシン２３１が割り当てられることを表している。
【０１１４】
管理コントローラ８００は、仮想マシン２３１の管理に用いられる管理装置である。管理コントローラ８００は、資源８１０として、例えばＣＰＵ８１１、メモリ（メモリモジュール）８１２、フラッシュメモリ８１３、及び各ＣＰＵパッケージ２１１との通信を可能にするインターフェース８１４を備えている。
【０１１５】
この管理コントローラ８００上には、記憶装置８２０、情報処理装置通信部８３０、及びＣＰＵ監視部８４０が実現されている。
【０１１６】
記憶装置８２０は、例えばメモリ８１２、及びフラッシュメモリ８１３のうちの少なくとも一方によって実現される。この記憶装置８２０には、訂正可能エラー累積情報８２１が格納される。情報処理装置通信部８３０は、例えばインターフェース８１４である。
【０１１７】
図２０は、訂正可能エラー累積情報の構成例を説明する図である。
この訂正可能エラー累積情報８２１は、各ＣＰＵパッケージ２１１に訂正可能エラーが発生する頻度を把握するための情報である。この訂正可能エラー累積情報８２１には、図２０に表すように、ＣＰＵパッケージ２１１毎に、そのシリアル番号、及び発生した訂正可能エラーの累積値を表すエラー累積値情報が格納される。各ＣＰＵパッケージ２１１のエラー累積値情報が表す累算値は、各ＣＰＵパッケージ２１１間で適切な比較が行えるように、全て同じタイミングからの累算値である。
【０１１８】
情報処理装置２００に搭載されるＣＰＵパッケージ２１１は、普通、交換可能となっている。ＣＰＵパッケージ２１１が交換されたか否かを確認できるように、他の実施形態ではシリアル番号を訂正可能エラー累積情報８２１に格納するようにしている。
【０１１９】
ＣＰＵ監視部８４０は、各ＣＰＵパッケージ２１１を監視し、何れかのＣＰＵパッケージ２１１に発生した障害に対応する。ＣＰＵ監視部８４０には、訂正可能エラー取得部８４１が含まれている。この訂正可能エラー取得部８４１は、各ＣＰＵパッケージ２１１から訂正可能エラーカウンタレジスタ２１７の値を定期的に取得し、取得した値から前回に取得した値を減算して増分を計算し、計算した増分を用いて、訂正可能エラー累積情報８２１を更新する。その更新は、各エラー累積値情報が表す累積値を、それまでの累積値に増分を加算した値に変更することで行われる。
【０１２０】
訂正可能エラー取得部８４１は、訂正可能エラーカウンタレジスタ２１７の値を取得する前に、レジスタ２１１０に格納されたシリアル番号を取得し、取得したシリアル番号が訂正可能エラー累積情報８２１に存在するか否かの確認を行う。それにより、訂正可能エラー累積情報８２１に存在しないシリアル番号を取得したことが確認できた場合、訂正可能エラー取得部８４１は、訂正可能エラー累積情報８２１に格納されている全てのエラー累積値情報をクリアする。そのようにして全てのエラー累積値情報をリセットした状態から、訂正可能エラー取得部８４１は、各エラー累積値情報の格納、及び格納後の更新を行う。
【０１２１】
図１８では、管理コントローラ８００を、各ＣＰＵパッケージ２１１、及びＶＭＭ２２０と線で結んでいる。これは、資源２１０の構成要素としては各ＣＰＵパッケージ２１１が通信対象であり、各仮想マシン２３１とＶＭＭ２２０のなかではＶＭＭ２２０が通信対象であるためである。
【０１２２】
仮想マシン２３１が作成される情報処理装置２００には、普通、情報処理装置２００全体の管理を行う管理装置であるＢＭＣ（Baseboard Management Controller）が搭載される。このＢＭＣは、情報処理装置２００に搭載された各ＣＰＵパッケージ２１１の状態を監視し、必要な処理を行う。このことから、上記管理コントローラ８００は、専用の管理装置として情報処理装置２００に搭載させても良いが、既に情報処理装置２００に搭載されている処理装置上に実現させても良い。管理コントローラ８００は、情報処理装置２００の外にあっても良い。
【０１２３】
他の実施形態では、ＶＭＭ２２０のＣＰＵ割り当て管理部２２２に、ＣＰＵ累積情報取得部２２２ｄが追加されている。このＣＰＵ累積情報取得部２２２ｄは、管理コントローラ８００から訂正可能エラー累積情報８２１を取得し、取得した訂正可能エラー累積情報８２１を割り当て優先度情報２２６に反映させる。
【０１２４】
図２１は、他の実施形態における割り当て優先度情報の構成例を説明する図である。図２１に表す内容例は、ＣＰＵパッケージ２１１−１〜２１１−３のうちの何れかに障害が発生するか、或いは障害の予兆が検知された場合の例である。
【０１２５】
上記実施形態では、割り当て優先度情報２２６には、図７に表すように、ＣＰＵパッケージ２１１毎に、そのパッケージ番号、及び優先度が格納される。他の実施形態では、図２１に表すように、更にエラー累積値情報が格納されるようになっている。それにより、ＣＰＵ累積情報取得部２２２ｄによる割り当て優先度情報２２６への反映は、取得した訂正可能エラー累積情報８２１中の各エラー累積値情報を対応するエラー累積値情報に上書きすることで行われる。
【０１２６】
割り当て優先度情報２２６は、上記実施形態と同じく、仮想マシン２３１に割り当てるＣＰＵコア２１５を変更する場合に作成される。そのため、他の実施形態でも、ＣＰＵコア切替部２２１のコア切替部２２１ｂは、割り当て優先度情報２２６を参照し、ＣＰＵコア２１５の割り当てを変更すべき仮想マシン２３１に新たにＣＰＵコア２１５を割り当てる。
【０１２７】
ＣＰＵコア２１５の割り当てでは、上記実施形態と同じく、優先度の高いＣＰＵパッケージ２１１のＣＰＵコア２１５が優先される。優先度が同じＣＰＵパッケージ２１１が複数、存在する場合、ＣＰＵコア２１５の割り当ては、エラー累積値情報が表す累積値が低いＣＰＵパッケージ２１１を優先させる。それにより、他の実施形態では、より優先度が高く、且つ訂正可能エラーの発生がより少ないＣＰＵパッケージ２１１を優先して、仮想マシン２３１に新たにＣＰＵコア２１５を割り当てるようにしている。
【０１２８】
訂正可能エラーの発生が少ないＣＰＵパッケージ２１１ほど、障害が発生する、或いは障害の予兆が検知されるまでの時間が長いと期待することができる。このため、訂正可能エラーの発生がより少ないＣＰＵパッケージ２１１のＣＰＵコア２１５を優先して割り当てることにより、仮想マシン２３１全体が安定的に稼働できる期間がより長くなる可能性を高くすることができる。
【０１２９】
図２２は、他の実施形態におけるＣＰＵパッケージに障害が発生した場合のＣＰＵ管理情報の更新例を説明する図である。図２２に表す更新例は、ＣＰＵパッケージ２１１−１に障害が発生した場合の例である。
【０１３０】
図１９に表すように、ＣＰＵパッケージ２１１−１のＣＰＵコア２１５−０に仮想マシン２３１−１が割り当てられている。ＣＰＵパッケージ２１１−１に障害が発生するか、或いは障害の予兆が検知された場合、図２１に表すような内容例の割り当て優先度情報２２６が作成される。仮想マシン２３１−１に新たに割り当てるＣＰＵコア２１５は、作成された割り当て優先度情報２２６、及びＣＰＵ管理情報２２５を参照して決定される。このとき、ＣＰＵ管理情報２２５では、ＣＰＵパッケージ２１１−１の各ＣＰＵコア２１５の割当除外フラグは共に「Ｙｅｓ」となっている。そのため、優先度が「中」となっている２つのＣＰＵパッケージ２１１−２及び２１１−３のなかでエラー累積値情報が表す累積値が小さいＣＰＵパッケージ２１１−３のＣＰＵコア２１５−１が仮想マシン２３１−１に新たに割り当てられることとなる。結果、ＣＰＵ管理情報２２５は、図１９に表す内容から図２２に表す内容に更新される。
【０１３１】
なお、他の実施形態では、各ＣＰＵパッケージ２１１の状態を表す情報として、エラー累積値を採用しているが、他の情報を採用しても良い。複数の情報を採用しても良い。採用可能な他の情報としては、例えばＣＰＵパッケージ２１１の総稼働時間、ＣＰＵパッケージ２１１の温度（及びその変化）、負荷、等を挙げることができる。
【０１３２】
上記エラー累積値は、ＣＰＵパッケージ２１１の利用状態、例えば割り当てられた仮想マシン２３１の数、その種類、稼働時間、等に依存して変化する。このことから、実際に用いるエラー累積値としては、各ＣＰＵパッケージ２１１の利用状態の違いに応じて正規化したものが望ましい。
【０１３３】
以降は、図２３〜図２５を参照し、管理コントローラ８００、及びＶＭＭ２２０の各動作について詳細に説明する。
【０１３４】
図２３は、管理コントローラが実行する全体処理のフローチャートである。この図２３、及び図２４を参照し、始めに管理コントローラ８００の動作について詳細に説明する。
【０１３５】
図２３にフローチャートを表す全体処理は、仮想コントローラ８００がＶＭＭ２２０との連携のために実行する処理を抜粋し、抜粋した処理の流れを表したものである。管理コントローラ８００の説明では、始めに図２３を参照して、全体処理について詳細に説明する。この全体処理は、前回、実行してから一定時間が経過するか、或いはＶＭＭ２２０（実際には何れかのＣＰＵパッケージ２１１）からの要求を受信することを契機に起動される。
【０１３６】
管理コントローラ８００は、上記のように、ＣＰＵ８１１が、フラッシュメモリ８１３に格納されたファームウェアをメモリ８１２に読み出して実行することで動作する。このことから、処理を実行する主体としてはＣＰＵ８１１を想定する。
【０１３７】
先ず、ＣＰＵ８１１は、前回、全体処理を実行してから一定時間（図２３中「ウェイト時間」と表記）が経過したか否か判定する（Ｓ１０１）。前回、全体処理を実行してから一定時間が経過していない場合、Ｓ１０１の判定はｎｏとなってＳ１０３に移行する。前回、全体処理を実行してから一定時間が経過している場合、Ｓ１０１の判定はｙｅｓとなってＳ１０２に移行する。
【０１３８】
Ｓ１０２では、ＣＰＵ８１１は、各ＣＰＵパッケージ２１１から訂正可能エラーカウンタレジスタ２１７の値を取得し、訂正可能エラー管理情報８２１を更新するための訂正可能エラー累積情報更新処理を実行する。その後、ＣＰＵ８１１は、ＶＭＭ２２０からエラー訂正可能エラー累積情報８２１の送信要求を受信したか否か判定する（Ｓ１０３）。何れかのＣＰＵパッケージ２１１がその送信要求を送信した場合、Ｓ１０３の判定はｙｅｓとなってＳ１０４に移行する。何れのＣＰＵパッケージ２１１もその送信要求を送信していない場合、Ｓ１０３の判定はｎｏとなり、ここで全体処理が終了する。
【０１３９】
Ｓ１０４では、ＣＰＵ８１１は、訂正可能エラー累積情報８２１を、要求したＣＰＵパッケージ２１１に送信する。訂正可能エラー累積情報８２１の送信後、全体処理が終了する。
【０１４０】
図２４は、上記Ｓ１０２で実行される訂正可能エラー累積情報更新処理のフローチャートである。次に図２４を参照して、この訂正可能エラー累積情報更新処理について詳細に説明する。
【０１４１】
この訂正可能エラー累積情報更新処理には、ＣＰＵパッケージ２１１毎に、訂正可能エラーカウンタレジスタ２１７の値を取得し、訂正可能エラー累積情報８２１中の対応するエラー累積値情報を更新するための処理ループ１１０が形成されている。訂正可能エラー累積情報更新処理は、この処理ループＬ１１０の終了に伴い、終了するようになっている。
【０１４２】
この処理ループＬ１１０では、ＣＰＵ８１１は、先ず、認識しているＣＰＵパッケージ２１１のうちの１つを選択し、選択したＣＰＵパッケージ２１１から訂正可能エラーカウンタレジスタ２１７の値を取得する（Ｓ１１１）。次に、ＣＰＵ８１１は、選択したＣＰＵパッケージ２１１からシリアル番号を取得する（Ｓ１１２）。その後、ＣＰＵ８１１は、取得したシリアル番号が訂正可能エラー累積情報８２１に登録されているか否か判定する（Ｓ１１３）。取得したシリアル番号が訂正可能エラー累積情報８２１に格納されている場合、Ｓ１１３の判定はｙｅｓとなってＳ１１５に移行する。取得したシリアル番号が訂正可能エラー累積情報８２１に格納されていない場合、言い換えれば、それまでに存在していなかったＣＰＵパッケージ２１１が新たに確認できた場合、Ｓ１１３の判定はｎｏとなってＳ１１４に移行する。
【０１４３】
Ｓ１１４では、ＣＰＵ８１１は、訂正可能エラー累積情報８２１を初期化する。訂正可能エラー累積情報８２１の初期化とは、例えば全てのエラー累積値情報をクリアすることである。取得したシリアル番号は、訂正可能エラー累積情報８２１に新たに登録する。そのような処理をＳ１１４で行った後、処理ループＬ１１０内の一連の処理が終了する。
【０１４４】
一方、Ｓ１１５では、ＣＰＵ８１１は、今回、取得した訂正可能エラーカウンタレジスタ２１７の値から前回、取得したその値を減算することにより、訂正可能エラーカウンタレジスタ２１７の値の増分、つまり一定時間の間に発生した訂正可能エラーの数を計算する。Ｓ１１６には、その後に移行する。
【０１４５】
Ｓ１１６では、ＣＰＵ８１１は、計算した増分を用いて、訂正可能エラー累積情報８２１を更新する。その更新は、訂正可能エラー累積情報８２１中の対応するエラー累積値情報を、それまでの値に増分を加算した値に書き換えることで行われる。訂正可能エラー累積情報８２１の更新により、処理ループＬ１１０内の一連の処理が終了する。
【０１４６】
一連の処理が終了した処理ループＬ１１０は、他に対象とすべきＣＰＵパッケージ２１１が存在しない場合、終了する。このとき、例えば訂正可能エラー累積情報８２１に格納されているシリアル番号のなかで取得できなかったシリアル番号は削除される。これは、シリアル番号が取得できなかったＣＰＵパッケージ２１１は、情報処理装置２００から取り外されているか、或いは障害が発生している可能性が高いためである。それにより、訂正可能エラー移籍情報更新処理は、そのような操作を訂正可能エラー累積情報８２１に行った後、終了する。一方、他に対象とすべきＣＰＵパッケージ２１１が残っている場合、上記Ｓ１１１に戻る。それにより、処理ループＬ１１０の実行が継続される。
【０１４７】
他の実施形態では、上記のように、図１２にフローチャートを表す全体処理の一部が上記実施形態とは異なっている。他の実施形態では、Ｓ７の次にＳ１０として、割り当て優先度反映処理を実行する。
【０１４８】
この割り当て優先度反映処理は、管理コントローラ８００から訂正可能エラー累積情報８２１を取得し、取得した訂正可能エラー累積情報８２１を用いて、Ｓ７で作成された割り当て優先度情報２２６を更新するための処理である。ＣＰＵエラー累積情報取得部２２２ｄは、ＣＰＵコア２１５が、この割り当て優先度反映処理を実行することで実現される。次に、この割り当て優先度反映処理について、図２５に表すそのフローチャートを参照して詳細に説明する。
【０１４９】
先ず、ＣＰＵコア２１５は、管理コントローラ８００に対し、訂正可能エラー累積情報８２１の送信要求を送信する（Ｓ１２１）。次にＣＰＵコア２１５は、訂正可能エラー累積情報８２１が受信されるのを待って、受信された訂正可能エラー累積情報８２１を取得する（Ｓ１２２）。
【０１５０】
訂正可能エラー累積情報８２１を取得したＣＰＵ８１１は、取得した訂正可能エラー累積情報８２１から全てのエラー累積値情報を抽出し、抽出した各エラー累積値情報を、作成された割り当て優先度情報２２６に上書きする（Ｓ１２３）。そのようにして、訂正可能エラー累積情報８２１を割り当て優先度情報２２６に反映させた後、この割り当て優先度反映処理が終了する。
【０１５１】
他の実施形態では、上記割り当て優先度反映処理をＳ１０で実行した後、Ｓ８としてＣＰＵコア切替処理を実行する。
【０１５２】
上記実施形態では、図１７にフローチャートを表すＣＰＵコア切替処理が実行される。他の実施形態では、同じ優先度のＣＰＵパッケージ２１１のなかでエラー累積値情報の表す累積値がより小さいＣＰＵパッケージ２１１のＣＰＵコア２１５を優先的に仮想マシン２３１に割り当てるようにしている。そのため、他の実施形態では、処理ループＬ５０で対象とする優先度が設定されたＣＰＵパッケージ２１１のＣＰＵコア２１５は、処理ループＬ５５で累積値がより小さいＣＰＵパッケージ２１１のＣＰＵコア２１５から対象とするようになっている。上記実施形態との相違は、処理ループＬ５５で対象とするＣＰＵパッケージ２１１のＣＰＵコア２１５を選択する順序が異なる点のみである。
【０１５３】
なお、上記本実施形態、及び他の実施形態では共に、仮想マシングループ２３０間の優先関係は考慮していないが、その優先関係を考慮するようにしても良い。仮想マシングループ２３０間の優先関係を考慮するようにした場合、より重要なほうの仮想マシングループ２３０の運用をより維持させることができる。また、重要性の低い、或いは運用を維持できなくなった仮想マシングループ２３０に属する仮想マシン２３１へのＣＰＵコア２１５の割り当ての解除も選択肢となることから、運用を維持すべき仮想マシングループ２３０の運用はより安定的に行えるようになる。仮想マシングループ２３０に属さない１台の仮想マシン２３１は、１つの仮想マシングループ２３０と見なすのが望ましい。
【図１】
2014147802.tif 000003
【図２】
2014147802.tif 000004
【図３】
2014147802.tif 000005
【図４】
2014147802.tif 000006
【図５】
2014147802.tif 000007
【図６】
2014147802.tif 000008
【図７】
2014147802.tif 000009
【図８】
2014147802.tif 000010
【図９】
2014147802.tif 000011
【図１０】
2014147802.tif 000012
【図１１】
2014147802.tif 000013
【図１２】
2014147802.tif 000014
【図１３】
2014147802.tif 000015
【図１４】
2014147802.tif 000016
【図１５】
2014147802.tif 000017
【図１６】
2014147802.tif 000018
【図１７】
2014147802.tif 000019
【図１８】
2014147802.tif 000020
【図１９】
2014147802.tif 000021
【図２０】
2014147802.tif 000022
【図２１】
2014147802.tif 000023
【図２２】
2014147802.tif 000024
【図２３】
2014147802.tif 000025
【図２４】
2014147802.tif 000026
【図２５】
2014147802.tif 000027
【国際調査報告】
2014147802.tif 000028
2014147802.tif 000029
2014147802.tif 000030
2014147802.tif 000031