以下に図面を参照して、開示の情報処理装置、情報処理方法、および情報処理プログラムの実施の形態を詳細に説明する。
図1は、実施の形態にかかる情報処理装置の動作例を示す説明図である。情報処理装置100は、システム101上で実行する複数の仮想マシンに対して、システム101内のノードの障害が複数の仮想マシンに与える影響の度合いを示す値を算出して、影響度の度合いの評価を支援するコンピュータである。システム101は、複数のノードを含むシステムである。図1の例としては、複数のノードとして、ノード#0〜#3は、コアとメモリとを有する。また、ノード#0〜#3は、自ノードが有するメモリの少なくとも一部をノード間で共用する。
図1の例では、システム101は、複数の仮想マシンとして、仮想マシンv0〜v2を実行するシステムである。図1では、仮想マシンv0〜v2を、点線で表現したコンピュータとして表現する。ここで、仮想マシンは、システム101のハードウェア資源を用いて仮想的に作成されたコンピューターシステムである。仮想マシンv0〜v2は、仮想的に作成したコンピューターシステムであればどのようなものでもよく、たとえば、他のコンピュータにサービスやデータを提供するサーバでもよいし、サーバによるサービスやデータの提供を受けるコンピュータでもよい。システム101が利用される状況としては、たとえば、業務アプリケーションを運用していた複数の物理サーバを、複数の仮想マシンを実行するシステム101に集約する、という状況である。複数の物理サーバの代わりにシステム101が実行する複数の仮想マシンにより業務アプリケーションを運用することにより、サーバの運用コストを削減したり、消費電力を削減したりすることができる。
複数の物理サーバを集約する際には、多数のアプリケーションを同時に実行することになるため、システム101内には、多数のコアやメモリが要求される。ここで、複数のコアと複数のメモリとを含むシステムの構築方法としては、SMP(Symmetric MultiProcessing)とNUMAとがある。
SMPは、全てのコアと全てのメモリとが一つのバスやスイッチに接続するシステムを構築する方法である。したがって、SMPを適用したシステムは、コアの数が増大すると、コアからメモリへのアクセスが一つのバスやスイッチに集中することになるため、SMPを適用したシステムではコアの数を増やすことが難しい。
一方、NUMAは、コアとメモリとを有するノードを互いに接続した複数のノードを含むシステムを構築する方法である。NUMAを適用したシステムは、バスやスイッチにアクセスするコアやメモリの数を減らすことにより、コアやメモリを増やすことが容易である。以上の理由から、システム101には、NUMAが適用されることが多い。ここで、NUMAは、全てのメモリが単一のメモリ空間に配置され、全てのコアが全てのメモリにアクセス可能であることが求められる。しかし、全てのメモリの少なくとも一部をノード間で共用していれば複数のノードに跨った仮想マシンを実行することが可能であるから、システム101は、全てのメモリの少なくとも一部をノード間で共用すればよい。
NUMAでは、あるノードが有するコアからあるノードが有するメモリへのアクセスは高速であるが、あるノードが有するコアから他のノードが有するメモリへのアクセスはバスやスイッチを介する分低速となる。ここで、NUMAにおいて、コアから見て同一ノードのメモリを「ローカルメモリ」と呼称し、また、他ノードのメモリを「リモートメモリ」と呼称する。NUMAを適用したシステム101は、可能な限りローカルメモリにアクセスするようにすることが好ましい。
したがって、システム101が仮想マシンを実行する際には、可能な限り同一ノード内で仮想マシンを実行することが好ましい。同一ノード内で実行する仮想マシンは、他ノードに跨って実行する仮想マシンに比べて、アクセス性能が高くなる。そして、アクセス性能が高くなると仮想マシンの処理自体も向上することになるため、同一ノード内で実行する仮想マシンは、他ノードに跨って実行する仮想マシンに比べて仮想マシンの処理性能が向上することになる。
NUMAを適用したシステムにおいて、仮想マシンの処理性能を向上する方法として、たとえば、仮想マシンを実行する際のコア同士が近距離となる組合せを優先して選択し、選択したコアから近距離にあるメモリを優先して選択するものがある。
また、NUMAを適用したシステムにおいて、同一ノード内で仮想マシンを実行することにより、障害拡大を防止することができる。具体的には、2つのノードに跨って実行する仮想マシンは、2つのノードのいずれか一方でも障害が発生すると実行を停止するのに対し、同一ノード内で実行する仮想マシンは、1つのノードに障害が発生すると実行を停止することになる。このように、仮想マシンの割り当て方に応じて、障害に対する影響の程度が変わることになる。障害に対する影響の程度を、本実施の形態では、「可用性」と呼称する。前述の例であれば、同一ノード内で実行する仮想マシンの可用性は、2つのノードに跨って実行する仮想マシンの可用性より高くなる。
しかしながら、前述した仮想マシンの可用性は、1つの仮想マシンに対する可用性であり、システム101内の一部のノードに故障が発生した際に、複数の仮想マシンにどの程度影響を与えるかという、複数の仮想マシンの可用性を評価することが難しい。また、システム101のハードウェア資源から、複数の仮想マシンが用いるハードウェア資源を決める組合せの個数は、ノードが有するコアの個数やメモリの個数が増大するほど膨大な数となる。システム101の利用者が、膨大な個数の組合せのうちから、独自のノウハウを用いて複数の仮想マシンの可用性が最適な組合せを探すことは難しい。
そこで、本実施の形態にかかる情報処理装置100は、システム101内の各々のノードにあるコアまたはメモリを用いて実行されるノード単位の仮想マシンの個数から、ノード単位の仮想マシンの個数のノード間における偏り度合いを示す値を算出する。以下、偏り度合いを示す値を、「可用性評価値」と呼称する。可用性評価値は、ノード単位の仮想マシンの個数のノード間におけるばらつき度合いを示す値でもよい。以下に示す可用性評価値は、偏り度合いを示す値であり、数値が大きいほど偏り度合いが高いことを示す値であるとする。可用性評価値を算出することにより、情報処理装置100は、システム101内部の一部のノードの障害がシステム101上で実行する複数の仮想マシンに与える影響の程度を、可用性評価値を用いて評価することができる。
ここで、情報処理装置100とシステム101との関係について、情報処理装置100とシステム101とは、直接接続されてもよい。また、情報処理装置100とシステム101とは接続されてなく、情報処理装置100が、システム101が実行する複数の仮想マシンの実行に用いるコアとメモリとを特定する情報を有してもよい。また、情報処理装置100が行う可用性評価値を算出する処理を、システム101のいずれかのノードのコアが実行してもよい。図1では、情報処理装置100とシステム101とが、直接接続する場合を示す。
ここで、情報処理装置100が可用性評価値を算出するタイミングは、システム101が複数の仮想マシンの実行を開始する前であり、仮想マシンを割り当てる前のタイミングである。また、情報処理装置100が可用性評価値を算出するタイミングの他の例として、システム101が複数の仮想マシンの実行を既に開始しており、実行中の複数の仮想マシンの可用性評価値を算出してもよい。図1の例において、情報処理装置100が可用性評価値を算出するタイミングは、システム101が複数の仮想マシンの実行を開始する前であるとする。
情報処理装置100は、システム101上で実行する複数の仮想マシンに含まれる各々の仮想マシンの実行に用いるコアとメモリとの組合せを対応付けた対応情報を取得する。以下、対応情報を、「組合せパターン」と呼称する。図1の例では、情報処理装置100は、仮想マシンv0〜v2の実行に用いるコアとメモリとの組合せを対応付けた組合せパターン102を取得する。組合せパターン102は、組合せの集合となる。
ここで、組合せパターン102の取得方法として、情報処理装置100とシステム101とが直接接続しており、システム101が組合せパターン102を記憶しているとする。このとき、情報処理装置100は、システム101が記憶する組合せパターン102を取得してもよい。また、情報処理装置100の利用者によって仮想マシンv0〜v2の実行に用いるコアとメモリとが指定された場合、情報処理装置100は、指定された情報を用いて組合せパターン102を取得してもよい。また、情報処理装置100の利用者によって仮想マシンv0〜v2の実行に要するコアの個数とメモリの個数とが指定された場合に、情報処理装置100は、指定された情報から組合せパターン102を作成することにより、組合せパターン102を取得してもよい。図1の例では、システム101が組合せパターン102を記憶しているとする。
図1の例における組合せパターン102は、下記組合せcm0〜cm2同士を対応付けた集合である。組合せcm0は、仮想マシンv0の実行に用いるコアとして、ノード#0が有するコアと、仮想マシンv0の実行に用いるメモリとして、ノード#3が有するメモリとを組み合わせた情報である。組合せcm1は、仮想マシンv1の実行に用いるコアとして、ノード#1が有するコアと、仮想マシンv1の実行に用いるメモリとして、ノード#1が有するメモリとを組み合わせた情報である。組合せcm2は、仮想マシンv2の実行に用いるコアとして、ノード#1が有するコアと、仮想マシンv2の実行に用いるメモリとして、ノード#1が有するメモリとを組み合わせた情報である。
次に、情報処理装置100は、組合せパターン102に基づいて、システム101の各々のノードが有するコアまたはメモリを用いて実行されるノード単位の仮想マシンの個数のノード間における可用性評価値を算出する。可用性評価値が小さい場合には、複数の仮想マシンが各ノードに分散して配置されることになるため、一部のノードとして、ある1つのノードに障害が発生しても、複数の仮想マシンのうち、実行が停止する仮想マシンの数が少ないため、可用性が高くなる。一方、可用性評価値が大きい場合には、複数の仮想マシンがあるノードに偏って配置されることになるため、あるノードに障害が発生すると、仮想マシンの実行が停止する数が多くなるため、可用性が低くなる。可用性評価値として、情報処理装置100は、ノード単位の仮想マシンの個数のうちの最大値を可用性評価値としてもよいし、ノード単位の仮想マシンの個数の分散値や、標準偏差を可用性評価値としてもよい。
続けて、各々のノードが有するコアまたはメモリを用いて実行されるノード単位の仮想マシンの個数の特定方法について説明する。具体的には、情報処理装置100は、組合せパターン102に基づいて、各々のノードが有するコアまたはメモリを用いて実行される仮想マシンの個数をノードごとに計数する。具体的な計数方法の一例として、情報処理装置100は、ノードごとに、ノードが有するコアまたはメモリを用いる仮想マシンがいくつあるかを、組合せパターン102の各組合せから特定される仮想マシンを用いて計数する。また、計数方法の他の例として、情報処理装置100は、ノード分の配列変数を用意しておく。そして、情報処理装置100は、組合せパターン102の各組合せから特定される仮想マシンが用いるコアまたはメモリを有するノードを特定し、特定したノードに対応する変数の値をインクリメントする。
図1の例では、情報処理装置100は、ノード#0、#3の仮想マシンの個数が1[個]であり、ノード#1の仮想マシンの個数が2[個]であり、ノード#2の仮想マシンの個数が0[個]であると計数する。また、情報処理装置100は、ノードに対応する仮想マシンの個数を計数し、計数した結果がある閾値を超えた場合、複数の仮想マシンが、あるノードに偏って配置されるとみなし、以降の計数を中止して、可用性評価値を、閾値を超えた値としてもよい。
続けて、図1の例について、情報処理装置100は、各々のノードが有するコアまたはメモリを用いて実行されるノード単位の仮想マシンの個数に基づいて複数の仮想マシンの可用性評価値を算出する。図1の例では、可用性評価値として最大値を採用するものとする。ノード#0〜#3の仮想マシンの個数の最大値は2であるから、情報処理装置100は、可用性評価値を2として算出する。可用性評価値を算出した後、システム101は、組合せパターン102に従って複数の仮想マシンを割り当てていき、複数の仮想マシンの実行を開始する。
可用性評価値の第1の利用方法として、たとえば、情報処理装置100は、可用性評価値が1を超えたと判断して、複数のノード#0〜#3のうちのいずれかのノードに仮想マシンが偏って実行される旨を出力してもよい。また、可用性評価値の第2の利用方法として、前提として、情報処理装置100の利用者が、仮想マシンの実行に用いるコアの個数とメモリとの個数が、1つのノードが有するコアの個数とメモリの個数とより共に少ないことを把握しているものとする。このとき、ノードが4台で仮想マシンが3台であれば、いずれかのノードに仮想マシンが偏って実行されていなければ、可用性評価値は1となるはずである。情報処理装置100の利用者は、可用性評価値が2であることを閲覧することにより、いずれかのノードに仮想マシンが偏って実行されており、1つのノードが故障した際に、最大2台の仮想サーバに影響があることを把握することができる。次に、システム101をNUMAシステムに適用した例について、図2を用いて説明する。
図2は、サーバシステムの接続例を示す説明図である。サーバシステム200は、サーバ201と、管理端末202とを含むシステムである。サーバ201は、図1に示す情報処理装置100に相当する。
サーバ201は、NUMAシステム203を有する装置である。NUMAシステム203は、図1に示すシステム101に相当する。サーバ201のハードウェア構成は、図3で後述する。NUMAシステム203は、ノード#0〜#3を有する。ノード#0〜#3のハードウェア構成は、図5で後述する。ノード#0は、ノード#1とノード#3と直接接続する。また、ノード#1は、ノード#0とノード#2と直接接続する。また、ノード#2は、ノード#1とノード#3と直接接続する。また、ノード#3は、ノード#0とノード#2と直接接続する。ノード#0〜#3が有するコアとメモリとについては、図5で後述する。ノード#0〜#3は、仮想マシンとして、他のコンピュータにサービスやデータを提供するサーバの仮想マシンである仮想サーバを実行する。以下の説明では、NUMAシステム203上で実行される複数の仮想マシンが、全て仮想サーバであるとして、説明を行う。
管理端末202は、サーバシステム200の管理者が操作する装置である。管理端末202のハードウェア構成は、図4で後述する。また、サーバシステム200は、管理端末202を有さなくてもよい。管理端末202がない場合、サーバシステム200の管理者が、直接サーバ201を操作してもよい。
図3は、サーバのハードウェア構成例を示すブロック図である。図3において、サーバ201は、NUMAシステム203と、ROM(Read Only Memory)301と、RAM(Random Access Memory)302と、を含む。また、サーバ201は、ディスクドライブ303およびディスク304と、通信インターフェース305と、を含む。また、NUMAシステム203と、ROM301〜ディスクドライブ303と、通信インターフェース305とは、バス306によってそれぞれ接続される。
NUMAシステム203は、サーバ201の全体の制御を司る演算処理装置である。ROM301は、ブートプログラムなどのプログラムを記憶する不揮発性メモリである。RAM302は、NUMAシステム203のワークエリアとして使用される揮発性メモリである。
ディスクドライブ303は、NUMAシステム203の制御に従ってディスク304に対するデータのリードおよびライトを制御する制御装置である。ディスクドライブ303には、たとえば、磁気ディスクドライブ、ソリッドステートドライブなどを採用することができる。ディスク304は、ディスクドライブ303の制御で書き込まれたデータを記憶する不揮発性メモリである。たとえばディスクドライブ303が磁気ディスクドライブである場合、ディスク304には、磁気ディスクを採用することができる。また、ディスクドライブ303がソリッドステートドライブである場合、ディスク304には、半導体素子によって形成された半導体メモリ、いわゆる半導体ディスクを採用することができる。
通信インターフェース305は、ネットワークとなるLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどと、内部のインターフェースを司り、他の装置からのデータの入出力を制御する制御装置である。具体的には、通信インターフェース305は、ネットワークを介して管理端末202に接続される。通信インターフェース305には、たとえば、モデムやLANアダプタなどを採用することができる。
また、サーバシステム200の運用者が、直接サーバ201を操作する場合、サーバ201は、ディスプレイ、キーボード、マウスといったハードウェアを有してもよい。
図4は、管理端末のハードウェア構成例を示すブロック図である。管理端末202は、CPU401と、ROM402と、RAM403と、を含む。また、管理端末202は、ディスクドライブ404と、ディスク405と、通信インターフェース406と、を含む。また、管理端末202は、ディスプレイ407と、キーボード408と、マウス409とを含む。また、CPU401〜ディスクドライブ404と、通信インターフェース406〜マウス409とは、バス410によってそれぞれ接続される。
CPU401は、管理端末202の全体の制御を司る演算処理装置である。ROM402は、ブートプログラムなどのプログラムを記憶する不揮発性メモリである。RAM403は、CPU401のワークエリアとして使用される揮発性メモリである。
ディスクドライブ404は、CPU401の制御に従ってディスク405に対するデータのリードおよびライトを制御する制御装置である。ディスクドライブ404には、たとえば、磁気ディスクドライブ、光ディスクドライブ、ソリッドステートドライブなどを採用することができる。ディスク405は、ディスクドライブ404の制御で書き込まれたデータを記憶する不揮発性メモリである。たとえばディスクドライブ404が磁気ディスクドライブである場合、ディスク405には、磁気ディスクを採用することができる。また、ディスクドライブ404が光ディスクドライブである場合、ディスク405には、光ディスクを採用することができる。また、ディスクドライブ404がソリッドステートドライブである場合、ディスク405には、半導体素子によって形成された半導体メモリ、いわゆる半導体ディスクを採用することができる。
通信インターフェース406は、ネットワークと内部のインターフェースを司り、外部装置からのデータの入出力を制御する制御装置である。具体的には、通信インターフェース406は、ネットワークを介してサーバ201に接続される。通信インターフェース406には、たとえば、モデムやLANアダプタなどを採用することができる。
ディスプレイ407は、マウスカーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する装置である。ディスプレイ407には、たとえば、CRT(Cathode Ray Tube)、TFT(Thin Film Transistor)液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
キーボード408は、文字、数字、各種指示などの入力のためのキーを有し、データの入力を行う装置である。また、キーボード408は、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス409は、マウスカーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などを行う装置である。マウス409は、ポインティングデバイスとして同様に機能を有するものであれば、トラックボールやジョイスティックなどであってもよい。
図5は、ノードのハードウェア構成例を示すブロック図である。図5の例では、複数のノード#0〜#3のうち、ノード#0を例として、ノード#0のハードウェア構成を示す。ノード#0以外のノード#1〜#3も、ノード#0と同様のハードウェア構成となる。
ノード#0は、ソケットs0と、メモリm00〜m08とを含む。ソケットs0は、コアc00〜c07を含む。コアc00〜c07は、ノード#0の全体の制御を司る演算処理装置である。メモリm00〜m08は、コアc00〜c07が行う処理の一時データを格納する記憶装置である。
ここで、ノード#0〜#3が有するコアとメモリとに付与した符号については、アルファベット1文字と、二桁の数値とにより形成するものとする。そして、説明の簡略化のため、符号の二桁の数値のうちの1桁目の数値が、メモリやコアが属するノードの符号を示すものとする。たとえば、コアc10は、ノード#1に含まれる0番目のコアである。また、たとえば、メモリm38は、ノード#3に含まれる8番目のメモリである。本実施の形態において、コアc00〜c37の性能は、全て同一である。同様に、メモリm00〜m38は、全て同一の記憶量を有する。
(サーバ201の機能)
次に、サーバ201の機能について説明する。図6は、サーバの機能構成例を示すブロック図である。サーバ201は、制御部601と、記憶部602とを含む。制御部601は、作成部611と、取得部612と、算出部613と、出力部614と、仮想サーバ構築部615とを有する。制御部601は、記憶装置に記憶されたプログラムをノード#0〜#3のいずれかのコアが実行することにより、制御部601の機能を実現する。記憶装置とは、具体的には、たとえば、図3に示したROM301、RAM302、ディスク304などである。また、各部の処理結果は、ノード#0〜#3のいずれかのコアが有するレジスタや、ノード#0〜#3のメモリ等に記憶される。
また、サーバ201は、仮想サーバ構成情報621と、重み付け情報622と、SRAT(System Resource Affinity Table)623と、SLIT(System Locality distance Information Table)624とにアクセス可能である。仮想サーバ構成情報621〜SLIT624は、ディスク304といった記憶装置に格納される。仮想サーバ構成情報621の記憶内容の一例は、図7で後述する。重み付け情報622の記憶内容の一例は、図8で後述する。SRAT623については、図9で後述する。SLIT624については、図10で後述する。
作成部611は、各々の仮想サーバの実行に要するコアの個数とメモリの個数とを記憶する仮想サーバ構成情報621を参照して、システム上で実行する各々の仮想サーバの実行に用いるコアとメモリとの組合せを対応付けた組合せパターン102を作成する。具体的な組合せパターン102の作成例は、図11で後述する。
取得部612は、NUMAシステム203上で実行する複数の仮想サーバの各々の仮想サーバの実行に用いるコアとメモリとの組合せを対応付けた組合せパターン102を取得する。また、取得部612は、作成部611が作成した組合せパターン102を取得してもよい。組合せパターン102の取得例については、図1に記述した。
算出部613は、取得部612が取得した組合せパターン102において、各々のノードが有するコアまたはメモリを用いて実行されるノード単位の仮想サーバの個数に基づいて、NUMAシステム203上で実行する複数の仮想サーバの可用性評価値を算出する。また、算出部613は、複数の仮想サーバの個数に基づいて、算出した可用性評価値を正規化してもよい。具体的な可用性評価値の算出例と正規化の算出例は、図12、図13で後述する。
さらに、算出部613は、取得部612が取得した組合せパターン102において、各々の仮想サーバの実行に用いるコアからメモリへのアクセス性能に基づいて、NUMAシステム203上で実行する複数の仮想サーバの処理性能を示す値を算出してもよい。以下、処理性能を示す値を、単に、「処理性能評価値」と呼称する。各々の仮想サーバの実行に用いるコアからメモリへのアクセス性能の特定方法は、SRAT623、SLIT624を参照することにより特定できる。また、算出部613は、複数のノードが有するコアからメモリへのアクセス性能の最大値および最小値に基づいて、算出した処理性能評価値を正規化してもよい。具体的な処理性能評価値の算出例と正規化の算出例は、図14、図15で後述する。
また、算出部613は、正規化した可用性評価値および正規化した処理性能評価値のいずれか一方の値に重み付けした値と他方の値を足し合わせた値を算出してもよい。足し合わせた値を、以下、「割当評価値」と呼称する。重み付けする係数は、重み付け情報622から特定できる。割当評価値の算出例は、図17で後述する。
出力部614は、取得部612が取得した組合せパターン102に、算出部613が算出した可用性評価値を対応付けて出力する。また、出力部614は、取得部612が取得した組合せパターン102に、算出部613が算出した処理性能評価値を対応付けて出力してもよい。また、出力部614は、取得部612が取得した組合せパターン102に、算出部613が算出した割当評価値を対応付けて出力してもよい。
仮想サーバ構築部615は、算出部613が算出した割当評価値に基づいて選択した組合せパターン102に従って複数の仮想サーバを構築する。たとえば、仮想サーバ構築部615は、割当評価値が最大となる組合せパターン102に従って複数の仮想サーバを構築する。仮想サーバ構築部615は、コンピュータを仮想化し、複数の異なるOS(Operating System)を並列に実行できるようにするソフトウェアであるVMMに相当する。仮想サーバ構築部615は、ハードウェア上で直接動作し、サーバ201上で実行するOSを全て仮想マシンとするソフトウェアである。また、仮想サーバ構築部615は、あるOS上で動作するアプリケーションソフトウェアであり、アプリケーションソフトウェア上で様々な仮想マシンを動作させるソフトウェアでもよい。
次に、図7〜図10を用いて、仮想サーバ構成情報621〜SLIT624について説明する。
図7は、仮想サーバ構成情報の一例を示す説明図である。仮想サーバ構成情報621は、各仮想サーバの実行に要するコアとメモリとの個数を記憶する情報である。図7に示す仮想サーバ構成情報621は、レコード701−1〜4を有する。仮想サーバ構成情報621は、仮想サーバIDと、要求コア数と、要求メモリ数と、という3つのフィールドを含む。仮想サーバIDフィールドには、仮想サーバを特定する情報が格納される。要求コア数フィールドには、仮想サーバの動作に要求されるコアの個数が格納される。要求メモリ数フィールドには、仮想サーバの動作に要求されるメモリの個数が格納される。
ここで、メモリの単位は、ノード#0〜#3が有する一つのDIMM(Dual Inline Memory Module)である。また、ノード#0〜#3がインタリーブやメモリミラーリングを行う場合、メモリの単位は、連続するメモリアドレスを形成する最小のDIMM本数から形成されるDIMMグループである。たとえば、2つのDIMMによりメモリミラーリングを形成する場合のDIMMグループは、2つのDIMMを有する。このとき、メモリの単位は、2つのDIMMになる。
たとえば、レコード701−1は、仮想サーバv0が実行するために、コアを3[個]要求し、メモリを1[個]要求することを示す。
図8は、重み付け情報の一例を示す説明図である。重み付け情報622は、可用性評価値または処理性能評価値のうちのいずれか一方の重み付け係数を有する情報である。また、重み付け情報622は、可用性評価値と処理性能評価値との両方の重み付け係数を有してもよい。図8に示す重み付け情報622は、レコード801−1を有する。重み付け情報622は、処理性能の重み付け係数と、可用性の重み付け係数と、という2つのフィールドを含む。処理性能の重み付け係数フィールドには、処理性能評価値に掛ける重み付け係数が格納される。可用性の重み付け係数フィールドには、可用性評価値に掛ける重み付け係数が格納される。
たとえば、レコード801−1は、処理性能の重み付け係数が60[%]であり、可用性の重み付け係数が40[%]であることを示す。
次に、処理性能評価値を求めるために用いる、SRAT623と、SLIT624とについて、図9と図10とを用いて説明する。ここで、SRAT623とSLIT624とは、ACPI(Advanced Configuration and Power Interface)により規定されるテーブルフォーマットである。
図9は、SRATの一部を示す説明図である。SRAT623は、NUMAシステム203に含まれるコアに関する情報とメモリに関する情報とを規定するテーブルである。SRAT623で規定される全てのフィールドについては、下記参考文献1に記載される。
(参考文献1:Advanced Configuration and Power Interface Specification、[平成25年12月13日検索]、インターネット<URL:http://www.acpi.info/DOWNLOADS/ACPIspec50.pdf>:p187−191)
コアに関する情報は、参考文献1に記載された、Processor Local APIC(Advanced Programmable Interrupt Controller)/SAPIC(Streamlined Advanced Programmable Interrupt Controller) Affinity Structureで定義される情報である。以下、Processor Local APIC/SAPIC Affinity Structureに従った情報を、「ACPI規格のコア情報」と定義する。また、メモリに関する情報は、参考文献1に記載された、Memory Affinity Structureで定義される情報である。以下、Memory Affinity Structureに従った情報を、「ACPI規格のメモリ情報」と定義する。ここで、説明の簡略化のため、ACPI規格のコア情報を基にした本実施の形態で用いるフィールドを有する情報を、コア情報901として規定する。同様に、ACPI規格のメモリ情報を基にした本実施の形態で用いるフィールドを有する情報を、メモリ情報902として規定する。
SRAT623の各レコードの一つが、コア情報901か、メモリ情報902かのいずれかとなる。図9に示すレコードのうち、レコード901−1〜7がコア情報901であり、レコード902−1〜7がメモリ情報902である。
コア情報901は、Typeと、Proximity Domainと、コアID(IDentification)と、という3つのフィールドを含む。コア情報901のTypeフィールドには、対象のレコードがコア情報901かメモリ情報902かのいずれなのかを示す識別子が格納される。“0”識別子は、対象のレコードがコア情報901であることを示す。“1”識別子は、対象のレコードがメモリ情報902であることを示す。
コア情報901のProximity Domainフィールドには、対象のレコードが示すコアが属するノードを特定する情報が格納される。ここで、コア情報901のProximity Domainフィールドは、ACPI規格のコア情報のProximity Domainの0〜7ビットのデータを示すフィールドと8〜31ビットのデータを示すフィールドとを合わせたフィールドに相当する。また、説明を簡略化するため、コア情報901のProximity Domainフィールドには、コアが属するノードの符号が格納されるものとする。
コアIDフィールドには、対象のレコードが示すコアを識別する情報が格納される。ここで、コアIDフィールドは、ACPI規格のコア情報のProcessor Local APICのAPIC IDフィールドと、Local SAPIC EIDフィールドとを合わせたフィールドに相当する。ここで、説明を簡略化するため、コアIDフィールドには、コアの符号が格納されるものとする。
たとえば、レコード901−1は、コアc00が、ノード#0に含まれることを示す。また、レコード901−7は、コアc37が、ノード#3に含まれることを示す。
メモリ情報902は、Typeと、Proximity Domainと、メモリIDという3つのフィールドを含む。メモリ情報902のTypeフィールドの定義は、コア情報901のTypeフィールドと同一であるため、説明を省略する。
メモリ情報902のProximity Domainフィールドには、対象のレコードが示すメモリが属するノードを特定する情報が格納される。ここで、メモリ情報902のProximity Domainフィールドは、ACPI規格のメモリ情報のProximity Domainフィールドに相当する。また、説明を簡略化するため、メモリ情報902のProximity Domainフィールドには、メモリが属するノードの符号が格納されるものとする。
メモリIDフィールドには、対象レコードが示すNUMAシステム203内のメモリを識別する情報が格納される。ここで、メモリIDフィールドの情報は、ACPI規格のメモリ情報のBase Address Lowフィールドの情報とBase Address Highフィールドの情報とを合わせた情報から特定される。具体的には、Base Address Lowフィールドの情報とBase Address Highフィールドの情報とを合わせた情報であるベースアドレスは、NUMAシステム203内の各メモリで固有であり、メモリを識別することができる。また、説明を簡略化するため、メモリIDフィールドには、NUMAシステム203内のメモリの符号が格納されるものとする。
たとえば、レコード902−1は、メモリm00が、ノード#0に含まれることを示す。また、レコード902−7は、メモリm38が、ノード#3に含まれることを示す。
図10は、SLITの一部を示す説明図である。SLIT624は、ノード間の距離を記憶するテーブルである。ここで、本実施の形態における距離とは、同一ノード内でのコアからメモリへのアクセス時間を1とした場合の相対的なアクセス時間のことである。SLIT624で規定される全てのフィールドについては、参考文献1に記載される。図10に示すSLIT624は、本実施の形態で用いるフィールドについて示す。図10に示すSLIT624は、Number of system localitiesフィールドと、Entryフィールドとを有する。図10に示すSLIT624は、レコード1001−1、2を含む。
Number of system localitiesフィールドは、NUMAシステム203に含まれるノードの個数が格納される。Entryフィールドは、ノード間のそれぞれの距離を格納する。Entryフィールドは、Number of system localitiesに格納される値の自乗分存在する。また、SLIT624では、自ノード内の距離を10として、あるノードと他のノードとの距離は、10をベースとした距離の相対値として示すものである。
たとえば、レコード1001−1は、NUMAシステム203に含まれるノードの個数が4[個]であることを示す。また、レコード1001−2は、ノード#0とノード#0との距離が10であることを示す。
本実施の形態では、処理性能評価値を計算し易くするため、SLIT624のEntryフィールドの値から10減じた値を用いて計算する。SLIT624のEntryフィールドの値から10減じた値を格納するテーブルを、距離テーブル1002とする。サーバ201は、処理性能評価値を算出する前に、SLIT624から距離テーブル1002を作成してRAM302やディスク304等の記憶領域に格納しておき、距離テーブル1002を参照して処理性能評価値を算出してもよい。または、サーバ201は、処理性能評価値を算出するときにノード間の距離を参照する都度、SLIT624のEntryフィールドの値から10減じ、減じた値を用いて処理性能評価値を算出してもよい。本実施の形態では、処理性能評価値を算出する前に、SLIT624から距離テーブル1002を作成するものとする。
たとえば、距離テーブル1002は、レコード1002−1〜17を有する。たとえば、レコード1002−2は、処理性能評価値を算出する際のノード#0とノード#0との距離が0であることを示す。また、レコード1002−3は、処理性能評価値を算出する際に、ノード#0とノード#1との距離が2であることを示す。また、レコード1002−4は、処理性能評価値を算出する際に、ノード#0とノード#2との距離が5であることを示す。
次に、複数の組合せパターンを作成する例と、各組合せパターンの可用性評価値と、処理性能評価値とを算出する例とを、図11〜図15を用いて説明する。
図11は、複数の組合せパターンの作成例を示す説明図である。図11では、仮想サーバ構成情報621を用いて、複数の組合せパターンを作成する例を示す。サーバ201は、コアの組合せパターンの全てと、メモリの組合せパターンの全てとを作成し、コアの組合せパターンの全てとメモリの組合せパターンの全てとから、組合せパターンを作成する。
以下、コアの組合せパターンを、単に、「コアパターン」と呼称する。また、メモリの組合せパターンを、単に、「メモリパターン」と呼称する。さらに、仮想サーバvxのy番目のコアを、「コアvx_cy」と呼称し、図11内では、単に「vx_cy」と表示する。また、仮想サーバvxのz番目のメモリを「メモリvx_mz」と呼称し、図11内では、単に、「vx_mz」と表示する。ここで、xは0から3までの整数である。yは、0から7までの整数である。zは、0から8までの整数である。
ここで、コアパターンは、NUMAシステム203内の全てのコアから仮想サーバが実行に用いるコアを選択する順列となる。同様に、メモリパターンは、NUMAシステム203内の全てのメモリから仮想サーバが実行に用いるメモリを選択する順列となる。
図11に示す表1101では、コアパターンの一覧を示す。NUMAシステム203上で実行される仮想サーバv0〜v3のコアパターンは、NUMAシステム203内の全てのコアから仮想サーバv0〜v3が実行に用いるコアの個数分を取り出す順列となる。NUMAシステム203内の全てのコアの個数が、8×4=32[個]であり、仮想サーバv0〜v3が実行に用いるコアの個数が、3+1+3+1=8[個]であるから、サーバ201は、32P8[個]の順列を作成する。作成した結果が表1101となる。図11に示す表1101は、例として、レコード1101−1〜4を示す。
たとえば、レコード1101−1は、コアパターンcp1が、仮想サーバv0〜v3の実行に用いるコアがそれぞれ、コアc00〜c02と、コアc03と、コアc04〜c06と、コアc07とであることを示す。
ここで、1つの仮想サーバの実行に用いるコアの個数が2以上である場合、作成したコアパターンのうち、順序が異なるだけで仮想サーバが同じコアを実行に用いるコアパターンが含まれる。たとえば、レコード1101−1と、レコード1101−3とにおいて、仮想サーバv0以外の仮想サーバが実行に用いるコアは同一である。そして、レコード1101−1が示す仮想サーバv0の実行に用いるコアが、コアc00、c01、c02であり、レコード1101−3が示す仮想サーバv0の実行に用いるコアが、コアc01、c00、c02である。以上より、レコード1101−1とレコード1101−3とは、順序が異なるだけで仮想サーバが同じコアを実行に用いるコアパターンを示す。したがって、レコード1101−3は冗長なコアパターンを示すため、サーバ201は、レコード1101−3を削除する。冗長するレコードを削除した結果が、表1102となる。
図11に示す表1103は、メモリパターンの一覧を示す。NUMAシステム203上で実行される仮想サーバv0〜v3のメモリパターンは、NUMAシステム203内の全てのメモリから仮想サーバv0〜v3の実行に用いるメモリの個数分を取り出す順列となる。メモリパターンの作成方法は、コアパターンと同一であるため、説明を省略する。サーバ201は、メモリパターンについても、冗長するレコードを削除する。冗長するレコードを削除した結果が、表1104となる。
冗長なレコードを削除したコアパターンとメモリパターンとを作成した後、サーバ201は、コアパターンとメモリパターンとの直積により、組合せパターンを得る。ここで、直積は、2つの集合から取り出せる全ての組合せを得る演算である。たとえば、要素数がm[個]である集合A(a1,a2,…,am)と、要素数がn[個]である集合B(b1,b2,…,bn)とがあるとする。このとき、集合Aと集合Bとの直積は、(a1b1,a1b2,…,a1bn,a2b1,a2b2,…,a2bn,…,amb1,amb2,…,ambn)となる。また、集合Aと集合Bとの直積の要素の個数は、m×n[個]となる。
図11に示す表1105は、サーバ201が、表1102と表1104とを直積した結果を示す。図11に示す表1105は、レコード1105−1〜6を有する。たとえば、レコード1105−1は、組合せパターンp1について示しており、レコード1101−1とレコード1103−1との組合せである。また、たとえば、レコード1105−2は、組合せパターンp2について示しており、レコード1101−1とレコード1103−2との組合せである。
また、表1105の1レコードが、組合せパターンに相当する。たとえば、レコード1105−1は、仮想サーバv0〜v3の実行に用いるコアとメモリとの組合せを対応付けた情報である。具体的には、レコード1105−1は、(コアc00〜c02,メモリm00)と、(コアc03,メモリm01)と、(コアc04〜c06、メモリm02)と、(コアc07,メモリm03〜m05)とを対応付けた情報である。
次に、図11で示したレコード1105−5、6が示す組合せパターンpx、pyの可用性評価値の算出例と可用性評価値の正規化の例とについて図12と図13を用いて説明する。また、組合せパターンpx、pyの処理性能評価値の算出例と処理性能評価値の正規化の例とについて図14と図15を用いて説明する。
図12は、可用性評価値の算出例を示す説明図(その1)である。また、図13は、可用性評価値の算出例を示す説明図(その2)である。図12では、可用性評価値の算出例として、組合せパターンpxの可用性評価値を算出する。また、図13では、組合せパターンpyの可用性評価値を算出する。
可用性評価値を算出するため、まず、サーバ201は、各ノードの仮想サーバの個数を計数する。次に、サーバ201は、下記(1)式を用いて仮想サーバの個数の最大値を算出する。
仮想サーバの個数の最大値=Max(ノード#0の仮想サーバの個数,…,ノード#(N−1)の仮想サーバの個数) …(1)
仮想サーバの個数の最大値が、可用性評価値の一例となる。仮想サーバの個数の最大値以外の可用性評価値として、たとえば、サーバ201は、各ノードの仮想サーバの個数の分散値や標準偏差を可用性評価値としてもよい。また、Max()は、引数の中で最大値を出力する関数である。また、Nは、ノードの総数とする。
続けて、サーバ201は、可用性評価値の正規化関数fa()を用いて、正規化した可用性評価値を算出する。関数fa()は、たとえば、下記(2)式となる。
fa(可用性評価値)=1−(可用性評価値−1)/(組合せパターンの仮想サーバの個数−1) …(2)
関数fa()は、可用性評価値が取り得る値を[0,1]の範囲に写像する関数である。可用性評価値が取り得る最小値は、1であり、可用性評価値が取り得る最大値は、組合せパターンの仮想サーバの個数である。すなわち、関数fa()は、単調減少であり、かつ、可用性評価値が取り得る最小値となる1のときに1となり、最大値となる組合せパターンの仮想サーバの個数であるときに0となる関数であればどのような関数でもよい。(2)式は、係数a、bを用いて表したfa(可用性評価値)=a×可用性評価値+bに対して、(可用性評価値,fa(可用性評価値))=(1,1)、(組合せパターンの仮想サーバの個数,0)を代入してa、bを得た際の式と実質一致する。関数fa()の他の例として、サーバ201は、係数aを用いて表したfa(可用性評価値)=a×(可用性評価値−1)^2+1に対し、(可用性評価値,fa(可用性評価値))=(組合せパターンの仮想サーバの個数,0)を代入して係数aを得てもよい。
また、可用性評価値が取り得る最大値は、可用性評価値の算出方法に依存する。可用性評価値が、各ノードの仮想サーバの個数の最大値であれば、可用性評価値が取り得る最大値は、組合せパターンの仮想サーバの個数に一致する。また、たとえば、可用性評価値が、各ノードの仮想サーバの個数の分散値であれば、可用性評価値が取り得る最大値は、0.25×(組合せパターンの仮想サーバの個数)^2となる。
ここで、図12が示す組合せパターンpxを用いて、正規化した可用性評価値を算出する例を示す。図12の(A)は、組合せパターンpxにおける複数のノード#0〜#3で実行される際の仮想サーバv0〜v3の割り当ての状態を示す。また、図12の(B)は、組合せパターンpxにおける、各ノードにおける仮想サーバの個数を示す。たとえば、ノード#0にはノード#0が有するコアc00、c01と、メモリm00とを実行に用いる仮想サーバv0があるので、ノード#0における仮想サーバの個数は1となる。コアc00、c01と、メモリm00とがノード#0に属するということは、それぞれ、コアID、メモリIDを基にコア情報901と、メモリ情報902とを検索して発見したレコード901−1、レコード901−2、レコード902−1により特定できる。
サーバ201は、(1)式を用いて、仮想サーバの個数の最大値を算出する。
仮想サーバの個数の最大値=Max(1,1,2,3)=3
次に、サーバ201は、仮想サーバの個数の最大値を可用性評価値とし、(2)式を用いて可用性評価値を正規化する。
fa(3)=1−(3−1)/(4−1)=0.33
同様に、図13が示す組合せパターンpyを用いて、正規化した可用性評価値を算出する例を示す。図13の(A)は、組合せパターンpyにおける複数のノード#0〜#3で実行される際の仮想サーバv0〜v3の割り当ての状態を示す。また、図13の(B)は、組合せパターンpyにおける、仮想サーバの個数を示す。
サーバ201は、(1)式を用いて、仮想サーバの個数の最大値を算出する。
仮想サーバの個数の最大値=Max(1,2,2,2)=2
次に、サーバ201は、仮想サーバの個数の最大値を可用性評価値とし、(2)式を用いて可用性評価値を正規化する。
fa(2)=1−(2−1)/(4−1)=0.67
図14は、処理性能評価値の算出例を示す説明図(その1)である。また、図15は、処理性能評価値の算出例を示す説明図(その2)である。図14では、処理性能評価値の算出例として組合せパターンpxの処理性能評価値を算出し、正規化する例を示す。また、図15では、組合せパターンpyの処理性能評価値を算出し、正規化する例を示す。
処理性能評価値を算出するため、まず、サーバ201は、組合せパターンの距離の合計を、下記(3)式により算出する。
組合せパターンの距離の合計=(組合せパターン内の仮想サーバv0のコアとメモリとの間の距離の合計)+(組合せパターン内の仮想サーバv1のコアとメモリとの間の距離の合計)+…+(組合せパターン内の仮想サーバv(M−1)のコアとメモリとの間の距離の合計) …(3)
ただし、Mは、仮想サーバの総数とする。また、仮想サーバのコアとメモリとの間の距離について、サーバ201は、距離テーブル1002を参照して、コアが属するノードと、メモリが属するノードとの距離を、仮想サーバのコアとメモリとの間の距離として特定する。次に、サーバ201は、距離の平均値を、下記(4)式により算出する。
距離の平均値=組合せパターンの距離の合計/組合せパターンに含まれる仮想サーバのコアとメモリとの組合せの個数 …(4)
距離の平均値が、処理性能評価値の一例となる。距離の平均値以外の処理性能評価値として、たとえば、サーバ201は、組合せパターン内のコアとメモリとの間の距離が最大のものを、処理性能評価値として算出してもよい。
サーバ201は、処理性能評価値の正規化関数fp()を用いて、正規化した処理性能評価値を算出する。関数fp()は、たとえば、下記(5)式となる。
fp(処理性能評価値)=1−処理性能評価値/距離テーブル1002内の距離の最大値 …(5)
関数fp()は、処理性能評価値が取り得る値を[0,1]の範囲に写像する関数である。処理性能評価値が取り得る最小値は、あるノードのコアから同一ノードのメモリまでのアクセス性能であり、距離テーブル1002を参照すると、0である。処理性能評価値が取り得る最大値は、距離テーブル1002内の距離の最大値である。すなわち、関数fp()は、単調減少であり、かつ、処理性能評価値が取り得る最小値となる0のときに1となり、最大値となる処理性能評価値/距離テーブル1002内の距離の最大値であるときに0となる関数であればどのような関数でもよい。(5)式は、係数a、bを用いて表したfp(処理性能評価値)=a×処理性能評価値+bに対して、(処理性能評価値,fp(処理性能評価値))=(0,1)、(距離テーブル1002内の距離の最大値,0)を代入してa、bを得た際の式と実質一致する。関数fp()の他の例として、サーバ201は、係数aを用いて表したfp(処理性能評価値)=a×処理性能評価値^2+1に対し、(処理性能評価値,fp(処理性能評価値))=(距離テーブル1002内の距離の最大値,0)を代入して係数aを得てもよい。
ここで、図14が示す組合せパターンpxを用いて、正規化した処理性能評価値を算出する例を示す。図14の(A)は、組合せパターンpxにおける複数のノード#0〜#3で実行される際の仮想サーバv0〜v3の割り当ての状態を示す。また、図14の(B)は、組合せパターンpxにおける、仮想サーバv0〜v3のコアとメモリとの距離の一覧を示す。仮想サーバv0〜v3のコアとメモリとの距離の特定については、SRAT623と、距離テーブル1002とを参照することにより特定できる。たとえば、仮想サーバv0のコアc00とメモリm00との距離について、サーバ201は、まず、コアc00に対応するレコード901−1と、メモリm00に対応するレコード902−1とを特定する。そして、サーバ201は、Entry[0][0]の距離が格納されたレコード1002−2を参照して、コアc00とメモリm00との距離“0”を得る。
サーバ201は、(3)式を用いて、組合せパターンpxの距離の合計を算出する。
組合せパターンの距離の合計=(0+0+2)+(0)+(0+0+2)+(0+0+2)=6
次に、サーバ201は、(4)式を用いて、距離の平均値を算出する。
距離の平均値=6/10=0.6
続けて、サーバ201は、距離の平均値を処理性能評価値とし、(5)式を用いて、処理性能評価値を正規化する。また、距離テーブル1002の最大値は、5となる。
fp(0.6)=1−0.6/5=0.88
同様に、図15の(A)は、組合せパターンpyにおける複数のノード#0〜#3で実行される際の仮想サーバv0〜v3の割り当ての状態を示す。また、図15の(B)は、組合せパターンpyにおける、仮想サーバv0〜v3のコアとメモリとの距離の一覧を示す。ここで、組合せパターンpyの距離の合計が、組合せパターンpxの距離の合計と一致するため、組合せパターンpyにおける正規化した処理性能評価値は、組合せパターンpxにおける正規化した処理性能評価値と同一の値となるため、計算を省略する。
図16は、仮想サーバ構成の入力の一例を示す説明図である。図16では、管理端末202が、仮想サーバ構成の入力画面を表示した例を示す。管理端末202は、管理者の操作により、仮想サーバごとに、仮想サーバのコア数とメモリ容量とを受け付ける。受け付けた仮想サーバのコア数とメモリ容量とは、NUMAシステム203の利用者からの要求に従って管理者が入力した値となる。
Applyボタン1601が押下された場合、管理端末202は、入力された仮想サーバごとの要求コア数と要求メモリサイズとから仮想サーバ構成情報621を生成し、生成した仮想サーバ構成情報621をディスク405等に格納する。また、管理端末202は、生成した仮想サーバ構成情報621をサーバ201の記憶領域に格納してもよい。入力された要求メモリサイズについて、NUMAシステム203がインタリーブやメモリミラーリングを行わない場合、管理端末202は、DIMM1つあたりの容量からDIMM何個分かを算出し、DIMMの個数に変換し、仮想サーバ構成情報621を生成する。一方、NUMAシステム203がインタリーブやメモリミラーリングを行う場合、管理端末202は、入力されたメモリサイズが、DIMMグループ何個分かを算出し、DIMMグループの個数に変換し、仮想サーバ構成情報621を生成する。
図17は、重み付けの入力の一例を示す説明図である。図17では、管理端末202が、重み付けの入力画面を表示した例を示す。管理端末202は、管理者の操作により、処理性能の重み付け係数と可用性の重み付け係数とを受け付ける。たとえば、管理者が処理性能を重視した結果、管理端末202は、処理性能の重み付け係数を100[%]とし、可用性の重み付け係数を0[%]とする入力を受け付ける。一方、管理者が処理性能と可用性とを同等に重視した結果、管理端末202は、処理性能の重み付け係数を50[%]とし、可用性の重み付け係数を50[%]とする入力を受け付ける。
Applyボタン1701が押下された場合、管理端末202は、入力された処理性能の重み付け係数と可用性の重み付け係数とから重み付け情報622を生成し、生成した重み付け情報622をディスク405等に格納する。また、管理端末202は、重み付け情報622をサーバ201に格納してもよい。
重み付けの計算の一例として、サーバ201は、下記(6)式を用いて、割当評価値を算出する。
割当評価値=処理性能の重み付け係数×処理性能評価値+可用性の重み付け係数×可用性評価値 …(6)
図16、図17で示した画面例は、サーバシステム200に管理端末202が含まれる場合の例である。サーバシステム200に管理端末202が含まれない場合、サーバ201の起動時に、サーバ201は、BIOS(Basic Input/Output System)プログラムにより仮想サーバ構成情報621と、重み付け情報622とを生成する画面を表示する。サーバ201は、サーバシステム200の運用者による操作により、仮想サーバ構成情報621と、重み付け情報622とを生成する。
次に、図18〜図26を用いて、サーバ201が実行するフローチャートについて説明する。
図18は、仮想サーバ割当処理手順の一例を示すフローチャートである。仮想サーバ割当処理は、NUMAシステム203に仮想サーバを割り当てる処理である。
サーバ201は、仮想サーバ構成情報621を取得する(ステップS1801)。次に、サーバ201は、重み付け情報622を取得する(ステップS1802)。ステップS1801とステップS1802の処理について、サーバ201は、IPMI(Intelligent Platform Management Interface)を用いて、管理端末202の記憶領域から仮想サーバ構成情報621や重み付け情報622を取得する。続けて、サーバ201は、組合せパターン作成処理を実行する(ステップS1803)。組合せパターン作成処理の詳細は、図19で後述する。
次に、サーバ201は、作成した組合せパターンの集合のうち、先頭の組合せパターンを取得する(ステップS1804)。続けて、サーバ201は、取得した組合せパターンにおける割当評価値算出処理を実行する(ステップS1805)。組合せパターンにおける割当評価値算出処理は、図22で後述する。
次に、サーバ201は、算出した割当評価値が、現時点で最大か否かを判断する(ステップS1806)。算出した割当評価値が現時点で最大か否かの判断方法として、サーバ201は、後述するステップS1808の処理により保存された割当評価値と比較して、算出した割当評価値の方が大きければ、算出した割当評価値が現時点で最大と判断する。また、保存された割当評価値がない場合、サーバ201は、算出した割当評価値が現時点で最大と判断する。
現時点で最大である場合(ステップS1806:Yes)、サーバ201は、取得した組合せパターンを保存する(ステップS1807)。次に、サーバ201は、取得した組合せパターンの割当評価値を保存する(ステップS1808)。
ステップS1808の処理終了後、または、現時点で最大でない場合(ステップS1806:No)、サーバ201は、全ての組合せパターンの割当評価値を算出したか否かを判断する(ステップS1809)。まだ算出していない組合せパターンの割当評価値がある場合(ステップS1809:No)、サーバ201は、作成した組合せパターンの集合のうち、次の組合せパターンを取得する(ステップS1810)。ステップS1810の処理終了後、サーバ201は、ステップS1805の処理に移行する。
全ての組合せパターンの割当評価値を算出した場合(ステップS1809:Yes)、サーバ201は、保存した組合せパターンに従って、仮想サーバを割り当てる(ステップS1811)。仮想サーバを割り当てた後、サーバ201は、仮想サーバ機能を実行する。
ステップS1811の処理終了後、サーバ201は、仮想サーバ割当処理を終了する。仮想サーバ割当処理を実行することにより、サーバ201は、処理性能と可用性という2つの評価項目のうち、サーバシステム200の運用者が最適だと考慮する組合せパターンに従った仮想サーバを割り当てることができる。
また、ステップS1806の処理について、サーバ201は、算出した割当評価値が現時点で最大か否かを判断したが、可用性評価値や処理性能評価値が現時点で最大か否かを判断してもよい。また、ステップS1811の処理では、算出した割当評価値が最大の組合せパターンに従って複数の仮想サーバを割り当てるが、サーバ201は、ステップS1811の処理の前に、次に示す処理を実行してもよい。ステップS1811の処理の前に行う処理として、サーバ201は、作成した組合せパターンのうちの、算出した割当評価値の大きい順からいくつかの組合せパターンに、割当評価値を対応付けて管理端末202に出力する。そして、管理端末202は、いくつかの組合せパターンに、割当評価値を対応付けて出力した一覧を表示する。続けて、管理端末202は、サーバシステム200の運用者によって指定された組合せパターンをサーバ201に送信する。指定された組合せパターンを受け付けたサーバ201は、受け付けた組合せパターンに従って複数の仮想サーバを割り当てる。
図19は、組合せパターン作成処理手順の一例を示すフローチャートである。組合せパターン作成処理は、組合せパターンを作成する処理である。サーバ201は、コアパターン作成処理を実行する(ステップS1901)。コアパターン作成処理の詳細は、図20で後述する。次に、サーバ201は、メモリパターン作成処理を実行する(ステップS1902)。メモリパターン作成処理は、図21で後述する。続けて、サーバ201は、コアパターンの集合と、メモリパターンの集合との直積により、組合せパターンの集合を作成する(ステップS1903)。ステップS1903の処理終了後、サーバ201は、組合せパターン作成処理を終了する。組合せパターン作成処理を実行することにより、サーバ201は、組合せパターンを作成することができる。
図20は、コアパターン作成処理手順の一例を示すフローチャートである。コアパターン作成処理は、コアパターンを作成する処理である。サーバ201は、割当コア数を、仮想サーバ構成情報621のコア数の合計に設定する(ステップS2001)。次に、サーバ201は、NUMAシステム203内の全コアから、割当コア数を取り出すコアパターンを作成する(ステップS2002)。続けて、サーバ201は、作成したコアパターンの集合のうち、先頭のコアパターンを選択する(ステップS2003)。
次に、サーバ201は、削除フラグにfalseを代入する(ステップS2004)。削除フラグは、選択したコアパターンが、冗長なため削除するか否かを示すフラグである。削除フラグは、値がtrueであれば、選択したコアパターンが冗長であり削除することを示す。続けて、サーバ201は、選択したコアパターン内の、先頭の仮想サーバの割当コアを取得する(ステップS2005)。次に、サーバ201は、選択した仮想サーバの割り当てコアのコアIDが昇順か否かを判断する(ステップS2006)。選択した仮想サーバの割り当てコアのコアIDが昇順でない場合(ステップS2006:No)、サーバ201は、削除フラグにtrueを代入する(ステップS2007)。
ステップS2007の処理終了後、または、選択した仮想サーバの割り当てコアのコアIDが昇順である場合(ステップS2006:Yes)、サーバ201は、選択したコアパターン内で、全ての仮想サーバの割当コアを選択したか否かを判断する(ステップS2008)。まだ選択していない仮想サーバの割当コアがある場合(ステップS2008:No)、サーバ201は、選択したコアパターン内の、次の仮想サーバの割当コアを選択する(ステップS2009)。ステップS2009の処理終了後、サーバ201は、ステップS2006の処理に移行する。
全ての仮想サーバの割当コアを選択した場合(ステップS2008:Yes)、サーバ201は、削除フラグがtrueか否かを判断する(ステップS2010)。削除フラグがtrueである場合(ステップS2010:Yes)、サーバ201は、選択したコアパターンを削除する(ステップS2011)。
ステップS2011の処理終了後、または、削除フラグがfalseである場合(ステップS2010:No)、サーバ201は、全ての作成したコアパターンを選択したか否かを判断する(ステップS2012)。まだ選択していない作成したコアパターンがある場合(ステップS2012:No)、サーバ201は、作成したコアパターンの集合のうち、次のコアパターンを選択する(ステップS2013)。ステップS2013の処理終了後、サーバ201は、ステップS2004の処理に移行する。
全ての作成したコアパターンを選択した場合(ステップS2012:Yes)、サーバ201は、コアパターン作成処理を終了する。コアパターン作成処理を実行することにより、サーバ201は、冗長のないコアパターンを作成することができる。
図21は、メモリパターン作成処理手順の一例を示すフローチャートである。メモリパターン作成処理は、メモリパターンを作成する処理である。ここで、ステップS2101〜ステップS2113の処理は、図20に示したステップS2001〜ステップS2013の各処理について、「コア」を「メモリ」に置き換えただけであるから、説明を省略する。メモリパターン作成処理を実行することにより、サーバ201は、冗長のないメモリパターンを作成することができる。
図22は、組合せパターンにおける割当評価値算出処理手順の一例を示すフローチャートである。組合せパターンにおける割当評価値算出処理は、組合せパターンにおける割当評価値を算出する処理である。
サーバ201は、処理性能評価値算出処理を実行する(ステップS2201)。処理性能評価値算出処理は、図23と図24とで後述する。次に、サーバ201は、可用性評価値算出処理を実行する(ステップS2202)。可用性評価値算出処理は、図25と図26とで後述する。続けて、サーバ201は、重み付け情報622を参照して、処理性能の重み付け係数×処理性能評価値+可用性の重み付け係数×可用性評価値を割当評価値として計算する(ステップS2203)。ステップS2203の処理終了後、サーバ201は、組合せパターンにおける割当評価値算出処理を終了する。組合せパターンにおける割当評価値算出処理を実行することにより、サーバ201は、組合せパターンにおける割当評価値を算出することができる。
図23は、処理性能評価値算出処理手順の一例を示すフローチャート(その1)である。また、図24は、処理性能評価値算出処理手順の一例を示すフローチャート(その2)である。処理性能評価値算出処理は、処理性能評価値を算出して、正規化する処理である。
サーバ201は、合計値に0を代入する(ステップS2301)。次に、サーバ201は、個数に0を代入する(ステップS2302)。ここで、合計値と個数とは、処理性能評価値算出処理で用いる変数である。続けて、サーバ201は、iに0を代入する(ステップS2303)。iは、処理性能評価値算出処理で用いる変数であり、仮想サーバのインデックスを示す変数である。
次に、サーバ201は、仮想サーバM個のうち、i番目の仮想サーバを選択する(ステップS2304)。続けて、サーバ201は、jに0を代入する(ステップS2305)。次に、サーバ201は、kに0を代入する(ステップS2306)。ここで、jとkは、それぞれ、処理性能評価値算出処理で用いる変数であり、仮想サーバ内のコアのインデックスを示す変数と、仮想サーバ内のメモリのインデックスを示す変数とである。
続けて、サーバ201は、SRAT623、距離テーブル1002を参照して、i番目の仮想サーバにあるj番目のコアと、k番目のメモリとの距離を取得する(ステップS2307)。次に、サーバ201は、合計値+取得した距離を合計値に代入する(ステップS2308)。続けて、サーバ201は、個数+1を個数に代入する(ステップS2309)。次に、(i番目の仮想サーバにあるメモリの個数−1)がkより大きいか否かを判断する(ステップS2310)。
(i番目の仮想サーバにあるメモリの個数−1)がkより大きい場合(ステップS2310:Yes)、サーバ201は、kをインクリメントする(ステップS2311)。ステップS2311の処理終了後、サーバ201は、ステップS2307の処理に移行する。(i番目の仮想サーバにあるメモリの個数−1)がk以下である場合(ステップS2310:No)、サーバ201は、(i番目の仮想サーバにあるコアの個数−1)がjより大きいか否かを判断する(ステップS2312)。(i番目の仮想サーバにあるコアの個数−1)がjより大きい場合(ステップS2312:Yes)、サーバ201は、jをインクリメントする(ステップS2313)。ステップS2313の処理終了後、サーバ201は、ステップS2306の処理に移行する。(i番目の仮想サーバにあるコアの個数−1)がj以下である場合(ステップS2312:No)、サーバ201は、図24に示すステップS2401の処理に移行する。
ステップS2312:Noとなった場合、サーバ201は、(M−1)がiより大きいか否かを判断する(ステップS2401)。(M−1)がiより大きい場合(ステップS2401:Yes)、サーバ201は、iをインクリメントする(ステップS2402)。ステップS2402の処理終了後、サーバ201は、ステップS2304の処理に移行する。
(M−1)がi以下である場合(ステップS2401:No)、サーバ201は、合計値/個数を距離の平均値として算出する(ステップS2403)。次に、サーバ201は、fp(距離の平均値)を正規化した処理性能評価値として算出する(ステップS2404)。ステップS2404の処理終了後、サーバ201は、処理性能評価値算出処理を終了する。処理性能評価値算出処理を実行することにより、サーバ201は、処理性能評価値を算出して、正規化することができる。
図25は、可用性評価値算出処理手順の一例を示すフローチャート(その1)である。また、図26は、可用性評価値算出処理手順の一例を示すフローチャート(その2)である。可用性評価値算出処理は、可用性評価値を算出して、正規化する処理である。
サーバ201は、各ノードにおける仮想サーバの数[0,…,N−1]に0を代入する(ステップS2501)。ここで、各ノードにおける仮想サーバの数[0,…,N−1]は、N[個]の配列である。また、ステップS2501の処理では、サーバ201は、各ノードにおける仮想サーバの数[0,…,N−1]の各要素に、0を代入する。
次に、サーバ201は、iに0を代入する(ステップS2502)。iは、可用性評価値算出処理で用いる変数であり、仮想サーバのインデックスを示す変数である。続けて、サーバ201は、仮想サーバM個のうち、i番目の仮想サーバを選択する(ステップS2503)。次に、サーバ201は、仮想サーバ存在フラグ[0,…,N−1]に0を代入する(ステップS2504)。仮想サーバ存在フラグ[0,…,N−1]は、各ノードにおいて、i番目の仮想サーバが存在するか否かを示すフラグの配列である。フラグの値は、0であればi番目の仮想サーバが存在しないことを示し、1であればi番目の仮想サーバが存在することを示す。
続けて、サーバ201は、jに0を代入する(ステップS2505)。ここで、jは、可用性評価値算出処理で用いる変数であり、仮想サーバ内のコアのインデックスを示す変数である。次に、サーバ201は、SRAT623を参照して、i番目の仮想サーバのj番目のコアが所属するノードの番号を取得する(ステップS2506)。続けて、サーバ201は、仮想サーバ存在フラグ[取得した番号]に1を代入する(ステップS2507)。次に、サーバ201は、(i番目の仮想サーバにあるコアの個数−1)がjより大きいか否かを判断する(ステップS2508)。(i番目の仮想サーバにあるコアの個数−1)がjより大きい場合(ステップS2508:Yes)、サーバ201は、jをインクリメントする(ステップS2509)。ステップS2509の処理終了後、サーバ201は、ステップS2506の処理に移行する。
(i番目の仮想サーバにあるコアの個数−1)がj以下である場合(ステップS2508:No)、サーバ201は、図26に示すステップS2601の処理に移行する。
ステップS2508:Noであった場合、サーバ201は、kに0を代入する(ステップS2601)。ここで、kは、可用性評価値算出処理で用いる変数であり、仮想サーバ内のメモリのインデックスを示す変数である。次に、サーバ201は、SRAT623を参照して、i番目の仮想サーバのk番目のメモリが所属するノードの番号を取得する(ステップS2602)。続けて、サーバ201は、仮想サーバ存在フラグ[取得した番号]に1を代入する(ステップS2603)。次に、サーバ201は、(i番目の仮想サーバにあるメモリの個数−1)がkより大きいか否かを判断する(ステップS2604)。(i番目の仮想サーバにあるメモリの個数−1)がkより大きい場合(ステップS2604:Yes)、サーバ201は、kをインクリメントする(ステップS2605)。ステップS2605の処理終了後、サーバ201は、ステップS2602の処理に移行する。
(i番目の仮想サーバにあるメモリの個数−1)がk以下である場合(ステップS2604:No)、サーバ201は、各ノードにおける仮想サーバの数[0,…,N−1]に、各ノードにおける仮想サーバの数[0,…,N−1]+仮想サーバ存在フラグ[0,…,N−1]を代入する(ステップS2606)。ステップS2606の処理は、配列同士の加算であり、たとえば、サーバ201は、0番目の要素として、各ノードにおける仮想サーバの数[0]に、各ノードにおける仮想サーバの数[0]+仮想サーバ存在フラグ[0]を代入する。サーバ201は、1番目の要素〜N−1番目の要素についても同様な処理を行う。
次に、サーバ201は、(M−1)がiより大きいか否かを判断する(ステップS2607)。(M−1)がiより大きい場合(ステップS2607:Yes)、サーバ201は、iをインクリメントする(ステップS2608)。ステップS2608の処理終了後、サーバ201は、ステップS2503の処理に移行する。
(M−1)がi以下である場合(ステップS2607:No)、サーバ201は、仮想サーバの最大数=Max(各ノードにおける仮想サーバの数[0,…,N−1])を計算する(ステップS2609)。次に、サーバ201は、fa(仮想サーバの最大数)を正規化した可用性評価値として算出する(ステップS2610)。ステップS2610の処理終了後、サーバ201は、可用性評価値算出処理を終了する。可用性評価値算出処理を実行することにより、サーバ201は、可用性評価値を算出して、正規化することができる。
以上説明したように、サーバ201によれば、NUMAシステム203内の各々のノードにあるコアまたはメモリを用いて実行されるノード単位の仮想サーバの個数から、NUMAシステム203上の複数の仮想サーバの可用性評価値を算出する。これにより、サーバ201は、複数のノードのうちの一部のノードの障害が複数の仮想サーバに与える影響の程度を評価することができる。また、サーバ201は、可用性評価値が最大となった組合せパターンに従って仮想サーバを割り当てることにより、一部のノードの障害が複数の仮想サーバに与える影響が最も小さくなる複数の仮想サーバの割り当てを行うことができる。
また、可用性評価値は、復旧にかかるであろうコストであると解釈することもできる。具体的には、サーバシステム200は、NUMAシステム203上で実行する業務アプリケーションに関する情報を定期的にバックアップしているとする。そして、可用性評価値が、複数の仮想サーバの個数のうちの最大値であるとする。このとき、可用性評価値は、1つのノードに障害が発生した際、バックアップしたデータを用いて、仮想サーバを復旧することになる仮想サーバの個数の最大値となる。したがって、可用性評価値が小さいほど、復旧にかかるであろうコストが小さくなることを示す。
また、サーバ201によれば、各々の仮想サーバの実行に用いるコアからメモリへのアクセス性能に基づいて、複数の仮想サーバの処理性能評価値を算出してもよい。これにより、サーバ201は、ある組合せパターンにおける複数の仮想サーバの処理性能評価値を用いて、処理性能が最適な組合せパターンを選択することができる。また、サーバ201は、処理性能評価値が最大となった組合せパターンに従って仮想サーバを割り当てることにより、複数の仮想サーバの合計の処理性能が最大となる複数の仮想サーバの割り当てを行うことができる。また、サーバ201は、ある組合せパターンにおける複数の仮想サーバの処理性能評価値をサーバシステム200の運用者に閲覧させることにより、ある組合せパターンが処理性能に対して最適なパターンであるか否かの判断基準を提供することができる。
また、サーバ201によれば、複数の仮想サーバの個数に基づいて、可用性評価値を正規化してもよい。正規化した可用性評価値は、複数の仮想サーバの個数に依存しない値となる。したがって、サーバシステム200の運用者が、ある組合せパターンにおける複数の仮想サーバの可用性評価値を閲覧した際に、正規化していない可用性評価値と比較して判断がし易くなる。
また、サーバ201によれば、各々の仮想サーバの実行に用いるコアからメモリへのアクセス性能の最大値に基づいて、処理性能評価値を正規化してもよい。正規化した処理性能評価値は、ノード間の距離の長短に依存しない値となる。したがって、サーバシステム200の運用者が、ある組合せパターンにおける複数の仮想サーバの処理性能評価値を閲覧した際に、正規化していない処理性能評価値と比較して判断がし易くなる。また、サーバ201は、正規化した可用性評価値と、正規化した処理性能評価値とを合わせて出力してもよい。これにより、サーバシステム200の運用者が、正規化した可用性評価値と正規化した処理性能評価値とを閲覧した際に、ある組合せパターンが、可用性と処理性能とのうちのどちらが重視されたパターンであるのかを容易に判断することができる。
また、サーバ201によれば、正規化した可用性評価値と正規化した処理性能評価値とのいずれか一方に重み付けして累積した割当評価値を算出してもよい。これにより、サーバ201は、複数の仮想サーバにおける可用性と処理性能とを同時に考慮した割当評価値を算出することができる。そして、割当評価値が最大となる組合せパターンに従って複数のノードに仮想サーバを割り当てることにより、サーバ201は、サーバシステム200の運用者が最適と考える仮想サーバ構成をとることができる。
また、サーバ201によれば、仮想サーバ構成情報621を参照して、組合せパターンを作成してもよい。これにより、サーバ201は、複数のノードが有するコアとメモリとから、取り得る全ての組合せパターンについて、可用性評価値、処理性能評価値、割当評価値を算出することができる。
また、サーバ201によれば、組合せパターンに、可用性評価値を対応付けて出力してもよい。同様に、サーバ201は、組合せパターンに、処理性能評価値を対応付けて出力してもよいし、組合せパターンに、割当評価値を対応付けて出力してもよい。可用性評価値を例とすると、サーバ201は、サーバ201が作成した組合せパターンについての可用性評価値をサーバシステム200の運用者に閲覧させて、運用者が想定していない組合せパターンに対する可用性評価値を提示することができる。
また、サーバ201によれば、作成した組合せパターンは膨大な個数となるため、作成した組合せパターンのうち、可用性評価値、処理性能評価値、割当評価値のいずれかが上位となった組合せパターンを絞り込んで出力してもよい。これにより、サーバ201は、膨大な個数となる組合せパターンのうち、可用性、処理性能が高い組合せパターンをサーバシステム200の運用者に提供することができる。
また、サーバ201によれば、複数の組合せパターンの各々の組合せパターンに対応付けた可用性評価値、処理性能評価値、割当評価値を一覧として出力してもよい。割当評価値が最大となる組合せパターンは、可用性評価値と処理性能評価値とが共に高い値ではなく、可用性評価値と処理性能評価値とのいずれか一方のみが高い値となる可能性もある。この場合、サーバシステム200の運用者は、一覧を閲覧して、割当評価値が最大ではあるが、可用性評価値と処理性能評価値とのいずれか一方が高い組合せパターンより、可用性評価値と処理性能評価値とがある程度高い組合せパターンを選択することができる。
なお、本実施の形態で説明した情報処理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本情報処理プログラムは、ハードディスク、フレキシブルディスク、CD−ROM(Compact Disc−Read Only Memory)、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本情報処理プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)各々のノードがコアとメモリとを有し、前記メモリの少なくとも一部をノード間で共用する複数のノードを含むシステム上で実行する複数の仮想マシンに含まれる各々の仮想マシンの実行に用いるコアとメモリとの組合せ同士を対応付けた対応情報に基づいて、前記各々のノードが有するコアまたはメモリを用いて実行されるノード単位の仮想マシンの個数の前記ノード間における偏り度合いを示す値を算出する制御部、
を有することを特徴とする情報処理装置。
(付記2)前記制御部は、
さらに、前記対応情報に含まれる各々の組合せにより特定される、前記各々の仮想マシンの実行に用いるコアからメモリへのアクセス性能に基づいて、前記システム上で実行する前記複数の仮想マシンの処理性能を示す値を算出することを特徴とする付記1に記載の情報処理装置。
(付記3)前記制御部は、
前記複数の仮想マシンの個数に基づいて、算出した前記偏り度合いを示す値を正規化することを特徴とする付記2に記載の情報処理装置。
(付記4)前記制御部は、
前記複数のノードが有するコアからメモリへのアクセス性能の最大値および最小値に基づいて、算出した前記処理性能を示す値を正規化することを特徴とする付記2または3に記載の情報処理装置。
(付記5)前記制御部は、
前記複数の仮想マシンの個数に基づいて、算出した前記偏り度合いを示す値を正規化し、
正規化した前記偏り度合いを示す値および正規化した前記処理性能を示す値のいずれか一方の値に重み付けした値と他方の値を足し合わせた値を算出することを特徴とする付記4に記載の情報処理装置。
(付記6)前記制御部は、
前記各々の仮想マシンの実行に要するコアの個数とメモリの個数とに基づいて、前記システム上で実行する前記各々の仮想マシンの実行に用いるコアとメモリとの組合せ同士を対応付けた対応情報を作成することを特徴とする付記1〜5のいずれか一つに記載の情報処理装置。
(付記7)前記制御部は、
前記対応情報に、算出した前記偏り度合いを示す値を対応付けて出力することを特徴とする付記1〜6のいずれか一つに記載の情報処理装置。
(付記8)前記制御部は、
前記対応情報に、算出した前記処理性能を示す値を対応付けて出力することを特徴とする付記2〜5のいずれか一つに記載の情報処理装置。
(付記9)前記制御部は、
前記対応情報に、算出した前記足し合わせた値を対応付けて出力することを特徴とする付記5に記載の情報処理装置。
(付記10)コンピュータが、
各々のノードがコアとメモリとを有し、前記メモリの少なくとも一部をノード間で共用する複数のノードを含むシステム上で実行する複数の仮想マシンに含まれる各々の仮想マシンの実行に用いるコアとメモリとの組合せ同士を対応付けた対応情報を取得し、
取得した対応情報に基づいて、前記各々のノードが有するコアまたはメモリを用いて実行されるノード単位の仮想マシンの個数の前記ノード間における偏り度合いを示す値を算出する、
処理を実行することを特徴とする情報処理方法。
(付記11)コンピュータに、
各々のノードがコアとメモリとを有し、前記メモリの少なくとも一部をノード間で共用する複数のノードを含むシステム上で実行する複数の仮想マシンに含まれる各々の仮想マシンの実行に用いるコアとメモリとの組合せ同士を対応付けた対応情報に基づいて、前記各々のノードが有するコアまたはメモリを用いて実行されるノード単位の仮想マシンの個数の前記ノード間における偏り度合いを示す値を算出する、
処理を実行させることを特徴とする情報処理プログラム。