(57)【特許請求の範囲】
【請求項１】
サービスプロバイダから省エネサービスを提供するための実行プログラムを受け取り、
複数のサーバのうち、いずれかのサーバを選択して、選択したサーバに前記実行プログラ
ムを提供する装置であって、
前記サービスプロバイダから前記実行プログラムを受信する受信部と、
省エネサービスに係わる外部情報を取得する取得部と、
前記実行プログラムを実行するためにサーバの計算機資源が消費する資源消費量を見積
もる見積り部と、
前記見積り部が、前記外部情報を考慮して見積もった第１資源消費量に基づいて、前記
実行プログラムを提供するサーバを選択する選択部と、を備え、
前記受信部は、前記実行プログラムをサーバが実行する時刻として、あらかじめ定めら
れた実行時刻と、前記実行時刻を変更可能な期間である許容予測時間とを含むメタ情報を
受信し、実行プログラムを実行する時刻を決定する実行タイミング調整部と、
時刻と当該時刻に実行する実行プログラムとの対応関係を記憶する実行タイムスロット
記憶部と、
前記実行タイミング調整部は、受信したメタ情報の実行時刻と対応付けて記憶された実
行プログラムの資源消費量が閾値以上である場合に、前記メタ情報とともに受信した実行
プログラムを、前記実行時刻以前の時刻であって、前記許容予測時間以内の時刻に実行す
ると決定し、
前記実行タイミング調整部が、前記実行プログラムを、前記実行時刻より前記許容予測
時間以内前の時刻に実行すると決定した場合、前記取得部は、前記実行時刻時の外部情報
の予測値である予測外部情報を取得し、
前記選択部は、前記見積り部が、前記予測外部情報を考慮して見積もった前記第１資源
消費量に基づいて、前記実行プログラムを提供するサーバを選択する負荷分散装置。
【請求項２】
前記選択部が選択したサーバに対して、前記実行プログラムを提供する配送部を更に備
える請求項１記載の負荷分散装置。
【請求項３】
前記受信部は、前記実行プログラムとともに、前記実行プログラムを実行するための資
源消費量である第２資源消費量と、前記外部情報が所定の条件を満たした場合に、前記第
２資源消費量が変動する変動量とを含むメタ情報とを受信し、
前記見積り部は、前記外部情報が前記所定の条件を満たしている場合に、前記第２資源
消費量と前記変動量との和を前記第１資源消費量として見積もる請求項1記載の負荷分散
装置。
【請求項４】
前記複数のサーバの計算機資源が消費中の資源消費量である資源消費状況を取得する第
2取得部と、
前記複数のサーバの計算機資源の仕様を記憶する仕様記憶部とを更に備え、
前記選択部は、前記第1資源消費量と前記資源消費状況と前記仕様とに基づいて、前記
実行プログラムを実行するサーバを選択する請求項１記載の負荷分散装置。
【請求項５】
前記予測外部情報と前記外部情報とが異なっていた場合、前記見積り部は、前記実行プ
ログラムを実行するためにサーバの計算機資源が消費する資源消費量を、前記外部情報を
考慮して見積もり、
前記選択部は、前記見積り部が、前記外部情報を考慮して見積もった資源消費量である
前記第1資源消費量に基づいて、前記実行プログラムを提供するサーバを選択し、
前記配送部は、前記選択部が選択したサーバに対して、前記実行プログラムを再度提供
する請求項２記載の負荷分散装置。
【請求項６】
前記計算機資源は、CPU、主記憶装置、補助記憶装置、又はネットワーク帯域のうち、
少なくともいずれか一つを含み、
前記資源消費量は、ＣＰＵの占有時間、ＣＰＵサイクル数、主記憶装置の消費量、補助
記憶装置の消費量、又はネットワーク通信量のうち、少なくともいずれか一つを含む請求
項１記載の負荷分散装置。
【請求項７】
前記省エネサービスは、空調機器の設定値を演算するサービスであり、
前記外部情報は前記空調機器周辺地域の気象情報であり、前記空調機器の設定値を演算
するプログラムが前記実行プログラムであり、
前記所定の条件は、第1時刻の気象情報と、前記第1時刻以前の時刻である第２時刻の気
象情報が所定の関係を満たすか否かである請求項３記載の負荷分散装置。
【請求項８】
時刻と前記時刻に実行する実行プログラムとの対応関係を記憶する実行タイムスロット
記憶部と、
前記複数のサーバの計算機資源の仕様を記憶する仕様記憶部と、
前記実行タイムスロット記憶部に記憶された現在時刻の実行プログラムの資源消費量と
、稼働中のサーバの計算機資源の仕様とに基づき、稼働中のサーバのいずれか一つのサー
バを停止させるサーバ制御部とを更に備える請求項１記載の負荷分散装置。
【請求項９】
サービスプロバイダから省エネサービスを提供するための実行プログラムを受け取り、
複数のサーバのうち、いずれかのサーバを選択して、選択したサーバに前記実行プログラ
ムを提供する方法であって、
前記サービスプロバイダから前記実行プログラムを受信する受信ステップと、
省エネサービスに係わる外部情報を取得する取得ステップと、
前記実行プログラムを実行するためにサーバの計算機資源が消費する資源消費量を見積
もる見積りステップと、
前記見積りステップが、前記外部情報を考慮して見積もった第１資源消費量に基づいて
、前記実行プログラムを提供するサーバを選択する選択ステップと、を備え、
前記受信ステップは、前記実行プログラムをサーバが実行する時刻として、あらかじ
め定められた実行時刻と、前記実行時刻を変更可能な期間である許容予測時間とを含むメ
タ情報を受信し、実行プログラムを実行する時刻を決定する実行タイミング調整ステップ
と、
時刻と当該時刻に実行する実行プログラムとの対応関係を記憶する実行タイムスロット
記憶ステップと、
前記実行タイミング調整ステップは、受信したメタ情報の実行時刻と対応付けて記憶さ
れた実行プログラムの資源消費量が閾値以上である場合に、前記メタ情報とともに受信し
た実行プログラムを、前記実行時刻以前の時刻であって、前記許容予測時間以内の時刻に
実行すると決定し、
前記実行タイミング調整ステップが、前記実行プログラムを、前記実行時刻より前記許
容予測時間以内前の時刻に実行すると決定した場合、前記取得ステップは、前記実行時刻
時の外部情報の予測値である予測外部情報を取得し、
前記選択ステップは、前記見積りステップが、前記予測外部情報を考慮して見積もった
前記第１資源消費量に基づいて、前記実行プログラムを提供するサーバを選択する負荷分
散方法。
【請求項１０】
サービスプロバイダから省エネサービスを提供するための実行プログラムを受け取り、
複数のサーバのうち、いずれかのサーバを選択して、選択したサーバに前記実行プログラ
ムを提供することをコンピュータに実行させるためのプログラムであって、
前記サービスプロバイダから前記実行プログラムを受信する受信機能と、
省エネサービスに係わる外部情報を取得する取得機能と、
前記実行プログラムを実行するためにサーバの計算機資源が消費する資源消費量を見積
もる見積り機能と、
前記見積り機能が、前記外部情報を考慮して見積もった第１資源消費量に基づいて、前
記実行プログラムを提供するサーバを選択する選択機能と、を備え、
前記受信機能は、前記実行プログラムをサーバが実行する時刻として、あらかじめ定
められた実行時刻と、前記実行時刻を変更可能な期間である許容予測時間とを含むメタ情
報を受信し、実行プログラムを実行する時刻を決定する実行タイミング調整機能と、
時刻と当該時刻に実行する実行プログラムとの対応関係を記憶する実行タイムスロット
記憶機能と、
前記実行タイミング調整機能は、受信したメタ情報の実行時刻と対応付けて記憶された
実行プログラムの資源消費量が閾値以上である場合に、前記メタ情報とともに受信した実
行プログラムを、前記実行時刻以前の時刻であって、前記許容予測時間以内の時刻に実行
すると決定し、
前記実行タイミング調整機能が、前記実行プログラムを、前記実行時刻より前記許容予
測時間以内前の時刻に実行すると決定した場合、前記取得機能は、前記実行時刻時の外部
情報の予測値である予測外部情報を取得し、
前記選択機能は、前記見積り機能が、前記予測外部情報を考慮して見積もった前記第１
資源消費量に基づいて、前記実行プログラムを提供するサーバを選択する負荷分散プログ
ラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、負荷分散装置、負荷分散方法及び負荷分散プログラムに関する。
【背景技術】
【０００２】
近年、ネットワークを介して、複数の建物に対して省エネルギー(省エネ)サービスを提供するシステムが登場している。省エネサービスは、主に中小規模ビルを対象として稼働している。以下の説明では、省エネサービスを提供するシステムのことを、「省エネサービス提供システム」と表記して説明する。省エネサービス提供システムは、複数のサーバにより構成される。
【０００３】
省エネサービスの種類や、省エネサービスを利用する建物が増えると、省エネサービス提供システムのサーバが、省エネサービスを実行するために必要とする計算機資源の量も増えることとなる。ここで、「計算機資源」とは、省エネサービス提供システムのサーバのCPU、メモリ、ディスク、または、ネットワーク帯域などのことを意味する。省エネサービス提供システムの運用者にとって、ハードウェア費、メンテナンス費及び電気代の削減のために、サーバの計算機資源を削減することは重要である。
【０００４】
計算機資源を削減するためには、計算機資源の消費量(以下、資源消費量と称する。)の時間的な平滑化を図ることが重要である。計算機資源は、消費量のピークに合わせて用意する必要がある。そのため、消費量のピーク時以外には、利用されない計算機資源が生じてしまう。したがって、資源消費量を平滑化し、消費量のピークを下げられれば、省エネサービス提供システムとして用意すべき計算機資源を削減できる。
【０００５】
従来、資源消費量の平滑化に関する技術は、例えば、負荷分散装置で、各サーバの負荷状態を収集し、高負荷なサーバから低負荷なサーバへ、省エネサービスの実行プログラムを移動させることで、負荷の平滑化を実現していた。ここで、従来における「負荷状態」とは、資源消費量と同義である。そのため、従来の負荷分散装置は、サーバの負荷状態という、省エネサービス提供システム内部にて得られる情報に基づいて、負荷の平滑化を行っていた。
【０００６】
しかしながら、従来の負荷分散装置では、省エネサービス提供システム外部の情報であって省エネサービスに関係する情報を考慮して、資源消費量の平滑化を実行した装置は存在しなかった。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平２００５−００４６７６号公報
【非特許文献】
【０００８】
【非特許文献１】片野聡ら、不均質環境におけるタスクネットワークの静的スケジューリング手法、情報処理学会研究報告、Vol.2007-HPC(2007)
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明の一観点にかかる負荷分散装置は、サービスプロバイダから省エネサービスを提供するための実行プログラムを受け取り、複数のサーバのうち、いずれかのサーバを選択して、選択したサーバに前記実行プログラムを提供する装置であって、前記サービスプロバイダから前記実行プログラムを受信する受信部と、省エネサービスに係わる外部情報を取得する取得部と、前記実行プログラムを実行するためにサーバの計算機資源が消費する資源消費量を見積もる見積り部と、前記見積り部が、前記外部情報を考慮して見積もった第１資源消費量に基づいて、前記実行プログラムを提供するサーバを選択する選択部と、を備え、前記受信部は、前記実行プログラムをサーバが実行する時刻として、あらかじめ定められた実行時刻と、前記実行時刻を変更可能な期間である許容予測時間とを含むメタ情報を受信し、実行プログラムを実行する時刻を決定する実行タイミング調整部と、時刻と当該時刻に実行する実行プログラムとの対応関係を記憶する実行タイムスロット記憶部と、前記実行タイミング調整部は、受信したメタ情報の実行時刻と対応付けて記憶された実行プログラムの資源消費量が閾値以上である場合に、前記メタ情報とともに受信した実行プログラムを、前記実行時刻以前の時刻であって、前記許容予測時間以内の時刻に実行すると決定し、前記実行タイミング調整部が、前記実行プログラムを、前記実行時刻より前記許容予測時間以内前の時刻に実行すると決定した場合、前記取得部は、前記実行時刻時の外部情報の予測値である予測外部情報を取得し、前記選択部は、前記見積り部が、前記予測外部情報を考慮して見積もった前記第１資源消費量に基づいて、前記実行プログラムを提供するサーバを選択する。
【課題を解決するための手段】
【００１０】
本発明の一観点にかかる負荷分散装置は、サービスプロバイダから省エネサービスを提供するための実行プログラムを受け取り、複数のサーバのうち、いずれかのサーバを選択して、選択したサーバに前記実行プログラムを提供する装置であって、前記サービスプロバイダから前記実行プログラムを受信する受信部と、省エネサービスに係わる外部情報を取得する取得部と、前記実行プログラムを実行するためにサーバの計算機資源が消費する資源消費量を、前記外部情報を考慮して見積もる見積り部と、前記見積り部が、前記外部情報を考慮して見積もった資源消費量である第1資源消費量に基づいて、前記実行プログラムを提供するサーバを選択する選択部とを備える。
【図面の簡単な説明】
【００１１】
【図１】第1の実施形態に係るシステムを示す図。
【図２】メタ情報記憶部103に格納するジョブ情報を示す表。
【図３】メタ情報記憶部103に格納する実行条件を示す表。
【図４】メタ情報記憶部103に格納する外部情報判定式を示す表。
【図５】メタ情報記憶部103に格納する資源消費量変動情報を示す表。
【図６】実行タイムスロット記憶部105に格納する実行タイムスロットを示す表。
【図７】ジョブ実行サーバ状態記憶部112が記憶する情報を示す表。
【図８】ジョブ実行サーバ仕様記憶部113が記憶する情報を示す表。
【図９】負荷分散装置10のジョブ受信処理を示すフローチャート。
【図１０】負荷分散装置10の実行タイムスロット管理を示すフローチャート。
【図１１】負荷分散装置10のジョブ実行処理を示すフローチャート。
【図１２】第2の実施形態に係る負荷分散装置210を示す図。
【図１３】第2の実施形態に係るメタ情報記憶部2103に格納する実行条件を示す表。
【図１４】第2の実施形態に係るメタ情報記憶部2103に格納する外部情報判定式を示す表。
【図１５】負荷分散装置210のジョブ受信処理を示すフローチャート。
【図１６】負荷分散装置210のジョブ実行処理を示すフローチャート。
【図１７】第3の実施形態に係る負荷分散装置310の構成を示す図。
【図１８】第3の実施形態におけるジョブ実行サーバ状態記憶部3112が記憶する情報を示す表。
【図１９】第3の実施形態に係るジョブ実行サーバ仕様記憶部3113が記憶する情報を示す表。
【図２０】負荷分散装置310が、サーバを停止および起動させる動作を示すフローチャート。
【発明を実施するための形態】
【００１２】
以下、本発明の実施の形態について、図面を参照しながら説明する。尚、各図において同一箇所については同一の符号を付すとともに、重複した説明は省略する。
【００１３】
＜第１の実施形態＞
図１は、第1の実施形態に係るシステムを示す図である。
【００１４】
第１の実施形態にかかるシステムは、複数の省エネサービスプロバイダ20と、複数のジョブ実行サーバ30と、負荷分散装置10と、複数の外部情報提供装置40とビル80とを備える。省エネサービスプロバイダ20と負荷分散装置10とは、ネットワーク50によって接続されている。負荷分散装置10とジョブ実行サーバ30とは、ネットワーク60によって接続されている。負荷分散装置10と外部情報提供装置40とは、ネットワーク70によって接続されている。ジョブ実行サーバ30とビル80とはネットワーク90によって接続されている。本実施形態では、複数の省エネサービスプロバイダ20と、複数のジョブ実行サーバ30と、負荷分散装置10とを含むシステムを省エネサービス提供システムと称するものとする。
【００１５】
省エネサービスプロバイダ20（以下では、単にプロバイダ20と称する。）は、省エネサービスの実行プログラム（以下、ジョブと称する。）を、ネットワーク50を介して、負荷分散装置10に提供する。
【００１６】
外部情報提供装置40は、ネットワーク70を介して、外部情報を負荷分散装置10に対して提供する。ここで、外部情報とは、省エネサービスに関わる情報であって、省エネサービス提供システム外部の情報である。
【００１７】
負荷分散装置10は、プロバイダから与えられたジョブを、ジョブ実行サーバ30に提供する。この際、負荷分散装置10は、外部情報を考慮して、どのジョブ実行サーバにジョブを提供するかを選択して、選択したジョブ実行サーバ30に提供する。
【００１８】
ジョブ実行サーバ30は、負荷分散装置10から受け取ったジョブを実行する。そして、ジョブの実行結果である省エネサービスを、ネットワーク90を介してビル80に対して提供する。
【００１９】
ここで、省エネサービスは、例えば、快適空調制御サービスや快適照明制御サービスがある。
【００２０】
快適空調制御サービスとは、温度や湿度を考慮して、ビル80内の空調機器の設定値を制御するサービスであり、人にとって快適で、かつ、省エネ可能な空調機器の制御を実現する。快適照明制御サービスとは、日射量を考慮して、ビル80内の照明の照度やON/OFFを制御するサービスであり、人にとっても快適で、かつ、省エネ可能な照明制御を実現する。
【００２１】
快適空調制御サービスや快適照明制御サービスなどの省エネサービスにおいては、省エネサービスのプログラム（ジョブ）を実行するジョブ実行サーバ30の資源消費量が、外部情報（気象情報、電気料金、レンタルサーバの課金料など）によって、変動する。
【００２２】
以下では、外部情報によって、資源消費量が変動する具体例をいくつか説明する。
【００２３】
例えば、快適空調制御サービスにおいては、ジョブ実行サーバ30は、定期的な演算を行い、前回演算時から温度や湿度が変化していなければ、再演算を省略できる。つまり、資源消費量が減る。この場合の外部情報は、気象情報（温度や湿度）である。なお、この気象情報は、制御対象の空調機器周辺地域の気象情報である。
【００２４】
また、快適空調制御サービスや快適照明制御サービスにおいては、電気料金が高い場合には、省エネ効果を向上させるため、省エネサービスの演算頻度を増やすという運用を行う場合がある。この場合、資源消費量は増える。つまり、上記サービスにおいては、電気料金に資源消費量が比例する。この場合の外部情報は、電気料金である。
【００２５】
また、省エネサービス提供システムにおいて、レンタルサーバを利用してジョブ実行サーバ30を運用している場合は、レンタルしているサーバの台数に比例して課金料が増える。したがって、レンタルサーバの課金料が高い場合には、少ないサーバ台数で運用し、低コストで運用するために、ジョブの演算頻度を減らし、資源消費量を減らす。つまり、レンタルサーバの課金料が高い場合には、資源消費量が減る。この場合の外部情報は、レンタルサーバの課金量である。
【００２６】
以上説明したように、省エネサービスは、外部情報によって、ジョブ実行サーバ30の資源消費量が変動する。したがって、外部情報を考慮して資源消費量を算出して、当該算出した資源消費量をもとに、ジョブ実行プログラムを実行させるジョブ実行サーバ30を決めることで、各ジョブ実行サーバ30の資源消費量の平滑化や省エネサービス提供システム全体としての資源消費量の平滑化の向上を図ることができる。
【００２７】
特に、気象情報は地域によって変動のタイミングが異なり、複数の地域の建物に対する省エネサービスは各々で、資源消費量の変動のタイミングが異なる。したがって、外部情報を考慮することによる資源消費量の平滑化はより有効となる。
【００２８】
次に、図１を用いて、負荷分散装置10の構成を説明する。
【００２９】
ジョブ受信部101は、プロバイダ20からジョブとメタ情報を受け取る。ここで、メタ情報は、「実行条件」と、「外部情報判定式」と、「資源消費量変動情報」との3つの情報を含む情報である。この３つの情報の詳細は後述する。
【００３０】
ジョブ記憶部102は、ジョブ受信部101が受信したジョブと、ジョブを識別可能なジョブ番号とを対応付けて記憶する。
【００３１】
メタ情報記憶部103は、ジョブ情報とメタ情報とをメタ情報記憶部103に記憶する。
【００３２】
図２に、ジョブ情報を示す。図２の各項目を説明する。
【００３３】
「ジョブ番号」は、ジョブを一意に識別する番号である。
【００３４】
「種類」は、ジョブのプログラムの種類を示す。プログラムの種類は、例えば、C言語で書かれたプログラムをコンパイルすると生成される実行バイナリや、Java(R)言語で書かれたプログラムをコンパイルすると生成されるJava(R)バイトコードや、コンパイル無しで実行可能なインタプリタ言語(Bash、Ruby、Perl、PHPなど)で書かれたスクリプトなどがある。
【００３５】
「パス」は、ジョブ記憶部102の中で、ジョブの保存先を示す情報である。ジョブ記憶部102が、ファイルシステムである場合、パスは、ファイルシステムにおけるジョブの記憶場所を指定する文字列となる。また、ジョブ記憶部102がメモリシステムである場合、パスは、メモリにおけるジョブが記憶されている番地(アドレス)となる。
【００３６】
「データ」は、ジョブのプログラムが利用するデータファイルや設定ファイルなどである。
【００３７】
次に、メタ情報について、「実行条件」、「外部情報判定式」、「資源消費量変動情報」の順に説明する。
【００３８】
まず、実行条件について説明する。
【００３９】
図３は、メタ情報記憶部103に格納する実行条件を示す表である。実行条件とは、ジョブの実行に関する情報である。実行条件の具体的項目を、図３を用いて説明する。
【００４０】
「ジョブ番号」は、ジョブを一意に識別するジョブ番号である。図２の「ジョブ番号」と同一の番号を割り振る。
【００４１】
「実行時刻」は、あらかじめ定められたジョブを実行する時刻である。ジョブは、ある特定の時刻に実行するものと、所定の期間の間に実行すればよいものとがある。図３のジョブ番号1及び2の実行時刻は、ある特定の実行時刻に実行するものを示し、ジョブ番号3の実行時刻は、ジョブ所定の期間の間に実行するものを示す。
【００４２】
「繰り返し実行」は、ジョブを繰り返して実行するか否かを示す情報である。図３で、trueは、繰り返して実行することを示し、falseは、繰り返して実行しないことを示す。尚、図３では、true/falseと表現したが、1/0など別の表現を用いてもよい。
【００４３】
「繰り返し間隔」は、ジョブを繰り返して実行する場合の、ジョブの実行間隔である。
【００４４】
「CPU占有時間」は、ジョブを実行した場合に、CPUを占有する時間である。尚、この項目は、「CPU占有時間」の代わりに、そのジョブの実行に必要な「CPUサイクル数」としてもよい。
【００４５】
「メモリ消費量」は、ジョブを実行した場合に必要となるメモリの量である。
【００４６】
「ネットワーク通信量」は、ジョブを実行した場合に、送受信するデータ量である。図３では、ネットワーク通信量について、送信データ量と受信データ量とを別々に示してある（図３では、送信データ量/受信データ量  と示している。）。
【００４７】
「ディスク消費量」は、ジョブを実行した場合に、消費するディスク量である。ジョブを実行する場合、ジョブの実行状態のログや、ジョブの演算の結果を、ディスクに保存する場合もある。ディスクに保存する量を記憶する。
【００４８】
ここで、実行条件のうち、CPU占有時間とメモリ消費量とネットワーク通信量とディスク消費量とを含む情報を、「資源消費量」と定義する。「資源消費量」は、ジョブを実行した場合に、ジョブを実行したサーバの計算機資源を消費する量である。計算機資源とは、CPU、メモリ、ディスク、又はネットワーク帯域を含む情報である。ここで、メモリとは、ＣＰＵから直接読み書きできる主記憶装置であり、ディスクは、直接読み書きできない補助記憶装置である。資源消費量は、CPU占有時間とメモリ消費量とネットワーク通信量とディスク消費量とのうち、すべてを含む情報であってもよいし、いずれか一つ若しくは複数の情報を含む情報であってもよい。
【００４９】
図３の１行目の実行条件は、ジョブ番号が１であること、2011年1月1日の0時0分0秒から10分間隔で実行すること、CPU占有時間は10秒であること、メモリ消費量は10MBであること、データの送信量は40KBであり、データの受信量は80KBであること、ディスク消費量は100KBであることを示している。
【００５０】
次に、メタ情報のうち、２つ目の情報である外部情報判定式について説明する。
【００５１】
図４は、メタ情報記憶部103に格納する外部情報判定式を示す表である。外部情報判定式は、資源消費量が変動する基準を定義するものである。図４を用いて、外部情報判定式の具体的項目を説明する。
【００５２】
「式番号」は、外部情報判定式を一意に識別する番号である。
【００５３】
「外部情報ID」は、外部情報を取得する際に必要となる識別子である。気象情報などの外部情報は、ウェブサービスとしてインターネットに一般公開されることも多い。また、ウェブサービスでは、様々な情報のIDをURI (Uniform Resource Identifier)形式で表現する。したがって、図４では、外部情報IDをURI形式で表記した。ここで、どの外部情報を利用するかは、ジョブに依存して決まる。例えば、ジョブが空調機器を制御して快適空調制御サービスを実行するための実行プログラムである場合、外部情報は、サービス提供先の空調機器周辺の地域の気象情報である。
【００５４】
「取得方法」は、外部情報を取得する方法である。取得方法は、外部情報提供装置40に合わせた取得方法となる。取得方法は、例えば、HTTP(Hyper Text Transfer Protocol)、SQL、SOAPである。
【００５５】
「演算子」は、式が成立する条件を定義する。比較値と合わせて利用する。
【００５６】
「比較値」は、式が成立する条件を定義する。演算子と合わせて利用する。
【００５７】
「備考」は、外部情報の取得に必要となる追加情報である。追加情報は、例えば、HTTPプロキシの情報、ユーザ名とパスワードの情報、ウェブサービスであればEnd Point Reference（EPR）の情報などである。
【００５８】
図４において、式1は、http://weather.sample/tokyo/temperature5で一意に識別される外部情報の値が、10分前の外部情報の値と等しければ、式が成立することを意味する。式2は、http://weather.sample/tokyo/sunshine1で一意に識別される外部情報の値が、10分前の外部情報の値と異なれば、式が成立することを意味する。式3は、http://energy.sample/energy-priceで一意に識別される外部情報の値が、1kWhあたり20円よりも大きい場合に、式が成立することを意味する。演算子としては、他にも「以上(＞＝)」や「以下(＜＝)」、「未満(＜)」などを指定できる。
【００５９】
次に、メタ情報のうち、３つ目の情報である資源消費量変動情報について説明する。
【００６０】
図５は、メタ情報記憶部103に格納する資源消費量変動情報を示す表である。資源消費量変動情報は、外部情報判定式が成立した場合における、ジョブの資源消費量の変動量を表す。図５を用いて、資源消費量変動情報の各項目を具体的に説明する。
【００６１】
「ジョブ番号」は、ジョブを一意に識別する番号である。図3及び図4のジョブ番号と同一の番号をふる。
【００６２】
「成立条件」は、資源消費量の変動が生じるために成立するべき外部情報判定式の式番号である。ANDやORなどを利用して、複数の成立条件を組み合わせて指定することもできる。
【００６３】
「CPU占有時間の変動量」は、成立条件を満たした場合における、ジョブのCPU占有時間の変動量である。
【００６４】
「メモリ消費量の変動量」は、成立条件を満たした場合における、ジョブのメモリ消費量の変動量である。
【００６５】
「ネットワーク通信量の変動量」は、成立条件を満たした場合における、ジョブのネットワーク通信量の変動量である。
【００６６】
「ディスク消費量の変動量」は、成立条件を満たした場合における、ジョブのディスク消費量の変動量である。
【００６７】
資源消費量は増える場合と減る場合があるため、図５ではプラス(＋)とマイナス(−)で表現している。
【００６８】
例えば、図５の表の２行目の情報は、式1が成立した場合に、ジョブ1の各資源消費量が変動することを意味する。また、表の3行目は、式2と式3の両方が成立した場合に、ジョブ2の各資源消費量が変動することを意味する。
【００６９】
実行タイミング調整部104は、ジョブ受信部101によって受信したジョブの、実行タイミングを決定する。決定したジョブの実行タイミングは、実行タイムスロット記憶部105に記憶する。
【００７０】
実行タイムスロット記憶部105は、実行タイムスロット（いつ、どのジョブを実行するか）を記憶する。
【００７１】
図６は、実行タイムスロット記憶部105に格納する実行タイムスロットを示す表である。
【００７２】
図６の表の各行が、1つの実行タイムスロットを表す。図６を用いて、実行タイムスロットの各項目を説明する。
【００７３】
「時刻」は、実行タイムスロットの時刻である。ここで、タイムスロット間の時刻の差は一定である。本実施形態では1分間隔とする。
【００７４】
「実行ジョブ番号」は、実行タイムスロットにおいて実行するジョブのジョブ番号である。ジョブ番号は、一つの実行タイムスロットに対して、複数指定もできる。
【００７５】
例えば、図６において、実行タイムスロットは、2011年1月1日の0時0分0秒から0時1分0秒までの間に、ジョブ番号1のジョブを実行することを表している。
【００７６】
実行タイムスロット管理部106は、定期的に実行タイムスロット記憶部105を参照し、古くなった実行タイムスロットを削除し、新しく未来の実行タイムスロットを追加する。実行タイムスロット記憶部105において用意できる実行タイムスロットの数は有限であるためである。
【００７７】
資源消費量見積り部107は、ジョブ受信部101で受信したジョブについて、資源消費量を見積もる。資源消費量見積り部107は、資源消費量を見積もる際に、メタ情報を参照して、外部情報提供装置40から外部情報を受け取る。そして、外部情報とメタ情報を参照して、ジョブの資源消費量を見積る。資源消消費量見積り部107の詳細な処理については、後述する。
【００７８】
外部情報取得部108は、外部情報提供装置40から外部情報を取得して、資源消費量見積り部107に渡す。外部情報提供装置40の例として、気象庁(http://www.jma.go.jp/jma/index.html)やウェザーサービス(http://www.otenki.co.jp)などが一般公開しているウェブサーバがある。これらのウェブサーバでは気象情報を参照できる。また、電気料金やレンタルサーバの課金料も、電力会社やレンタルサーバ事業者のウェブサイトなどから取得できる。
【００７９】
実行マシン決定部109は、定期的に実行タイムスロット記憶部105の実行タイムスロットを参照し、実行するべきタイミングになったジョブを、どのジョブ実行サーバ30で実行するかを決定する。ここで、実行マシン決定部109が、実行タイムスロットを参照する間隔は、実行タイムスロットの間隔と同等か、実行タイムスロットの間隔より短い間隔とする。
【００８０】
実行マシン決定部109は、実行するべきタイミングとなったジョブを、どのジョブ実行サーバ30で実行するかを決定する際、資源消費量見積り部107で見積もった資源消費量と複数のジョブ実行サーバ30各々の計算機資源の仕様及び計算機資源の使用状況とを考慮して決定する。ここで、ジョブ実行サーバの計算機資源の仕様、計算機資源の使用状況それぞれは、ジョブ実行サーバ仕様記憶部113、ジョブ実行サーバ状態記憶部112を参照することで把握することができる。ジョブ実行サーバ仕様記憶部113、ジョブ実行サーバ状態記憶部112それぞれが記憶する、ジョブ実行サーバの計算機資源の仕様、計算機資源の使用状況についての詳細は、後述する。実行マシン決定部109は、どのジョブをどのジョブ実行サーバで実行するかを決定すると、ジョブ配送部110に通知する。
【００８１】
ジョブ配送部110は、実行マシン決定部109から受け取った情報に基づき、実行すべきジョブをジョブ記憶部102から取得し、当該ジョブを実行すべきジョブ実行サーバ30に配送する。ジョブ実行サーバ30は、受け取ったジョブを実行する。ジョブ実行サーバ30の計算機資源は、ジョブの実行により消費される。
【００８２】
ジョブ実行サーバ状態把握部111は、複数のジョブ実行サーバ30各々の計算機資源の消費状況を収集し、ジョブ実行サーバ状態記憶部112に記憶する。ジョブ実行サーバ30の計算機資源の消費状況は、ジョブ実行サーバ状態把握部111が、自発的に各ジョブ実行サーバから収集してもよいし、ジョブ実行サーバ30が自発的に通知したものを受信してもよい。収集する間隔は、実行タイムスロットの間隔と同等か、それより短い間隔とする。
【００８３】
図７は、ジョブ実行サーバ状態記憶部112が記憶する情報を示す表である。ジョブ実行サーバ状態記憶部112は、複数のジョブ実行サーバ30各々の計算機資源の消費状況を記憶する。図７を用いて、ジョブ実行サーバ状態記憶部112が記憶する各項目を具体的に説明する。
【００８４】
「ジョブ実行サーバ番号」は、ジョブ実行サーバ30を一意に識別するIDである。
【００８５】
「アドレス」は、ジョブ実行サーバの通信アドレスである。
【００８６】
「タイムスタンプ」は、記憶された計算機資源の消費状況が、どの時刻の消費状況であるかを示す。
【００８７】
「CPU利用率」は、ジョブ実行サーバ30のCPU利用率である。
【００８８】
「メモリ消費量」は、ジョブ実行サーバ30のメモリ消費量である。
【００８９】
「ネットワーク通信量」は、ジョブ実行サーバ30の送信データ量と受信データ量である。
【００９０】
「ディスク消費量」は、ジョブ実行サーバ30のディスク消費量である。
【００９１】
「実行中ジョブ番号」は、ジョブ実行サーバ30が実行しているジョブのジョブ番号である。実行中ジョブ番号のジョブ番号は、図1のジョブ番号と同一の番号である。
【００９２】
ジョブ実行サーバ仕様記憶部113は、ジョブ実行サーバ30が備える計算機資源の仕様を記憶する。図８は、ジョブ実行サーバ仕様記憶部113が記憶する情報を示す表である。以下、ジョブ実行サーバ仕様記憶部113が記憶する情報の各項目を説明する。
【００９３】
「ジョブ実行サーバ番号」は、ジョブ実行サーバ30を一意に識別するIDである。
【００９４】
「CPU仕様」は、ジョブ実行サーバ30が備えるCPUの仕様である。
【００９５】
「メモリ容量」は、ジョブ実行サーバ30が備えるメモリの容量である。
【００９６】
「ネットワーク帯域」は、ジョブ実行サーバ30が備える通信性能である。
【００９７】
「ディスク容量」は、ジョブ実行サーバ30が備えるディスクの容量である。
【００９８】
次に、本実施形態の負荷分散装置10の動作を、ジョブ受信処理、実行タイムスロット管理、ジョブ実行処理の３つの動作に分けて説明する。
【００９９】
図９は、負荷分散装置10のジョブ受信処理を示すフローチャートである。図１０は、負荷分散装置10の実行タイムスロット管理を示すフローチャートである。図１１は、負荷分散装置10のジョブ実行処理を示すフローチャートである。
【０１００】
まず、図９を用いて、負荷分散装置10のジョブ受信処理を説明する。
【０１０１】
まず、ジョブ受信部10は、プロバイダ20から、ジョブと、メタ情報（実行条件、外部情報判定式、資源消費量変動情報）を受け取る（S101）。
【０１０２】
ジョブ受信部101は、ジョブを受信すると、ジョブを一意に識別できるジョブ番号Nを割り当て、ジョブとジョブ番号とを対応付けてジョブ記憶部102に記憶する。また、ジョブ受信部101は、メタ情報記憶部103にジョブ情報を記憶する。ジョブ情報のジョブ番号は、ジョブ記憶部102に記憶したジョブ番号N（Nは、１以上の整数である。）と同一の番号とし、ジョブ情報の「種類」はジョブのファイル形式とし、ジョブ情報の「パス」は、ジョブをジョブ記憶部102に保存した場所とする。ジョブ受信部101は、メタ情報（実行条件と外部情報判定式と資源消費量変動情報）をメタ情報記憶部103に記憶する（S102）。
【０１０３】
次に、ジョブ受信部101は、実行タイミング調整部104に、ジョブ番号Nを渡す（S103）。
【０１０４】
次に、実行タイミング調整部104は、メタ情報記憶部103の実行条件（図３を参照。）を参照し、受け取ったジョブ番号Nに対応する実行条件の実行時刻と繰り返し間隔に基づき、実行タイムスロット記憶部105の実行タイムスロットにジョブを割り当てる（S104）。例えば、N＝1である場合、ジョブ番号は１である。この場合、図３の実行条件は、実行時刻が2011年1月1日の0時0分0秒となっているため、図６の実行タイムスロット記憶部105の時刻2011年1月1日の0時0分0秒の実行タイムスロットにジョブ番号1を追加する。また、図３の実行条件より、ジョブ番号1のジョブは、繰り返し間隔が10分間隔であるため、図６の実行タイムスロット記憶部105の時刻2011年1月1日の0時10分0秒や、0時20分0秒の実行タイムスロットにも、ジョブ番号1を追加する。
【０１０５】
以上が、ジョブ受信処理のフローチャートである。
【０１０６】
次に、図１０を用いて、負荷分散装置10の2つ目の動作である実行タイムスロット管理を説明する。
【０１０７】
まず、実行タイムスロット管理部106は、定期的に、実行タイムスロット記憶部105が記憶する実行タイムスロットを参照し、現在時刻より過去のタイムスロットを削除する（S201）。
【０１０８】
次に、実行タイムスロット管理部106は、削除したタイムスロットの数だけ、現在より未来のタイムスロットを追加する（S202）。
【０１０９】
次に、実行タイムスロット管理部106は、未来のタイムスロットを追加したことを、実行タイミング調整部104に通知する（S203）。
【０１１０】
次に、実行タイミング調整部104は、通知を受けると、図３を参照し、各ジョブの実行条件を参照し、新しく追加されたタイムスロットに割り当てる必要があるジョブを、実行タイムスロット記憶部105の実行タイムスロットに登録する（S204）。
【０１１１】
次に、図１１を用いて、負荷分散装置10の3つ目の動作であるジョブ実行処理を説明する。
【０１１２】
まず、実行マシン決定部109は、実行タイムスロット記憶部105を参照し、現在時刻に対応する実行タイムスロットから、実行するジョブのジョブ番号を把握する(S301)。例えば、現在時刻が、2011年1月1日の0時0分0秒である場合には、実行タイムスロット記憶部105の、同時刻に実行するジョブの番号がジョブ番号1であることを把握する。
【０１１３】
次に、実行マシン決定部109は、ジョブ番号を資源消費量見積り部107に渡し(S302)、実行するジョブの資源消費量を問い合わせる。
【０１１４】
次に、資源消費量見積り部107は、メタ情報の資源消費量変動情報（図５参照）を参照し、受け取ったジョブ番号から、成立条件を把握する(S303)。図５において、ジョブ番号1の場合は、成立条件が式1であると把握する。
【０１１５】
資源消費量見積り部107は、メタ情報の外部情報判定式（図４を参照。）を参照し、S303で把握した成立条件の式番号の情報を参照する(S304)。図４において、成立条件の式番号が1の場合、外部情報IDが http://weather.sample/tokyo/temperature5であり、演算子が'='で、比較値が10分前であることを確認できる。
【０１１６】
次に、資源消費量見積り部107は、外部情報取得部108に外部情報IDと比較値を渡し、外部情報の取得を依頼する（S305）。
【０１１７】
次に、外部情報取得部108は、受け取った外部情報IDと比較値に基づき、外部情報を取得する（S306）。例えば、外部情報IDがhttp://weather.sample/tokyo/temperature5であり、比較値が10分前である場合は、現在と10分前のhttp://weather.sample/tokyo/temperature5の情報を取得する。外部情報の取得は、外部情報判定式（図４を参照。）の「取得方法」と「備考」を参照して行う。外部情報取得部108は、取得した外部情報を資源消費量見積り部107に渡す。
【０１１８】
資源消費量見積り部107は、外部情報取得部108から得た外部情報が、成立条件を満たすか否かを判定する(S307)。図４より、成立条件が式1の場合は、演算子が'='である。したがって、資源消費量見積もり部107は、現在の外部情報と10分前の外部情報とが一致する場合、条件成立と判定し、一致しない場合、条件不成立と判定する。
【０１１９】
条件が成立した場合(S307 YES)、資源消費量見積もり部107は、資源消費量変動情報（図５）として記憶されている各資源の変動量と、実行条件（図３）に記憶されている、各資源の資源消費量から、ジョブの資源消費量を見積もる(S308)。例えばジョブ番号1の場合、式1が成立すれば、図３と図５より、CPU占有時間は5s、メモリ消費量は7MB、ネットワーク通信量は30KB/40KB、ディスク消費量は50KBと見積もることができる。
【０１２０】
尚、条件が不成立の場合（S307  NO）、資源消費量見積もり部107は、実行条件（図３）に記憶されている、各資源の資源消費量を、そのまま、資源消費量として見積る（S309）。
【０１２１】
資源消費量見積り部107は、見積もった資源消費量を実行マシン決定部109に渡す（S310）。
【０１２２】
実行マシン決定部109は、資源消費量見積り部107から得た資源消費量と、ジョブ実行サーバ状態記憶部112の情報から、ジョブをどのジョブ実行サーバ30で実行するかを決定する(S311)。ジョブ実行サーバ30の選択方法は様々である。例えば、現時点で最も計算機資源が余っているサーバを選択する方法がある。また、ジョブ実行サーバ30間の資源消費量のばらつきが最小となるようにジョブ実行サーバ30を選択する方法がある。
【０１２３】
実行マシン決定部109は、実行すべきジョブのジョブ番号と、選択したジョブ実行サーバのジョブ実行サーバ番号を、ジョブ配送部110に渡す(S312)。
【０１２４】
ジョブ配送部110は、ジョブ番号にもとづき、ジョブ記憶部102からジョブを取得し、ジョブ実行サーバ番号に対応するジョブ実行サーバ30にジョブを配送する（S313）。ジョブ実行サーバ30は、渡されたジョブを実行する。実行が完了した場合は、結果をジョブ配送部110へ返す。
【０１２５】
以上、負荷分散装置10の動作を説明した。
【０１２６】
このように、第1の実施形態では、図１１のS305からS311で説明したように、ジョブの資源消費量を算出する際に、外部情報を考慮して資源消費量の再見積りを行うことで、ジョブを実行する際の、資源消費量をより正確に把握できる。そして、その結果、ジョブを実行させるジョブ実行サーバ30としてより適切なジョブ実行サーバを選択できる。適切なジョブ実行サーバを選択することで、さらなる資源消費量の平滑化を実現できる。資源消費量のピークを下げられるため、省エネサービス提供システムにて用意するべき計算機資源の総量を減らすことができる。
【０１２７】
なお、負荷分散装置１０は、例えば、汎用のコンピュータ装置を基本ハードウェアとして用いることでも実現することが可能である。すなわち、ジョブ受信部101、ジョブ記憶部102、メタ情報記憶部103、実行タイミング調整部104、実行タイムスロット記憶部105、実行タイムスロット管理部106、資源消費量見積り部107、外部情報取得部108、実行マシン決定部109、ジョブ配信部110、ジョブ実行サーバ状態把握部111、ジョブ実行サーバ記憶部112、ジョブ実行サーバ仕様記憶部113は、上記のコンピュータ装置に搭載されたプロセッサにプログラムを実行させることにより実現することができる。このとき、負荷分散装置１０は、上記のプログラムをコンピュータ装置にあらかじめインストールすることで実現してもよいし、ＣＤ−ＲＯＭなどの記憶媒体に記憶して、あるいはネットワークを介して上記のプログラムを配布して、このプログラムをコンピュータ装置に適宜インストールすることで実現してもよい。また、ジョブ記憶部102、メタ情報記憶部103、実行タイムスロット記憶部105、ジョブ実行サーバ記憶部112、ジョブ実行サーバ仕様記憶部113は、上記のコンピュータ装置に内蔵あるいは外付けされたメモリ、ハードディスクもしくはＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＡＭ、ＤＶＤ−Ｒなどの記憶媒体などを適宜利用して実現することができる。
【０１２８】
＜第２の実施形態＞
次に、第2の実施形態の負荷分散装置210について説明する。
【０１２９】
第1の実施形態の負荷分散装置10では、メタ情報に含まれる実行条件にて指定された実行時刻に基づき、ジョブを実行タイムスロットに割り当てていた。
【０１３０】
第2の実施形態の負荷分散装置210は、実行タイムスロットの全ジョブの合計資源消費量に応じて、新たなジョブの実行をどの実行タイムスロットにあてはめるかを選択する。より具体的には、メタ情報に含まれる実行条件に、ジョブの実行時刻とともに、ジョブの実行時刻の許容予測時間を定めて、ジョブ実行タイミングの調整幅を増やしている。また、実行条件の実行時刻以外のタイミングであって、実行時刻との差分が許容予測時間以内である時刻に、ジョブを実行する（以下では、予測実行と称する。）場合に、ジョブの資源消費量を算出する際に、実行時刻時点の外部情報の代わりに、実行時刻時点の予測情報を利用して、資源消費量を算出する。予測外部情報とは、外部情報が気象情報である場合、気象予測情報を利用する。以下の説明では、全ジョブ実行サーバ30の合計資源消費量を「閾値L」と表現する。
【０１３１】
負荷分散装置210によれば、例えば、ある実行タイムスロットに多数のジョブが割り当てられ、ジョブの合計資源消費量が、全ジョブ実行サーバの合計資源消費量を超えた場合において、別のタイミングで、ジョブを実行させることにより、省エネサービスの品質を保証することができる。
【０１３２】
図12は、第2の実施形態に係る負荷分散装置210を含むシステムを示す図である。
【０１３３】
負荷分散装置210は、第1の実施形態の負荷分散装置10と異なり、予測実行ジョブ記憶部2114を備える。また、負荷分散装置210がメタ情報記憶部2103に記憶する実行条件情報と外部条件判定式情報の内容が、第1の実施形態と異なる。
【０１３４】
図13は、第2の実施形態の実行条件を表す。第2の実施形態の実行条件は、第1実施形態の実行条件に加えて、さらに、「許容予測時間」を記憶する点が異なる。
【０１３５】
許容予測時間は、ジョブごとに、どれだけ未来の外部情報（以下、未来の外部情報のことを予測外部情報と称する）を利用してよいかを定義する。ジョブは、実行時刻より前の時刻であって、許容予測時間以内の時刻であれば、実行可能である。
【０１３６】
図１４は、第2の実施形態の外部情報判定式を表す。第2の実施形態の外部情報判定式は、第1の実施形態の外部情報判定式に加えて「予測外部情報ID」を記憶する点が異なる。この予測外部情報IDは、予測外部情報を一意に識別するIDである。
【０１３７】
予測実行ジョブ記憶部2114は、実行タイミング調整部104が、ジョブの実行タイミングとして、ジョブの実行条件で実行時刻として指定された時刻以外の時刻であって、実行時刻との差分が許容予測時間以内である時刻に割り当てた場合に、当該割り当てたジョブのジョブ番号を記憶する。
【０１３８】
次に、負荷分散装置210の動作を、ジョブ受信処理とジョブ実行処理の２つの動作に分けて説明する。図１５は、負荷分散装置210のジョブ受信処理を示すフローチャートである。図１６は、負荷分散装置210のジョブ実行処理を示すフローチャートである。
【０１３９】
まず、図１５を用いて、負荷分散装置210のジョブ受信処理を説明する。
【０１４０】
S401〜S403の処理は、図９のS101〜S103の処理と同様であるため、説明を省略する。
【０１４１】
次に、実行タイミング調整部104は、実行条件（図１３参照）の実行時刻と繰り返し間隔に基づき、該当する実行タイムスロットにジョブを割り当てることを試みる(S404)。
【０１４２】
次に、実行タイミング調整部104は、ジョブの割り当てを試みたタイムスロットにおけるジョブの合計資源消費量が、新たにジョブを割り当てることにより、「閾値L」を超えるか否かを判定する(S405)。閾値Lを超えない場合は(S405 NO)、S411に動作が移行し、閾値Lを超えた場合は(S405 YES)、S406に動作が移行する。
【０１４３】
次に、実行タイミング調整部104は、ジョブの実行条件（図１３参照）を参照し、許容予測時間を把握する（S406）。
【０１４４】
次に、実行タイミング調整部104は、許容予測時間の範囲内で、実行タイムスロットを参照する(S407)。例えば、図１３のジョブ番号２のジョブであれば、許容予測時間は1時間なので、２０１１年1月1日０時0分0秒から２０１１年1月1日１時０分０秒までのタイムスロットを参照する。
【０１４５】
次に、実行タイミング調整部104は、許容予測時間の範囲内の実行タイムスロットに、ジョブを割り当て可能な実行タイムスロットがあるかを判断する(S408)。許容予測時間の範囲内の実行タイムスロットに、ジョブを追加しても、合計資源消費量が閾値Lを超えなければ、割り当て可能だと判断する。許容予測時間の範囲内の実行タイムスロットに、割当て可能なタイムスロットがない場合(S408 NO)、S411に動作が移行する。
【０１４６】
許容予測時間の範囲内の実行タイムスロットに、ジョブを割り当て可能なタイムスロットがある場合は(S408 YES)、その実行タイムスロットに、ジョブを割り当てる（S409）。割当て可能なタイムスロットが複数ある場合は、いずれか１つを選択する。選択方法は様々である。例えば、本来実行するべき時刻に最も近いタイムスロットを選択する方法や、ジョブ数が最小のタイムスロットを選択する方法がある。
【０１４７】
次に、実行タイミング調整部104は、予測実行ジョブ記憶部2114に、割り当てたジョブのジョブ番号を記憶する(S410)。
【０１４８】
尚、S411においては、実行タイミング調整部104は、実行条件（図１３参照）の実行時刻のタイムスロットに、ジョブを割り当てる。
【０１４９】
以上が、ジョブ受信処理のフローチャートである。
【０１５０】
次に、図１６を用いて、負荷分散装置210のジョブ実行処理の動作を説明する。
【０１５１】
S501〜S504の動作は、図１１のS301〜S304の処理と同様であるため、説明を省略する。
【０１５２】
次に、資源消費量見積り部107は、予測実行ジョブ記憶部2114を参照し、実行マシン決定部109から受け取ったジョブ番号のジョブは、予測実行するジョブかどうかを判断する(S505)。予測実行ジョブ記憶部2114に、受け取ったジョブ番号が存在すれば(S505 YES)、予測実行すると判断する。予測実行する場合は、S506に動作を移行し、予測実行しない場合(S505 NO)は、S507へ動作を移行する。
【０１５３】
S506において、資源消費量見積り部107は、ジョブの実行条件（図１３参照）を参照し、ジョブの本来の実行時刻（以下、時刻RTと称する。）を把握する。
【０１５４】
S507において、資源消費量見積り部107は、外部情報取得部108に外部情報IDと比較値を渡し、外部情報を取得してもらう。ただし、予測実行する場合は、予測外部情報を取得してもらう必要があるので、予測外部情報IDと、時刻ＲＴと比較値を渡す。
【０１５５】
次に、外部情報取得部108は、渡された外部情報IDと比較値に基づき、外部情報を取得する(S508)。ただし、予測外部情報IDが通知された場合は、時刻ＲＴと、その10分前の予測外部情報を取得する。外部情報取得部108は、取得した情報を資源消費量見積り部107に通知する。
【０１５６】
次に、資源消費量見積り部107は、外部情報取得部108から得た外部情報が、成立条件を満たすかどうかを判定する(S509)。成立条件が式1の場合は、演算子が'='であるため、現在の情報と10分前の情報が一致すれば、条件成立と判定し、一致しなければ不成立と判定する。ただし、予測外部情報を取得した場合は、時刻ＲＴの予測外部情報と、時刻RTの10分前の予測外部情報とが一致すれば、条件成立と判定し、一致しなければ不成立と判定する。
【０１５７】
条件が成立した場合は(S509 YES)、資源消費量変動情報に記憶されている各資源の変動量と、実行条件に記憶されている資源消費量から、最終的なジョブの資源消費量を見積もる（S510）。
【０１５８】
資源消費量見積り部107は、見積もった資源消費量を実行マシン決定部109に渡す(S511)。ジョブを予測実行する場合は、予測実行ジョブ記憶部2114から、ジョブ番号を削除する。
【０１５９】
S512〜S514の処理は、図１１のS310〜S312の処理と同様であるため、説明を省略する。
【０１６０】
以上、説明したように、第2の実施形態の負荷分散装置210によれば、実行タイムスロットのジョブ合計資源消費量に応じて、ジョブの実行のタイミングをずらすことができるため、特定の実行タイムスロットに集中することを防ぐことができるため、計算機資源の消費量を平滑化できる。
【０１６１】
尚、本実施形態においては、「閾値L」として、全ジョブ実行サーバの合計資源消費量とした。しかしながら、「閾値L」は、合計資源消費量以下の値にしてもよい。これによって、省エネサービス提供システム全体の資源消費量の合計値のピーク値を低減することができ、省エネサービス提供システム全体の計算機資源を低減することができる。
【０１６２】
尚、前述した予測外部情報が、外れた場合の対応も可能である。
【０１６３】
例えば、資源消費量見積り部107が、予測実行ジョブの予測外部情報を時刻ＲＴまで削除せずに保持しておき、時刻ＲＴになった時点で、時刻ＲＴ時点での外部情報と比較し、予測が外れたかを判断し、外れている場合、ジョブを実行マシン決定部109に通知する。こうすることで予測が外れていた場合に、ジョブを再実行できる。
【０１６４】
より具体的には、資源消費量見積り部107は、予測外部情報と、時刻ＲＴにおける外部情報とを比較し、予測外部情報と外部情報とが異なっていた場合、ジョブを実行するためにジョブ実行サーバ30の計算機資源が消費する資源消費量を、外部情報を考慮して再度見見積もる。そして、実行マシン決定部109は、再度見積もった資源消費量に基づいて、ジョブを提供するサーバを選択する。そして、ジョブ配送部110は、実行マシン決定部109が選択したジョブ実行サーバ30に対して、ジョブを再度提供する。
【０１６５】
＜第３の実施形態＞
次に、第3の実施形態にかかる負荷分散装置310について説明する。
【０１６６】
複数のサーバを備える省エネサービス提供システムにおいて、同じ量の計算を実行する場合に、多くのサーバで、それぞれが、わずかな計算を実行するよりも、少しのサーバで、それぞれが大量の計算を実行し、残りのサーバを停止するほうが、全体の消費電力は小さくなる。ここで、「停止」とは、サーバのシャットダウンもしくはサスペンドもしくはスリープに相当する。
【０１６７】
第3の実施形態の負荷分散装置310は、全てのジョブ実行サーバ30の合計計算機資源量と比べて、実行するべきジョブの資源消費量の方が少ない場合に、一部のジョブ実行サーバ30を停止させることで、省エネサービス提供システム全体としての消費電力を抑えることが、第1及び第2の実施形態の負荷分散装置と異なる。
【０１６８】
図１７は、第3の実施形態に係る負荷分散装置310の構成を示す図である。第3の実施形態における負荷分散装置310は、第2の実施形態にかかる負荷分散装置210の構成に加えて、さらに、ジョブ実行サーバ制御部3115を備える。
【０１６９】
ジョブ実行サーバ制御部3115は、実行マシン決定部109からの通知を受け、ジョブ実行サーバ30に対する停止処理や起動処理を行う。停止処理は、例えばssh（secure  socket  shell）などの遠隔ログインプログラム経由で実行可能である。また起動命令は、WOL(Wake On LAN)などの遠隔起動技術により可能である。
【０１７０】
図１８は、第3の実施形態にかかるジョブ実行サーバ状態記憶部3112が記憶する情報である。ジョブ実行サーバ状態記憶部3112は、ジョブ実行サーバ状態記憶部112が記憶する情報に加えて、「サーバ状態」情報も管理する。「サーバ状態」とは、ジョブ実行サーバ30が停止中か稼働中かを表す情報である。
【０１７１】
ジョブ実行マシン決定部3109は、ジョブ実行マシン決定部109の機能と比べて、サーバ状態が停止中のジョブ実行サーバ30を除いて、ジョブを実行するジョブ実行サーバ30を決定する点が異なる。
【０１７２】
ジョブ実行サーバ状態把握部3111は、ジョブ実行サーバ状態把握部111の機能と比べて、ジョブ実行サーバ30と通信できるかどうかによって、サーバの状態を判断する点が異なる。  
図１９は、第3の実施形態におけるジョブ実行サーバ仕様記憶部3113の記憶する情報である。ジョブ実行サーバ仕様記憶部3113は、第1の実施形態にかかるジョブ実行サーバ仕様記憶部113と比べて、さらに、「消費電力量」と「停止時間」と「起動時間」の情報も管理する。消費電力は、ジョブ実行サーバ30の消費電力である。停止時間と起動時間は、ジョブ実行サーバ30の停止処理と起動処理に要する時間である。
【０１７３】
次に、負荷分散装置310の動作を説明する。
【０１７４】
図２０は、負荷分散装置310が、ジョブ実行サーバ30を停止および起動させる動作を示すフローチャートである。
【０１７５】
実行マシン決定部3109は、第1の実施形態で説明したジョブ実行処理と合わせて、図２０の処理も行う。
【０１７６】
まず、実行マシン決定部109は、実行タイムスロット記憶部105と、ジョブ実行サーバ状態記憶部3112と、ジョブ実行サーバ仕様記憶部3113とを参照する(S601)。
【０１７７】
次に、実行マシン決定部109は、停止できるジョブ実行サーバ30があるかを判断する(S602)。どのように判断するかについての詳細は後述する。また、ジョブ実行サーバ30を停止する期間をどのように計算するかについても後述する。
【０１７８】
停止できるサーバがある場合(S602 YES)、実行マシン決定部109は、ジョブ実行サーバ制御部3115に、停止することに決定したジョブ実行サーバ30の番号と、停止期間を通知する（S603）。以降、サーバ状態が「稼働中」になるまで、実行マシン決定部109は、このジョブ実行サーバ30でジョブを実行しない。
【０１７９】
ジョブ実行サーバ制御部3115は、通知されたジョブ実行サーバ30を停止する。ただし、停止対象のジョブ実行サーバ30が何らかのジョブを実行しているうちは停止しない。ジョブ実行サーバ制御部3115は、また、ジョブ実行サーバ30の停止期間が経過したら、ジョブ実行サーバ30を起動する（S604）。
【０１８０】
S605において、実行マシン決定部109は、停止したジョブ実行サーバ30を起動するべきか判断する。通常、停止したジョブ実行サーバ30は、S604において、停止期間が経過した後に起動される。しかし、プロバイダ20からジョブが新規投入されたことにより、突然、ジョブの資源消費量が増加する可能性があるため、S605でサーバの緊急起動の判断を行う。どのように判断するかは後述する。  
起動するべきジョブ実行サーバ30がある場合(S605 YES)、実行マシン決定部109は、ジョブ実行サーバ制御部3115に、ジョブ実行サーバ30の番号を通知する(S606)。
【０１８１】
ジョブ実行サーバ制御部3115は、通知されたジョブ実行サーバ30を起動する(S607)。 
以上が、ジョブ実行サーバ30の停止および起動処理である。
【０１８２】
次に、ジョブ実行サーバ30の停止および起動処理のうち、S602の処理、停止できるジョブ実行サーバ30の有無の判断の処理の詳細を説明する。また、合わせて、停止可能な期間を求める方法も説明する。
【０１８３】
停止可能なジョブ実行サーバ30の有無は、実行マシン決定部109が、稼働中のジョブ実行サーバ30（稼働中のサーバ30を、それぞれS_1,,,S_i,,,S_nと示す。）ごとに、以下の計算を行うことで判断する。  
まず、S_iを停止しても、すべてのジョブを処理できるかを判断する。実行マシン決定部3109は、S_iを除いた稼働中のジョブ実行サーバ30の計算機資源の残量の合計値が、現在時刻の実行タイムスロットの全ジョブの資源消費量よりも大きければ、S_iを停止してもすべてのジョブを処理できると判断する。
【０１８４】
実行マシン決定部3109は、現在時刻のタイムスロットの次以降のタイムスロットのジョブについても同様に、S_iを停止しても、すべてのジョブを処理できるかを判断する。
【０１８５】
すべてのジョブを処理できないと判断されたタイムスロットの時刻と、現在のタイムスロットとの時刻の差D_iが、S_iを停止できる期間となる。
【０１８６】
実行マシン決定部3109は、ジョブ実行サーバ仕様記憶部3113（図１９）を参照し、S_iの停止と起動に要する時間の合計値T_iが、D_iよりも小さければ、S_iを停止可能サーバだと判断する。
【０１８７】
次に、実行マシン決定部3109は、S_i を停止することで得られる消費電力の削減量
W_iを計算する（S705）。W_iは、ジョブ実行サーバ仕様記憶部3113の消費電力とD_iを乗算することで計算できる。
【０１８８】
実行マシン決定部3109は、全てのサーバS_1,,,S_i,,,S_nに対して、S_i,に対して行った処理を行うことで、停止可能なサーバを選出する。停止可能なサーバが複数ある場合は、例えば、W_iが最大となるサーバを停止するなどの選択方法がある。場合によっては、複数のサーバを停止できる可能性もある。
【０１８９】
次に、図２０のS605の処理の詳細を説明する。プロバイダ20からの新規のジョブ投入により、停止しているジョブ実行サーバ30を起動させするべきか否かは、実行マシン決定部3109が以下の計算を行うことで判断する。
【０１９０】
まず、現在時刻のタイムスロットにて実行するべき全てのジョブの、合計資源消費量を計算する（手順１）。
【０１９１】
次に、稼働中のジョブ実行サーバ30群の、合計計算機資源が、ジョブの合計資源消費量よりも小さければ、ジョブ実行サーバ30を起動する。稼働中のジョブ実行サーバ30群の、合計計算機資源が、ジョブの合計資源消費量よりも大きくなるように、起動するジョブ実行サーバ30を選択する（手順２）。
【０１９２】
ジョブ実行サーバ30の起動には数秒から数分の時間を要するため、現在のタイムスロットだけではなく、数分先のタイムスロットに対しても、手順１と手順２を実施する。何分先まで実施するかは、設定ファイルなどで固定値としてもよいし、ジョブ実行サーバ仕様記憶部3113を参照し、起動時間の最大値に合わせてもよい。
【０１９３】
以上説明したように、負荷分散装置３１０によれば、実行するべきジョブの数が少ない場合に、一部のジョブ実行サーバ30を停止することで、省エネサービス提供システム全体の消費電力を抑えることができる。
【０１９４】
以上説明した少なくとも１つの実施形態によれば、気象情報や電気料金などの省エネサービス提供システム外部から得られる情報を考慮して、省エネサービスの資源消費量の変動を算出することで、省エネサービス実行時の資源消費量を平滑化することができる。
【０１９５】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１９６】
１０・・・負荷分散装置、２０・・・省エネサービスプロバイダ、３０・・・ジョブ実行サーバ、４０・・・外部情報提供装置、５０、６０、７０、９０・・・ネットワーク、８０・・・ビル、１０１・・・ジョブ受信部、１０２・・・ジョブ記憶部、１０３、２１０３・・・メタ情報記憶部、１０４・・・実行タイミング調整部、１０５・・・実行タイムスロット記憶部、１０５・・・実行タイム調整部、１０６・・・実行タイムスロット管理部、１０７・・・資源消費量見積り部、１０８・・・外部情報取得部、１０９、３１０９・・・実行マシン決定部、１１０・・・ジョブ配信部、１１１・・・ジョブ実行サーバ状態把握部、１１２、３１１２・・・ジョブ実行サーバ状態記憶部、１１３、３１１３・・・ジョブ実行サーバ使用記憶部、２１１４・・・予測実行ジョブ記憶部、３１１５・・・ジョブ実行サーバ制御部
【図１】
0005731907.tif 000002
【図２】
0005731907.tif 000003
【図３】
0005731907.tif 000004
【図４】
0005731907.tif 000005
【図５】
0005731907.tif 000006
【図６】
0005731907.tif 000007
【図７】
0005731907.tif 000008
【図８】
0005731907.tif 000009
【図９】
0005731907.tif 000010
【図１０】
0005731907.tif 000011
【図１１】
0005731907.tif 000012
【図１２】
0005731907.tif 000013
【図１３】
0005731907.tif 000014
【図１４】
0005731907.tif 000015
【図１５】
0005731907.tif 000016
【図１６】
0005731907.tif 000017
【図１７】
0005731907.tif 000018
【図１８】
0005731907.tif 000019
【図１９】
0005731907.tif 000020
【図２０】
0005731907.tif 000021