(57)【要約】【課題】ジョブを複数の計算機のいずれかに割り当てる際に有用な情報を提供すること。【解決手段】計算機余力算出装置１は、記憶装置２と処理装置３とを備える。記憶装置２には、複数の計算機の各々の性能値を示す性能値情報ＤＡ、各々の計算機の資源使用率を示す使用率情報ＤＢ、及び資源使用率の閾値を示す閾値情報ＤＲが格納される。処理装置３は、それら性能値情報ＤＡ、使用率情報ＤＢ、及び閾値情報ＤＲを参照し、閾値と資源使用率との差及び性能値に基づいて、各々の計算機の余力を算出する。【選択図】図２
2009087213.tif 000002
【特許請求の範囲】
【請求項１】
複数の計算機の各々の性能値を示す性能値情報、前記各々の計算機の資源使用率を示す使用率情報、及び資源使用率の閾値を示す閾値情報が格納される記憶装置と、
前記性能値情報、前記使用率情報、及び前記閾値情報を参照し、前記閾値と前記資源使用率との差及び前記性能値に基づいて、前記各々の計算機の余力を算出する処理装置と
を備える
計算機余力算出装置。
【請求項２】
請求項１に記載の計算機余力算出装置であって、
前記処理装置は、前記閾値と前記資源使用率との差に前記性能値を乗ずることによって、前記各々の計算機の前記余力を算出する
計算機余力算出装置。
【請求項３】
請求項１又は２に記載の計算機余力算出装置であって、
更に、前記算出された余力に関する余力情報を出力する出力装置を備える
計算機余力算出装置。
【請求項４】
請求項３に記載の計算機余力算出装置であって、
前記余力情報は、前記複数の計算機と前記算出された余力との対応関係を示す余力テーブルである
計算機余力算出装置。
【請求項５】
請求項４に記載の計算機余力算出装置であって、
前記余力テーブルのエントリは、前記算出された余力の大きさの順番に基づいてソートされている
計算機余力算出装置。
【請求項６】
請求項３に記載の計算機余力算出装置であって、
前記余力情報は、前記複数の計算機のうち前記算出された余力が最大である計算機と前記最大の余力を選択的に示す
計算機余力算出装置。
【請求項７】
請求項３乃至６のいずれかに記載の計算機余力算出装置であって、
前記出力装置は、前記余力情報を表示する表示装置である
計算機余力算出装置。
【請求項８】
請求項１又は２に記載の計算機余力算出装置であって、
前記処理装置は、前記算出された余力を参照することにより、ジョブを前記複数の計算機のいずれかに割り当てる
計算機余力算出装置。
【請求項９】
（Ａ）複数の計算機の各々の性能値を取得することと、
（Ｂ）前記各々の計算機の資源使用率を取得することと、
（Ｃ）資源使用率の閾値を取得することと、
（Ｄ）前記閾値と前記資源使用率との差及び前記性能値に基づいて、前記各々の計算機の余力を算出することと
を含む
計算機余力算出方法。
【請求項１０】
（ａ）複数の計算機の各々の性能値を取得することと、
（ｂ）前記各々の計算機の資源使用率を取得することと、
（ｃ）資源使用率の閾値を取得することと、
（ｄ）前記閾値と前記資源使用率との差及び前記性能値に基づいて、前記各々の計算機の余力を算出することと
をコンピュータに実行させる
計算機余力算出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の計算機から構成される計算機システムの使用状況を把握するための技術に関する。特に、本発明は、あるジョブを複数の計算機のいずれかに割り当てる際に有用な情報を提供するための技術に関する。
【背景技術】
【０００２】
複数の計算機がネットワークを介して接続された計算機システムが知られている。そのような計算機システムにおいて、システムの使用状況や負荷を管理することは重要である。計算機システムの管理に関連する技術として、次のものが知られている。
【０００３】
特開２００６−９２０５３号公報（特許文献１）には、複数の計算ノードから構成される計算ノード群全体のリソース使用率を算出するシステム使用率管理装置が開示されている。そのシステム使用率管理装置によれば、ノード最大性能設定手段は、複数の計算ノードの各々の最大性能を設定する。ここで、最大性能とは、ノードが単位時間当たりに処理できるリクエスト数を意味する。また、リソース使用率取得手段は、複数の計算ノードの各々のリソース使用率を取得する。更に、仮想使用率算出手段は、各計算ノードの最大性能及びリソース使用率に基づいて、計算ノード群の全体としてのリソース使用率を算出する。このように計算ノード群全体のリソース使用率を算出することにより、システムの使用状況や負荷を素早く把握することができる。
【０００４】
また、複数の計算機がネットワークを介して接続された計算機システムにおいては、各計算機の負荷を分散させることが重要である。そのような負荷分散に関連する技術として、次のものが知られている。
【０００５】
特開平１０−１６１９８７号公報（特許文献２）には、負荷分散処理システムが記載されている。その負荷分散処理システムによれば、各コンピュータに設けられた負荷状況取得手段が、自身のコンピュータの負荷率を取得する。ここで、負荷率とは、実行中のジョブによるＣＰＵ使用率の合計である。また、１つのコンピュータには、負荷調整手段が設けられている。いずれかのコンピュータにおいて新たなジョブが発生した場合、負荷調整手段は、負荷率が最も低いコンピュータを検出し、検出されたコンピュータに当該新たなジョブを実行させる。このように、次々に発生するジョブを負荷率が最も低いコンピュータに順次割り当てることにより、適切な負荷状態が実現される。
【０００６】
特開平１１−２４９４９号公報（特許文献３）には、複数の計算サーバと１台の計算クライアントから構成されるマルチサーバ・クライアントシステムが記載されている。計算クライアントがある新たな演算を要求するにあたり、その計算クライアントは、次の手法に従って、複数の計算サーバの中から当該演算の割り当て先を選択する。すなわち、計算クライアントは、各計算サーバが単位時間当たりに処理可能な演算数と、各計算サーバが現在実行中の演算数を参照する。更に、計算クライアントは、「現在実行中の演算数」を「単位時間当たりに処理可能な演算数」で割ることにより、各計算サーバにおいて現在実行中の演算が終了するまでの時間を算出する。そして、計算クライアントは、算出された時間が最も短い計算サーバを、要求された演算の割り当て先として選択する。このような手法により、演算処理は、計算サーバの演算負荷が全体として均一化する方向に割り当てられることになる。
【０００７】
特開２００３−４６５３９号公報（特許文献４）には、ルータの負荷分散方法が記載されている。ルータは、自身のＣＰＵ使用率を測定する測定手段と、プライオリティを動的に設定する設定手段とを有する。設定手段は、ＣＰＵ使用率が高いほどプライオリティが低くなるように、プライオリティを設定する。ＶＲＲＰ（Virtual Router Redundancy Protocol）によれば、プライオリティの高いルータが特定のパケット処理に割り当てられる。従って、ＣＰＵ使用率の低いルータがより多くのパケットを処理するようになり、ルータ間で処理負荷が分散される。
【０００８】
【特許文献１】特開２００６−９２０５３号公報
【特許文献２】特開平１０−１６１９８７号公報
【特許文献３】特開平１１−２４９４９号公報
【特許文献４】特開２００３−４６５３９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
あるジョブを複数の計算機のいずれかに割り当てる際、例えば上述の関連技術のように、ＣＰＵ使用率が最も低い計算機を割り当て先として選択することが考えられる。しかしながら、性能が異なる計算機がシステムに含まれる場合は、単純にＣＰＵ使用率が最も低い計算機にジョブを割り当てることで、当該ジョブの処理時間が短縮されるとは限らない。なぜなら、高性能な計算機は、ＣＰＵ使用率が相対的に高くても、割り当てられたジョブを他の計算機よりも早く処理できる可能性があるからである。従って、ジョブの割り当て先を、ＣＰＵ使用率だけに基づいて決定することは好ましくない。
【００１０】
本発明の１つの目的は、ジョブの割り当て先を決定する際に有用な情報を提供することにある。
【課題を解決するための手段】
【００１１】
本発明によれば、あるジョブを複数の計算機のいずれかに割り当てる際に有用な情報が提供される。そのために、各々の計算機の「余力」が算出される。ここで、本願発明者は、次の点に着目した。それは、ある計算機の資源使用率が所定の閾値を超えると、その計算機の実効的な処理性能が著しく劣化することである。従って、各計算機の余力の算出にあたっては、資源使用率の閾値が考慮される。
【００１２】
本発明の第１の観点において、計算機余力算出装置が提供される。その計算機余力算出装置は、記憶装置と処理装置とを備える。記憶装置には、複数の計算機の各々の性能値を示す性能値情報、各々の計算機の資源使用率を示す使用率情報、及び資源使用率の閾値を示す閾値情報が格納される。処理装置は、それら性能値情報、使用率情報、及び閾値情報を参照し、閾値と資源使用率との差及び性能値に基づいて、各々の計算機の余力を算出する。
【００１３】
本発明の第２の観点において、計算機余力算出方法が提供される。その計算機余力算出方法は、（Ａ）複数の計算機の各々の性能値を取得することと、（Ｂ）各々の計算機の資源使用率を取得することと、（Ｃ）資源使用率の閾値を取得することと、（Ｄ）閾値と資源使用率との差及び性能値に基づいて、各々の計算機の余力を算出することと、を含む。
【００１４】
本発明の第３の観点において、計算機余力算出プログラムが提供される。その計算機余力算出プログラムは、（ａ）複数の計算機の各々の性能値を取得することと、（ｂ）各々の計算機の資源使用率を取得することと、（ｃ）資源使用率の閾値を取得することと、（ｄ）閾値と資源使用率との差及び性能値に基づいて、各々の計算機の余力を算出することと、をコンピュータに実行させる。
【発明の効果】
【００１５】
あるジョブの割り当て先を決定する際には、本発明により算出された各計算機の余力が参照されるとよい。その余力の算出にあたっては、ＣＰＵ使用率等の資源使用率だけでなく性能値も考慮されている。従って、複数の計算機の性能が互いに異なる場合であっても、算出された余力は、ジョブの割り当て先を決定する際の有用な指針となり得る。
【００１６】
更に、本発明によれば、余力の算出にあたって、各計算機の資源使用率と性能値に加えて、資源使用率の閾値も考慮されている。より詳細には、閾値と資源使用率との差が考慮されている。そのようにして算出された余力を参照することにより、資源使用率が閾値を超えないようにジョブの割り当て先を決定することができる。その結果、ジョブが割り当てられた計算機の資源使用率が閾値を超え、その計算機の実効的な処理性能が劣化することが未然に防止される。
【００１７】
このように、本発明によれば、ジョブの割り当て先を決定する際に有用な情報が提供される。
【発明を実施するための最良の形態】
【００１８】
１．計算機システム
まず、複数の計算機がネットワークを介して接続された計算機システムを考える。計算機としては、サーバや、ワークステーションや、計算ノード等が挙げられる。例えば、図１は、複数のサーバがネットワークを介して接続されたサーバシステムを概略的に示している。このサーバシステムは、Ｎ台のサーバＭ１〜ＭＮから構成されている（Ｎは２以上の整数）。サーバＭ１〜ＭＮには、それぞれＩＤ番号１〜Ｎが付与されている。
【００１９】
図１において、各サーバは、物理的な計算機であってもよいし、仮想化技術によって実現される仮想的な計算機（VM: Virtual Machine）であってもよい。前者は「物理サーバ」と呼ばれ、後者は「仮想サーバ」と呼ばれることもある。仮想サーバは、物理サーバと必ずしも１対１に対応していない。仮想化技術により、１台の物理サーバ上で複数の仮想サーバを稼動させることもできる。
【００２０】
サーバＭ１〜ＭＮには、互いに性能の異なる２以上のサーバが含まれていてもよい。つまり、サーバシステムにおいて異機種のサーバが混在していてもよい（異機種混在環境）。
【００２１】
あるジョブを、複数のサーバＭ１〜ＭＮのいずれかに割り当てる場合を考える。ここでのジョブは、ＯＳ上の処理単位であるプロセスに限られず、Ｗｅｂサーバ等のトランザクションシステムに対するリクエストであってもよい。また、ジョブは、仮想サーバ等のバーチャルマシンであってもよい。物理サーバにとっては、その上で動作する仮想サーバを処理すべきジョブとみなすことができるからである。
【００２２】
ジョブの割り当てに際しては、サーバシステムの使用状況を考慮して、最も適切な割り当て先を決定することが望ましい。本発明の実施例によれば、サーバシステムの使用状況を反映した有用な情報が提供される。より詳細には、その有用な情報として、各々のサーバの「余力」が算出される。各サーバ（各計算機）の余力を算出するための装置が、次に説明される「計算機余力算出装置」である。
【００２３】
２．計算機余力算出装置
図２は、本発明の実施例に係る計算機余力算出装置１の構成を示すブロック図である。計算機余力算出装置１は、記憶装置２と処理装置３を備えるコンピュータである。記憶装置２としては、ＲＡＭ（Random Access Memory）やＨＤＤ（Hard Disk Drive）が例示される。処理装置３は、ＣＰＵ（Central Processing Unit）を有している。
【００２４】
記憶装置２には、性能値テーブル（性能値情報）ＤＡ、使用率テーブル（使用率情報）ＤＢ、閾値データ（閾値情報）ＤＲ、余力テーブル（余力情報）ＤＣなどが格納される。
【００２５】
性能値テーブルＤＡは、各々のサーバの「性能値」を示す。性能値は、ある計算機資源に関する性能比を表す整数あるいは実数である。ここで、計算機資源とは、ＣＰＵのほか、ディスクやメモリ、ネットワーク等を指す。例えば、ベンチマークテストにより得られる、サーバのＣＰＵの整数演算処理性能を示す“ＳＰＥＣｉｎｔ”や実数演算処理性能を示す“ＳＰＥＣｆｐ”は公開されている。それら“ＳＰＥＣｉｎｔ”や“ＳＰＥＣｆｐ”を、各サーバのＣＰＵの性能値として利用することができる。また、特定用途のベンチマークを使った測定結果をもとに性能値を算出することもできる。より大きな性能値が、より高い性能を表す。例えば、ある計算機資源に関するサーバＭ１、Ｍ２の性能値がそれぞれ２．０、５．０の場合、サーバＭ２の性能はサーバＭ１の２．５倍である。
【００２６】
使用率テーブルＤＢは、各々のサーバの「資源使用率」を示す。資源使用率は、単位時間あたりにサーバが使用した計算機資源の割合である。上述の通り、計算機資源とは、ＣＰＵのほか、ディスクやメモリ、ネットワーク等を指す。従って、資源使用率としては、ＣＰＵ使用率、ディスク使用率、メモリ使用量、ネットワーク転送レート等が挙げられる。例えば、ＣＰＵが単位時間のうち３０％の時間だけ処理を行い、残りの７０％の時間はアイドル状態であったとき、ＣＰＵ使用率は０．３（３０％）である。資源使用率は、例えば、サーバ上で動作するＯＳにあらかじめ組み込まれた機能や、ＯＳの内部に独自に組み込まれたモジュールを用いることにより取得できる。
【００２７】
閾値データＤＲは、上述の資源使用率の「閾値」を示す。例えば、資源使用率の閾値は、０．８（８０％）に設定される。ＣＰＵ使用率などの資源使用率がこの閾値を越えると、サーバ上で動作するアプリケーションの実効的な性能が著しく劣化することが一般に知られている。
【００２８】
余力テーブルＤＣは、各々のサーバの「余力」を示すテーブルであり、本実施例に係る計算機余力算出装置１によって作成される。後述されるように、各々のサーバの余力は、上述の性能値、資源使用率及び閾値に基づいて算出される。
【００２９】
再度図２を参照して、処理装置３は、データ入力部１０及び余力算出部２０を含んでいる。データ入力部１０は、性能値取得部１１、使用率取得部１２、及び閾値取得部１３を含んでいる。データ入力部１０、性能値取得部１１、使用率取得部１２、閾値取得部１３、及び余力算出部２０は、それぞれ特定の機能を提供するモジュールであり、処理装置３のＣＰＵがプログラムＰＲＯＧを実行することにより実現される。プログラムＰＲＯＧは、典型的には、コンピュータ読み取り可能な記録媒体に記録されている。プログラムＰＲＯＧは、計算機余力算出装置１に次の処理を実行させる。
【００３０】
図３は、計算機余力算出装置１による処理を示すフローチャートである。図１〜図３を参照して、本実施例に係る計算機余力算出方法を説明する。
【００３１】
ステップＳ１０：
データ入力部１０は、外部から各種情報を受け取り、記憶装置２に格納される上述の性能値テーブルＤＡ、使用率テーブルＤＢ及び閾値データＤＲを作成する。
【００３２】
具体的には、性能値取得部１１は、各サーバＭｉの性能値Ａｉを取得する（ｉ＝１〜Ｎ）。例えば、ユーザは、入力装置（図示されない）を用いることにより性能値Ａｉを入力し、性能値取得部１１は、入力された性能値Ａｉを受け取る。そして、性能値取得部１１は、受け取った性能値Ａｉを性能値テーブルＤＡに記録する。このようにして、サーバＭｉと性能値Ａｉとの対応関係を示す性能値テーブルＤＡが作成される（ステップＳ１１）。
【００３３】
また、使用率取得部１２は、ある時点での各サーバＭｉの資源使用率Ｂｉを取得する。資源使用率Ｂｉは、例えば、サーバＭｉ上で動作するＯＳにあらかじめ組み込まれた機能により得られる。各サーバＭｉは、得られた資源使用率Ｂｉを計算機余力算出装置１に送信し、使用率取得部１２は、各サーバＭｉから資源使用率Ｂｉを受け取る。使用率取得部１２は、各サーバＭｉの資源使用率Ｂｉを、稼働中のサーバシステムからリアルタイムに取得することもできる。あるいは、使用率取得部１２は、運用実績を記録したログファイルを読み込むことによって、各サーバＭｉの資源使用率Ｂｉを取得してもよい。使用率取得部１２は、取得した資源使用率Ｂｉを使用率テーブルＤＢに記録する。このようにして、サーバＭｉと資源使用率Ｂｉとの対応関係を示す使用率テーブルＤＢが作成される（ステップＳ１２）。
【００３４】
また、閾値取得部１３は、資源使用率の閾値Ｒを取得する。例えば、ユーザは、入力装置（図示されない）を用いることにより、サーバの運用上適切な閾値Ｒを入力する。あるいは、外部のシステムから、適切な閾値Ｒが動的に入力されてもよい。閾値取得部１３は、入力された閾値Ｒを受け取り、受け取った閾値Ｒを閾値データＤＲとして記憶装置２に格納する（ステップＳ１３）。
【００３５】
尚、ステップＳ１１〜Ｓ１３の順序は任意である。典型的には、まず性能値テーブルＤＡと閾値データＤＲが作成され、使用率テーブルＤＢはリアルタイムに更新される。
【００３６】
ステップＳ２０：
余力算出部２０は、各サーバＭｉの余力Ｃｉを算出する。算出された各サーバＭｉの余力Ｃｉは、ジョブの割り当て先を決定する際に参照される。従って、余力Ｃｉは、できるだけ正確に見積もられることが好ましい。
【００３７】
例えば、ＣＰＵ使用率が低いほど余力が大きいと考える手法がある。しかしながら、異機種混在環境の場合は、単純にＣＰＵ使用率が最も低いサーバにジョブを割り当てることで、当該ジョブの処理時間が短縮されるとは限らない。なぜなら、高性能なサーバは、ＣＰＵ使用率が相対的に高くても、割り当てられたジョブを他のサーバよりも早く処理できる可能性があるからである。従って、本実施例では、余力Ｃｉの算出のために、性能値Ａｉが考慮される。言い換えれば、余力Ｃｉは、性能値Ａｉをパラメータとして含む。
【００３８】
また、あるサーバの資源使用率Ｂｉが所定の閾値Ｒを超えると、そのサーバの実効的な処理性能が著しく劣化する。従って、本実施例では、余力Ｃｉの算出のために、閾値Ｒと資源使用率Ｂｉの差（Ｒ−Ｂｉ）も考慮される。言い換えれば、余力Ｃｉは、閾値Ｒと資源使用率Ｂｉの差（Ｒ−Ｂｉ）をパラメータとして含む。
【００３９】
本実施例によれば、余力算出部２０は、性能値Ａｉと差（Ｒ−Ｂｉ）に基づいて、各サーバＭｉの余力Ｃｉを算出する。そのために、余力算出部２０は、記憶装置２に格納された性能値テーブルＤＡ、使用率テーブルＤＢ及び閾値データＤＲを参照する。そして、余力算出部２０は、例えば次の式（１）に従って、各サーバＭｉの余力Ｃｉを算出する。
【００４０】
Ｃｉ＝Ａｉ×（Ｒ−Ｂｉ）      ・・・（１）
【００４１】
つまり、余力算出部２０は、閾値Ｒと資源使用率Ｂｉとの差に性能値Ａｉを乗ずることによって、余力Ｃｉを算出する。そして、余力算出部２０は、算出された余力Ｃｉを用いることにより余力テーブルＤＣを作成する。この余力テーブルＤＣは、サーバＭｉと算出された余力Ｃｉとの対応関係を示しており、記憶装置２に格納される。あるジョブの割り当て先を決定する際には、余力テーブルＤＣが参照されるとよい。
【００４２】
例として、２台のサーバＭ１、Ｍ２を含むサーバシステムを考える。本例において、サーバＭ１、Ｍ２の性能値Ａ１、Ａ２は、それぞれ３及び５である。また、サーバＭ１、Ｍ２の資源使用率Ｂ１、Ｂ２は、それぞれ０．２及び０．４である。性能値の観点から言えば、サーバＭ２の方がより高性能であり、割り当て先として好ましいと考えられる。一方、資源使用率の観点から言えば、サーバＭ１の方がより低負荷であり、割り当て先として好ましいと考えられる。このように、性能値あるいは資源使用率だけからでは、最適な割り当て先を客観的に定めることはできない。一方で、本実施例に係る余力Ｃｉは、性能値Ａｉと差（Ｒ−Ｂｉ）をパラメータとして有しており、割り当て先を決定する際の有用な指針となり得る。
【００４３】
閾値Ｒが０．６に設定される場合、上記式（１）によれば、サーバＭ１、Ｍ２の余力Ｃ１、Ｃ２は、それぞれ１．２及び１．０と算出される。この場合、サーバＭ１の方がより大きい余力を有している。ここで、あるジョブの割り当てを考える。性能値３．５のサーバが過去にそのジョブを処理した際、資源使用率が０．３（３０％）であったとする。よって、そのジョブの処理に最低限必要な余力は、性能値と資源使用率の積である１．０５（＝３．５×０．３）と見積もられる。要求される余力（１．０５）はサーバＭ１の余力（１．２）以下であるため、当該ジョブはサーバＭ１に割り当て可能と判断できる。一方、要求される余力（１．０５）はサーバＭ２の余力（１．０）を超えているため、当該ジョブはサーバＭ２に割り当て不可能と判断できる。もし、当該ジョブがサーバＭ２に割り当てられると、サーバＭ２の資源使用率Ｂ２は、０．２１（＝１．０５／５）だけ増加して、０．６１（＝０．４＋０．２１）となる。つまり、サーバＭ２の資源使用率Ｂ２は、閾値（０．６）を超過する。このことは、サーバＭ２の処理性能の著しい劣化を招く。逆に言えば、本実施例に係る余力Ｃｉを参照することにより、資源使用率が閾値を超えないように割り当て先を決定することができる。その結果、処理性能の劣化を未然に防ぐことが可能となる。
【００４４】
尚、余力Ｃｉは閾値Ｒの設定値に大きく依存する。例えば、閾値Ｒが０．７の場合、サーバＭ１、Ｍ２の余力Ｃ１、Ｃ２は共に同じ１．５と算出される。また、閾値Ｒが０．８の場合、サーバＭ１、Ｍ２の余力Ｃ１、Ｃ２は、それぞれ１．８及び２．０と算出される。この場合、閾値Ｒが０．６の場合と逆に、サーバＭ２の方がより大きい余力を有している。閾値Ｒはサーバの運用上適切な値に設定されるため、算出される余力Ｃｉもサーバ運用に即した値となる。すなわち、本実施例によれば、サーバ運用に即した適切な指針が提供されると言える。余力Ｃｉの算出のために閾値Ｒを考慮することは、この観点からも重要である。
【００４５】
以上に説明されたように、本実施例によれば、ジョブの割り当て先を決定する際に有用な情報（余力Ｃｉ）が提供される。その情報を参照することにより、新たに発生したジョブを処理可能な計算機を判別し、また、計算機の処理性能の劣化を未然に防ぐことが可能となる。
【００４６】
３．プランニングツール
本実施例に係る計算機余力算出装置１は、ジョブをいつどのサーバで処理させるかを計画するための「プランニングツール」として利用することができる。
【００４７】
３−１．第１の例
図４は、計算機余力算出装置１が適用されたプランニングツールの第１の例を示すブロック図である。既出の説明と重複する説明は適宜省略される。
【００４８】
図４に示されるように、プランニングツールは、記憶装置２、処理装置３、及び出力装置４を備えている。出力装置４は、算出された余力Ｃｉに関連する余力情報をユーザに対して出力（提示）するための装置である。例えば、出力装置４は、算出された余力Ｃｉに関連する余力情報を表示する表示装置である。また、処理装置３は、上述のデータ入力部１０及び余力算出部２０に加えて、出力部３０を有している。この出力部３０も、処理装置３のＣＰＵがプログラムＰＲＯＧを実行することにより実現される。
【００４９】
図５は、プランニングツールによる処理を示すフローチャートである。データ入力部１０は、上述の通り、各種データを受け取り、性能値テーブルＤＡ、使用率テーブルＤＢ及び閾値データＤＲを記憶装置２に格納する（ステップＳ１０）。この時、プランニングツールが稼働中のサーバシステムにネットワークを介して接続されていれば、データ入力部１０は、各サーバＭｉの資源使用率Ｂｉをサーバシステムからリアルタイムに受け取ることができる。次に、余力算出部２０は、性能値テーブルＤＡ、使用率テーブルＤＢ及び閾値データＤＲを参照して、余力Ｃｉを算出し、余力テーブルＤＣを作成する（ステップＳ２０）。次に、出力部３０は、記憶装置２から余力テーブルＤＣを読み出し、余力Ｃｉに関連する余力情報を出力装置４に出力する。第１の例では、出力部３０は、余力テーブルＤＣ全体の内容を出力装置４に出力する。出力装置４は、余力テーブルＤＣ全体の内容をユーザに提示する（ステップＳ３０）。
【００５０】
次に、具体的な処理例を説明する。図４に示されるように、サーバシステムは、３台のサーバＭ１、Ｍ２、Ｍ３を含んでいる。サーバＭ１、Ｍ２、Ｍ３には、それぞれＩＤ番号１〜３が付与されている。サーバＭ１、Ｍ２、Ｍ３のＣＰＵの性能値Ａ１、Ａ２、Ａ３は、それぞれ２．０、３．０、５．０である。サーバＭ１、Ｍ２、Ｍ３のある時点でのＣＰＵ使用率Ｂ１、Ｂ２、Ｂ３は、それぞれ０．２５（２５％）、０．４０（４０％）、０．６０（６０％）である。また、ＣＰＵ使用率の閾値Ｒは、０．８０（８０％）に設定される。この場合、性能値テーブルＤＡ、使用率テーブルＤＢ、閾値データＤＲ、及び余力テーブルＤＣは、図６に示されるようになる。サーバＭ１、Ｍ２、Ｍ３の余力Ｃ１、Ｃ２、Ｃ３は、それぞれ１．１、１．２、１．０と算出されている。
【００５１】
出力装置４、例えば表示装置は、この余力テーブルＤＣの内容を表示する。例えば、各サーバＭｉの名前やＩＤ番号、及び対応する余力Ｃｉが表示される。ユーザは、表示された情報を参照することにより、新たに発生したジョブを各サーバＭｉが実行可能か否かを判断することができる。例えば、過去に同種のジョブが発生しており、そのジョブの処理に最低限必要な余力が１．０５であったとする。この場合、サーバＭ１、Ｍ２は当該ジョブを処理することができるが、サーバＭ３は不可能であることがわかる。従って、例えば最大余力を有するサーバＭ２へのジョブの割り当てを計画することができる。
【００５２】
また、物理サーバ間で仮想サーバの移動（移行）を行う際に、余力Ｃｉが参照されてもよい。例えば、物理サーバＭ１、Ｍ２、Ｍ３以外の物理サーバが過負荷状態になったとする。その物理サーバ上で、余力１．１５を必要とする仮想サーバが動作していたとする。この場合、その仮想サーバを物理サーバＭ２へ移行可能であることがわかる。仮想サーバの移行により、過負荷状態が解消され得る。このように、余力Ｃｉを参照することにより、サーバ移行計画を作成することも可能である。
【００５３】
３−２．第２の例
図７は、計算機余力算出装置１が適用されたプランニングツールの第２の例を示すブロック図である。第１の例の説明と重複する説明は適宜省略される。第２の例では、処理装置３は、余力算出部２０の代わりに余力算出部２０’を有している。この余力算出部２０’は、余力算出部２０の機能に加えて、ソート機能を有している。すなわち、余力算出部２０’は、各サーバＭｉの余力Ｃｉを算出し、算出された余力Ｃｉに基づいて複数のサーバをソートする。結果として作成される余力テーブルＤＣでは、複数のエントリが、余力Ｃｉの大きさの順番に基づいてソートされている。例えば、複数のエントリは、余力Ｃｉの大きい順（降順）にソートされている。
【００５４】
次に、第１の例で説明されたものと同じ具体例を考える。図８は、第２の例において作成される余力テーブルＤＣを示している。上述の通り、サーバＭ１、Ｍ２、Ｍ３の余力Ｃ１、Ｃ２、Ｃ３は、それぞれ１．１、１．２、１．０と算出される。従って、ソートの結果、余力テーブルＤＣのエントリはサーバＭ２、Ｍ１、Ｍ３の順となる。出力装置４、例えば表示装置は、ソートされた余力テーブルＤＣを表示する。
【００５５】
以上に説明されたソート処理により、何らかの理由で最大余力を有するサーバＭ２にジョブを割り当てられなかった場合でも、次の割り当て先候補を素早く特定することが可能となる。
【００５６】
余力はある計算機資源（今回の例ではＣＰＵ）に関して算出される。一方で、サーバはＣＰＵ以外にもディスクやメモリ等の資源を保有しており、ジョブの処理は一般的に複数の計算機資源を必要とする。例えば、あるジョブの処理に対して、ＣＰＵの余力０．８の他にディスクの余力０．３が必要とされるとする。このとき、サーバＭ２がディスクの余力を０．３以上保持していれば、当該ジョブをサーバＭ２に割り当てることができる。しかしながら、サーバＭ２のディスクの余力が０．３未満の場合は、次の候補であるサーバＭ１を割り当て先として検討することが妥当である。
【００５７】
あるいは、ジョブが、物理サーバに割り当てられる仮想サーバ（バーチャルマシン）である場合を考える。仮想化を実現する仮想化ソフトウェアの制限から、ある物理サーバ上に割り当てられる仮想サーバの総数に上限がある場合が存在する。例えば、最大余力を有するサーバＭ２には上限数の仮想サーバが既に割り当てられていたとする。この場合、サーバＭ２は十分な余力を有するものの、新たな仮想サーバをサーバＭ２に割り当てることはできない。従って、次の候補であるサーバＭ１を割り当て先として検討することが妥当である。
【００５８】
３−３．第３の例
図９は、計算機余力算出装置１が適用されたプランニングツールの第３の例を示すブロック図である。第１、第２の例の説明と重複する説明は適宜省略される。第３の例では、処理装置３は、出力部３０の代わりに出力部３０’を有している。出力部３０’は、記憶装置２から余力テーブルＤＣを読み出し、余力テーブルＤＣから余力Ｃｉが最大であるサーバを抽出する。そして、出力部３０’は、最大余力を有するサーバに関するエントリの内容だけを選択的に出力装置４に出力する。
【００５９】
出力装置４は、最大余力を有するサーバの名前やＩＤ番号及びその最大余力を選択的にユーザに提示する。上記具体例の場合、表示装置は、サーバＭ２と最大余力１．２だけを選択的に表示する。新たに発生したジョブの処理に最低限必要な余力が、最大余力１．２より大きな値（例えば１．３）である場合を考える。この場合、それら２つの数値を比較することにより、当該ジョブを処理可能なサーバが存在しないことが即座に判明する。
【００６０】
このように、第３の例によれば、最大余力を有するサーバとその最大余力だけがユーザに提示される。その結果、ジョブの割り当て先として最適なサーバを素早く把握することが可能となる。あるいは、当該ジョブを処理可能なサーバが存在しないことを即座に認識することが可能となる。
【００６１】
４．負荷分散装置
本実施例に係る計算機余力算出装置１は、各サーバの負荷を分散させるための「負荷分散装置」として利用することもできる。負荷分散装置は、サーバシステムに適用され、リクエストやバーチャルマシン等のジョブを負荷の低いサーバにリアルタイムに割り当てる。
【００６２】
図１０は、計算機余力算出装置１が適用された負荷分散装置の一例を示すブロック図である。既出の説明と重複する説明は適宜省略される。図１０に示されるように、負荷分散装置は、サーバシステムにネットワークを介して接続されている。負荷分散装置の処理装置３は、上述のデータ入力部１０及び余力算出部２０に加えて、ジョブ割当部４０を有している。このジョブ割当部４０も、処理装置３のＣＰＵがプログラムＰＲＯＧを実行することにより実現される。
【００６３】
図１１は、負荷分散装置による処理を示すフローチャートである。データ入力部１０は、上述の通り、各種データを受け取り、性能値テーブルＤＡ、使用率テーブルＤＢ及び閾値データＤＲを記憶装置２に格納する（ステップＳ１０）。この時、データ入力部１０は、各サーバＭｉの資源使用率Ｂｉをサーバシステムからリアルタイムに受け取る。次に、余力算出部２０は、性能値テーブルＤＡ、使用率テーブルＤＢ及び閾値データＤＲを参照して、余力Ｃｉを算出し、余力テーブルＤＣを作成する（ステップＳ２０）。
【００６４】
負荷分散装置は、新たなジョブの処理要求の発生をモニタする（ステップＳ４１）。新たなジョブの処理要求が発生していない場合（ステップＳ４１；Ｎｏ）、処理はステップＳ１０に戻る。具体的には、データ入力部１０は、サーバシステムからリアルタイムに受け取る資源使用率Ｂｉに基づき、使用率テーブルＤＢを更新する。また、余力算出部２０は、余力テーブルＤＣを更新する。
【００６５】
負荷分散装置が新たなジョブを受け付けると（ステップＳ４１；Ｙｅｓ）、ジョブ割当部４０は、記憶装置２に格納された余力テーブルＤＣを参照して、当該ジョブの割り当て先を決定する（ステップＳ４２）。例えば、ジョブ割当部４０は、サーバシステムのうち、算出された余力Ｃｉが最も大きいサーバを当該ジョブの割り当て先として選択する。そして、ジョブ割当部４０は、選択されたサーバに当該ジョブを割り当てる（ステップＳ４３）。上記具体例の場合、ジョブ割当部４０は、サーバＭ２に当該ジョブを割り当てる。サーバＭ２は、割り当てられたジョブ（リクエストや仮想サーバ）を実行する。
【００６６】
このように、負荷分散装置によって、新たに発生したジョブは、十分な余力を有する適切なサーバに割り当てられる。その結果、各サーバの負荷が分散される。尚、サーバシステムを構成する複数のサーバのうち代表的な１つが、負荷分散装置の役割を担ってもよい。
【００６７】
本実施に係る計算機余力算出装置１は、以上に説明された例の他にも様々なシステムやケースに適用可能である。
【図面の簡単な説明】
【００６８】
【図１】図１は、サーバシステムの構成を示す概略図である。
【図２】図２は、本発明の実施例に係る計算機余力算出装置の構成を示すブロック図である。
【図３】図３は、本発明の実施例に係る計算機余力算出装置による処理を示すフローチャートである。
【図４】図４は、本発明の実施例に係るプランニングツールの第１の例を示すブロック図である。
【図５】図５は、プランニングツールによる処理を示すフローチャートである。
【図６】図６は、性能値テーブル、使用率テーブル、閾値データ及び余力テーブルの一例を示す概念図である。
【図７】図７は、本発明の実施例に係るプランニングツールの第２の例を示すブロック図である。
【図８】図８は、余力テーブルの一例を示す概念図である。
【図９】図９は、本発明の実施例に係るプランニングツールの第３の例を示すブロック図である。
【図１０】図１０は、本発明の実施例に係る負荷分散装置の一例を示すブロック図である。
【図１１】図１１は、負荷分散装置による処理を示すフローチャートである。
【符号の説明】
【００６９】
１    計算機余力算出装置
２    記憶装置
３    処理装置
４    出力装置
１０    データ入力部
１１    性能値取得部
１２    使用率取得部
１３    閾値取得部
２０、２０’    余力算出部
３０、３０’    出力部
４０    ジョブ割当部
ＤＡ    性能値テーブル
ＤＢ    使用率テーブル
ＤＲ    閾値データ
ＤＣ    余力テーブル
ＰＲＯＧ  プログラム
Ａｉ    性能値
Ｂｉ    資源使用率
Ｒ      閾値
Ｃｉ    余力
【図１】
2009087213.tif 000003
【図２】
2009087213.tif 000004
【図３】
2009087213.tif 000005
【図４】
2009087213.tif 000006
【図５】
2009087213.tif 000007
【図６】
2009087213.tif 000008
【図７】
2009087213.tif 000009
【図８】
2009087213.tif 000010
【図９】
2009087213.tif 000011
【図１０】
2009087213.tif 000012
【図１１】
2009087213.tif 000013