(57)【特許請求の範囲】
【請求項１】
演算部を有するコンピュータに、
実行中プロセス群の中からいずれかの実行中プロセスを前記演算部に選択させ、
前記演算部によって選択されたいずれかの実行中プロセスの親プロセスを実行する計算機から、前記親プロセスが通信を行う通信相手のプロセス数を前記演算部に取得させ、
前記演算部によって取得されたプロセス数が、前記親プロセスを含むソフトウェアに関する並列処理上限数を超えたか否かを前記演算部に判断させ、
前記演算部によって前記並列処理上限数を超えたと判断された場合、前記いずれかの実行中プロセスの実行を前記演算部に停止させる、
処理を実行させることを特徴とする管理プログラム。
【請求項２】
前記コンピュータに、
前記実行中プロセスの前記親プロセスとの実通信時間を前記演算部に計測させ、
前記演算部によって計測された実通信時間が前記実行中プロセスの平均通信時間に応じたしきい値以上であるか否かを前記演算部に判断させ、
前記演算部によって前記実通信時間が前記しきい値以上であると判断された場合、前記実行中プロセスの実行を前記演算部に停止させる、
処理を実行させることを特徴とする請求項１に記載の管理プログラム。
【請求項３】
前記コンピュータに、
前記演算部によって前記実行中プロセス群について前記並列処理上限数を超えたか否かの判断が実行された場合、前記親プロセスによって起動が受け付けられたプロセスのデータ処理に関する負荷と、前記実行中プロセス群のうち停止していない実行中プロセスのデータ処理に関する負荷と、の第１の総和が、前記コンピュータの負荷上限を超えたか否かを前記演算部に判断させ、
前記演算部によって前記総和が前記負荷上限以下であると判断された場合、前記起動が受け付けられたプロセスを前記演算部に実行させる、
処理を実行させることを特徴とする請求項１または２に記載の管理プログラム。
【請求項４】
前記コンピュータに、
前記演算部によって前記第１の総和が前記負荷上限を超えたと判断された場合、前記実行中プロセス群のうち前記親プロセスと通信中のプロセスの通信に関する負荷と、前記実行中プロセスのうち前記通信中でないプロセスのデータ処理に関する負荷と、前記起動が受け付けられたプロセスのデータ処理に関する負荷と、の第２の総和が、前記負荷上限を超えたか否かを前記演算部に判断させ、
前記演算部によって前記第２の総和が前記負荷上限以下であると判断された場合、前記起動が受け付けられたプロセスを前記演算部に実行させる、
処理を実行させることを特徴とする請求項３に記載の管理プログラム。
【請求項５】
前記コンピュータに、
前記演算部によって前記実行中プロセス群について前記並列処理上限数を超えたか否かの判断が実行された場合、前記実行中プロセス群のうち停止していない実行中プロセスのデータ処理に関する負荷と、の第１の総和が、前記コンピュータの節電に関する負荷上限を超えたか否かを前記演算部に判断させ、
前記演算部によって前記総和が前記負荷上限以下であると判断された場合、前記親プロセスによって起動が受け付けられたプロセスを前記演算部に実行させる、
処理を実行させることを特徴とする請求項１または２に記載の管理プログラム。
【請求項６】
前記コンピュータに、
前記演算部によって前記第１の総和が前記負荷上限を超えたと判断された場合、前記実行中プロセス群のうち前記親プロセスと通信中のプロセスの通信に関する負荷と、前記実行中プロセスのうち前記通信中でないプロセスのデータ処理に関する負荷と、の第３の総和が、前記節電に関する負荷上限を超えたか否かを前記演算部に判断させ、
前記演算部によって前記節電に関する負荷上限を超えたと判断された場合、プロセッサ群のうち、前記節電に関する負荷上限に応じたプロセッサ数分のプロセッサを前記演算部に停止させる、
処理を実行させることを特徴とする請求項５に記載の管理プログラム。
【請求項７】
演算部を有するコンピュータが、
実行中プロセス群の中からいずれかの実行中プロセスを前記演算部に選択させ、
前記演算部によって選択されたいずれかの実行中プロセスの親プロセスを実行する計算機から、前記親プロセスが通信を行う通信相手のプロセス数を前記演算部に取得させ、
前記演算部によって取得されたプロセス数が、前記親プロセスを含むソフトウェアに関する並列処理上限数を超えたか否かを前記演算部に判断させ、
前記演算部によって前記並列処理上限数を超えたと判断された場合、前記いずれかの実行中プロセスの実行を前記演算部に停止させる、
処理を実行することを特徴とする管理方法。
【請求項８】
実行中プロセス群の中からいずれかの実行中プロセスを選択する選択部と、
前記選択部によって選択されたいずれかの実行中プロセスの親プロセスを実行する計算機から、前記親プロセスが通信を行う通信相手のプロセス数を取得する取得部と、
前記取得部によって取得されたプロセス数が、前記親プロセスを含むソフトウェアに関する並列処理上限数を超えたか否かを判断する並列処理判断部と、
前記並列処理判断部によって前記並列処理上限数を超えたと判断された場合、前記いずれかの実行中プロセスの実行を停止させる停止部と、
を備えることを特徴とする管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、管理プログラム、管理方法、および管理装置に関する。
【背景技術】
【０００２】
近年、製品の設計や製造におけるＣＡＤ（Ｃｏｍｐｕｔｅｒ  Ａｉｄｅｄ  Ｄｅｓｉｇｎ）処理に必要な時間が増加している。例えば、半導体業界では、微細化によるレイアウト設計やレチクル描画データの作成に必要なＣＡＤ処理のＴＡＴ（Ｔｕｒｎ  Ａｒｏｕｎｄ  Ｔｉｍｅ）が増えており、ＣＰＵリソースが不足している。
【０００３】
このため、１台のコンピュータ内で一連の処理を実行するのではなく、複数のコンピュータに一連の処理を分散させて実行させる並列処理が普及しており、数十台〜数百台規模のコンピュータに効率よく処理を分散させる技術がある。例えば、複数のコンピュータ上で複数のプログラムが動作する分散処理において、各コンピュータの性能と負荷に応じて、プログラムの優先順位を変更する技術がある（例えば、下記特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平７−２８２０１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
並列処理においては、或る数までは並列処理数を増加させるごとに一連の処理が効率化されていくものの、或る数を超えると並列処理数を増加させても一連の処理を効率化できなくなるという性質がある。このとき、並列処理を行うコンピュータでは、一連の処理の効率化に貢献しない処理にＣＰＵリソースが割り当てられ、他の処理に割り当てるＣＰＵリソースが不足してしまうという問題がある。
【０００６】
本発明は、上述した従来技術による問題点を解消するため、並列処理の効率化を図ることができる管理プログラム、管理方法、および管理装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するため、本発明の一側面によれば、実行中プロセス群の中からいずれかの実行中プロセスを選択し、選択されたいずれかの実行中プロセスの親プロセスを実行する計算機から、親プロセスが通信を行う通信相手のプロセス数を取得し、取得されたプロセス数が、親プロセスを含むソフトウェアに関する並列処理上限数を超えたか否かを判断し、並列処理上限数を超えたと判断された場合、いずれかの実行中プロセスの実行を停止させる管理プログラム、管理方法、および管理装置が提案される。
【発明の効果】
【０００８】
本発明の一側面によれば、並列処理の効率化を図ることができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、サーバによる並列処理数適正化処理の内容を示す説明図である。
【図２】図２は、図１に示したサーバＳのハードウェア構成例を示すブロック図である。
【図３】図３は、アプリケーションテーブル３００の記憶内容の一例を示す説明図である。
【図４】図４は、マシンテーブル４００の記憶内容の一例を示す説明図である。
【図５】図５は、起動指定プロセス実行処理の一例を示す説明図である。
【図６】図６は、異常プロセス停止処理の一例を示す説明図である。
【図７】図７は、保留プロセス実行処理の一例を示す説明図である。
【図８】図８は、並列処理数適正化処理の一例を示す説明図である。
【図９】図９は、ＣＰＵ使用率の低下の一例を示す説明図である。
【図１０】図１０は、ＣＰＵ使用率低下タイミング判断処理を示す説明図（その１）である。
【図１１】図１１は、ＣＰＵ使用率低下タイミング判断処理を示す説明図（その２）である。
【図１２】図１２は、サーバＳの機能的構成例を示すブロック図である。
【図１３】図１３は、起動指定プロセス実行処理の詳細な処理手順を示すフローチャート（その１）である。
【図１４】図１４は、起動指定プロセス実行処理の詳細な処理手順を示すフローチャート（その２）である。
【図１５】図１５は、異常プロセス停止処理の詳細な処理手順を示すフローチャートである。
【図１６】図１６は、並列処理数適正化処理の詳細な処理手順を示すフローチャートである。
【図１７】図１７は、ＣＰＵ使用率低下タイミング判断処理の詳細な処理手順を示すフローチャートである。
【図１８】図１８は、節電時の起動指定プロセス実行処理の一例を示す説明図である。
【図１９】図１９は、節電時のＣＰＵ使用率低下タイミング判断処理を示す説明図（その１）である。
【図２０】図２０は、節電時のＣＰＵ使用率低下タイミング判断処理を示す説明図（その２）である。
【図２１】図２１は、節電開始処理の詳細な処理手順を示すフローチャート（その１）である。
【図２２】図２２は、節電開始処理の詳細な処理手順を示すフローチャート（その２）である。
【図２３】図２３は、節電時の異常プロセス停止処理の詳細な処理手順を示すフローチャートである。
【図２４】図２４は、節電時のＣＰＵ使用率低下タイミング判断処理の詳細な処理手順を示すフローチャートである。
【図２５】図２５は、オフライン処理の詳細な処理手順を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下に添付図面を参照して、この発明にかかる管理プログラム、管理方法、および管理装置の実施の形態を詳細に説明する。以下では、管理装置として、サーバを採用して説明を行う。
【００１１】
（サーバによる並列処理数適正化処理の内容）
図１は、サーバによる並列処理数適正化処理の内容を示す説明図である。図１において、サーバＳは、プロセスＰの実行を管理するコンピュータである。例えば、プロセスＰとしては、親プロセスＰや子プロセスＰが挙げられる。親プロセスＰとは、自サーバＳまたは他サーバＳに子プロセスＰを起動させて並列処理を行わせて、親プロセスＰの処理の効率化を図るプロセスＰである。また、子プロセスＰとは、親プロセスＰによって起動されるプロセスＰである。
【００１２】
ここで、親プロセスＰが並列処理させる子プロセスＰの数（以下では「並列処理数」という）の増加による親プロセスＰの処理の効率化には限りがある。図１の例では、親プロセスＰになるプロセスＰ１０が並列処理数を増加させた場合、並列処理数が３になるまでは処理時間が削減されていくが、並列処理数が４以上に増えても処理時間がほとんど削減されない。また、並列処理させる子プロセスＰの数が多いために、サーバＳでＣＰＵリソースが不足してプロセスＰ間で競合が起こり、並列処理数を増加させることで処理時間が増える可能性もある。
【００１３】
そのため、サーバＳは、並列処理数の上限を保持しておき、実行中の子プロセスＰの数が並列処理数の上限を超えている場合、並列処理の効率化を図る。具体的には、サーバＳは、並列処理数が多すぎるために並列処理の処理時間の削減に貢献していないプロセスＰがあれば、当該プロセスＰを停止させて、ＣＰＵリソースを効率よく使用できるようにする。
【００１４】
図１の例では、サーバＳとして、サーバＳ１〜Ｓ５を示す。サーバＳ２は、親プロセスＰになるプロセスＰ１０を実行しているマスター計算機である。サーバＳ２は、プロセスＰ１０の子プロセスＰになるプロセスＰ１１，Ｐ１２，Ｐ１３，Ｐ１４を、スレーブ計算機になる他サーバＳに実行させる。サーバＳ１は、プロセスＰ１０の子プロセスＰになるプロセスＰ１１を実行しているスレーブ計算機である。また、サーバＳ１は、プロセスＰ１１以外にプロセスＰ３１を実行している。
【００１５】
サーバＳ３は、プロセスＰ１０の子プロセスＰになるプロセスＰ１２を実行しているスレーブ計算機である。サーバＳ４は、プロセスＰ１０の子プロセスＰになるプロセスＰ１３を実行しているスレーブ計算機である。サーバＳ５は、プロセスＰ１０の子プロセスＰになるプロセスＰ１４を実行しているスレーブ計算機である。また、各サーバＳは、プロセスＰ１０の並列処理数の上限として、頭打ち並列処理数「３」を保持している。
【００１６】
ここでは、サーバＳ１を実行主体にした場合を例に挙げて、実行中プロセスＰの並列処理数適正化処理について説明する。
【００１７】
（１）まず、サーバＳ１は、プロセスＰ２１の起動指定を受け付ける。サーバＳ１は、プロセスＰ２１の起動指定を受け付けると、実行中プロセスＰの中から子プロセスＰを選択する。図１の例では、サーバＳ１は、実行中プロセスＰ（図１ではプロセスＰ１１，Ｐ３１）の中から、プロセスＰ１０の子プロセスＰになるプロセスＰ１１を選択する。
【００１８】
（２）次に、サーバＳ１は、選択したプロセスＰ１１の親プロセスＰになるプロセスＰ１０の並列処理数を、サーバＳ２から取得する。図１の例では、並列処理数は、プロセスＰ１０の子プロセスＰ（プロセスＰ１１，Ｐ１２，Ｐ１３，Ｐ１４）の数「４」である。そして、取得した並列処理数「４」が、保持している頭打ち並列処理数「３」より大きいため、サーバＳ１は、プロセスＰ１０の並列処理数は適正ではないと判断する。
【００１９】
（３）そして、サーバＳ１は、プロセスＰ１０の子プロセスＰになるプロセスＰ１１を停止することで、プロセスＰ１０の並列処理数を１つ少なくする。これにより、サーバＳ１は、親プロセスＰになるプロセスＰ１０の並列処理数を適正化することができる。また、サーバＳ１は、サーバＳ１内でプロセスＰ１０の子プロセスＰになるプロセスＰ１１に使用されていたＣＰＵリソースを使用可能にすることができる。結果として、サーバＳ１は、他のプロセスＰ（例えば起動指定されたプロセスＰ２１）の処理に、使用可能にしたＣＰＵリソースを使用することができるようになる。
【００２０】
（サーバＳのハードウェア構成例）
図２は、図１に示したサーバＳのハードウェア構成例を示すブロック図である。図２において、サーバＳは、ＣＰＵｓ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔｓ）２０１と、ＲＯＭ（Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０３と、磁気ディスクドライブ２０４と、磁気ディスク２０５と、光ディスクドライブ２０６と、光ディスク２０７と、ディスプレイ２０８と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）２０９と、キーボード２１０と、マウス２１１と、スキャナ２１２と、プリンタ２１３と、を備えている。また、各構成部はバス２００によってそれぞれ接続されている。
【００２１】
ここで、ＣＰＵｓ２０１は、１または複数のＣＰＵを含む。ＣＰＵｓ２０１は、サーバＳの全体の制御を司る。ＲＯＭ２０２は、ブートプログラムなどのプログラムを記憶している。また、ＲＯＭ２０２は、実行を保留されたプロセスＰの待ち行列になるキュー、およびプロセスＰの実行および停止を制御するスケジューラを記憶している。ＲＡＭ２０３は、ＣＰＵｓ２０１のワークエリアとして使用される。
【００２２】
磁気ディスクドライブ２０４は、ＣＰＵｓ２０１の制御にしたがって磁気ディスク２０５に対するデータのリード／ライトを制御する。磁気ディスク２０５は、磁気ディスクドライブ２０４の制御で書き込まれたデータを記憶する。
【００２３】
光ディスクドライブ２０６は、ＣＰＵｓ２０１の制御にしたがって光ディスク２０７に対するデータのリード／ライトを制御する。光ディスク２０７は、光ディスクドライブ２０６の制御で書き込まれたデータを記憶したり、光ディスク２０７に記憶されたデータをコンピュータに読み取らせたりする。
【００２４】
ディスプレイ２０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ２０８は、例えば、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００２５】
インターフェース（以下、「Ｉ／Ｆ」と略する。）２０９は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク２１４に接続され、このネットワーク２１４を介して他の装置に接続される。そして、Ｉ／Ｆ２０９は、ネットワーク２１４と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ２０９には、例えばモデムやＬＡＮアダプタなどを採用することができる。
【００２６】
キーボード２１０は、文字、数字、各種指示などの入力のためのキーを備え、データの入力を行う。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス２１１は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などを行う。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００２７】
スキャナ２１２は、画像を光学的に読み取り、サーバＳ内に画像データを取り込む。なお、スキャナ２１２は、ＯＣＲ（Ｏｐｔｉｃａｌ  Ｃｈａｒａｃｔｅｒ  Ｒｅａｄｅｒ）機能を持たせてもよい。また、プリンタ２１３は、画像データや文書データを印刷する。プリンタ２１３には、例えば、レーザプリンタやインクジェットプリンタを採用することができる。
【００２８】
（アプリケーションテーブル３００の記憶内容）
次に、図３を用いて、アプリケーションテーブル３００の記憶内容について説明する。アプリケーションテーブル３００は、サーバＳが保持するテーブルである。アプリケーションテーブル３００は、１または複数のプロセスを含むアプリケーションの性質を示すアプリ情報を記憶するテーブルであり、並列処理数適正化処理において参照される。例えば、図１の例では、アプリケーションテーブルから、頭打ち並列処理数が参照される。アプリケーションテーブル３００は、図２に示したＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、または光ディスク２０７などの記憶装置によって実現される。以下、アプリケーションテーブル３００を具体的に説明する。
【００２９】
図３は、アプリケーションテーブル３００の記憶内容の一例を示す説明図である。図３に示すように、アプリケーションテーブル３００は、アプリ項目と、ｖｅｒｓｉｏｎ項目と、種類項目と、クラスタリング項目と、頭打ち並列処理数項目と、処理時平均ＣＰＵ使用率項目と、通信時平均ＣＰＵ使用率項目と、処理時最大ＣＰＵ使用率項目と、通信時最大ＣＰＵ使用率項目と、平均通信時間項目と、待機時間打ち切り定数項目と、並列処理数打ち切り定数項目と、ロード時間項目と、を有する。アプリケーションテーブル３００は、アプリケーションごとにレコードを構成し、アプリ情報をレコードとして記憶する。
【００３０】
アプリ項目には、アプリケーションの識別子が記憶される。ｖｅｒｓｉｏｎ項目には、アプリケーションのバージョン情報が記憶される。種類項目には、アプリケーションに含まれるプロセスＰの種別が記憶される。プロセスＰの種別とは、親プロセスＰまたは子プロセスＰである。
【００３１】
クラスタリング項目には、アプリケーション内のプロセスＰがクラスタリングに対応しているか否かが記憶される。クラスタリングとは、複数の計算機を１つの計算機として扱い、いずれかの計算機で処理が中止された場合に他の計算機が当該処理を引き継ぐことができるようにする技術である。頭打ち並列処理数項目には、アプリケーション内の並列処理数の上限が記憶される。
【００３２】
処理時平均ＣＰＵ使用率項目には、アプリケーション内のプロセスＰが親プロセスＰまたは子プロセスＰとの通信を行っていないときの平均ＣＰＵ使用率が記憶される。通信時平均ＣＰＵ使用率項目には、アプリケーション内のプロセスＰが親プロセスＰまたは子プロセスＰとの通信を行っているときの平均ＣＰＵ使用率が記憶される。
【００３３】
処理時最大ＣＰＵ使用率項目には、アプリケーション内のプロセスＰが親プロセスＰまたは子プロセスＰとの通信を行っていないときの最大ＣＰＵ使用率が記憶される。通信時最大ＣＰＵ使用率項目には、アプリケーション内のプロセスＰが親プロセスＰまたは子プロセスＰとの通信を行っているときの最大ＣＰＵ使用率が記憶される。
【００３４】
平均通信時間項目には、アプリケーション内のプロセスＰが親プロセスＰまたは子プロセスＰとの通信を開始してから終了するまでの平均時間が記憶される。ここで、平均通信時間項目の「Ｃ」とは、並列処理数を示す。待機時間打ち切り定数項目には、アプリケーション内のプロセスＰの通信の待機時間が正常か否かを判定するしきい値の算出に使用する定数が記憶される。並列処理数打ち切り定数項目には、アプリケーション内の並列処理数が正常か否かを判定するしきい値の算出に使用する定数が記憶される。ロード時間項目には、アプリケーション内のプロセスＰが処理を開始するまでに要する時間が記憶される。
【００３５】
（マシンテーブル４００の記憶内容）
次に、図４を用いて、マシンテーブル４００の記憶内容について説明する。マシンテーブル４００は、サーバＳが保持するテーブルである。マシンテーブル４００は、サーバＳの性質を示すサーバ情報を記憶するテーブルであり、例えば、上述した並列処理数適正化処理において参照される。マシンテーブル４００は、図２に示したＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、または光ディスク２０７などの記憶装置によって実現される。
【００３６】
図４は、マシンテーブル４００の記憶内容の一例を示す説明図である。図４に示すように、マシンテーブル４００は、限界ＣＰＵ使用率項目と、ＣＰＵ性能項目と、節電開始時間項目と、節電終了時間項目と、節電除外日項目と、節電除外曜日項目と、節電時の目標ＣＰＵ使用率項目と、停止可能ＣＰＵ識別子項目と、ＣＰＵ起動時間項目と、を有する。マシンテーブル４００は、サーバＳごとに生成されている。
【００３７】
限界ＣＰＵ使用率項目には、サーバＳのＣＰＵ使用率の上限（以下では「限界ＣＰＵ使用率」という）が記憶される。ＣＰＵ性能項目には、サーバＳのＣＰＵの性能が記憶される。節電開始時間項目には、サーバＳにより節電が開始される時間が記憶される。節電終了時間項目には、サーバＳにより節電が終了される時間が記憶される。
【００３８】
節電除外日項目には、サーバＳにより節電が行われない日付が記憶される。節電除外曜日項目には、サーバＳにより節電が行われない曜日が記憶される。節電時の目標ＣＰＵ使用率項目には、節電を実施しているときのサーバＳのＣＰＵ使用率の上限（以下では「目標ＣＰＵ使用率」という）が記憶される。
【００３９】
停止可能ＣＰＵ識別子項目には、節電のために停止可能なＣＰＵの識別子が記憶される。ＣＰＵ起動時間項目には、ＣＰＵをオフラインにした後に、ＣＰＵを再びオンラインにして稼働できる状態になるまでの時間が記憶される。なお、オフラインとは、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）からＣＰＵが認識されず、プロセスが割り当てられない状態をいう。これにより、サーバＳは、ＯＳから認識されないＣＰＵでの消費電力の増加を抑制することができる。また、オンラインとは、ＯＳからＣＰＵが認識され、プロセスが割り当てられる状態をいう。
【００４０】
ここで、サーバＳは、節電を実施していないとき（以下では「通常時」という）と、節電を実施しているとき（以下では「節電時」という）とで、異なる処理を実行する。まず、通常時のサーバＳによって実行される処理について説明する。なお、節電時については、図１８以降で説明する。
【００４１】
（起動指定プロセス実行処理）
まず、図５を用いて、サーバＳによって実行される起動指定プロセス実行処理について説明する。起動指定プロセス実行処理は、サーバＳがプロセスＰの起動指定を受け付けると実行され、起動指定されたプロセスＰを実行するＣＰＵリソースがあるか否かを判断する処理であり、ＣＰＵリソースがあれば、起動指定されたプロセスＰを実行する処理である。
【００４２】
起動指定プロセス実行処理により、サーバＳは、起動指定されたプロセスＰを実行するＣＰＵリソースが不足しているときは、起動指定されたプロセスＰを実行せずにプロセスＰ間の競合を回避することができる。また、サーバＳは、ＣＰＵリソースが不足していないときには、起動指定されたプロセスＰを実行することができる。
【００４３】
図５は、起動指定プロセス実行処理の一例を示す説明図である。なお、図１で説明した箇所と同様の箇所についての説明は省略する。
【００４４】
（１）まず、サーバＳ１は、プロセスＰ２１の起動指定を受け付ける。
【００４５】
（２）次に、サーバＳ１は、アプリケーションテーブル３００の処理時平均ＣＰＵ使用率項目から、起動指定されたプロセスＰ２１と実行中プロセスＰ１１，Ｐ３１とのそれぞれの処理時平均ＣＰＵ使用率を取得する。そして、サーバＳ１は、取得したそれぞれのプロセスＰの処理時平均ＣＰＵ使用率の総和を算出する。これにより、サーバＳ１においてプロセスＰ１１，Ｐ２１，Ｐ３１が並列実行された場合のサーバＳ１の平均ＣＰＵ使用率が推定される。
【００４６】
次に、サーバＳ１は、マシンテーブル４００の限界ＣＰＵ使用率項目から、サーバＳの限界ＣＰＵ使用率を取得する。そして、サーバＳ１は、算出した総和が取得した限界ＣＰＵ使用率を超えるか否かを判断する。
【００４７】
（３）次に、総和が限界ＣＰＵ使用率を超えない場合、サーバＳ１は、プロセスＰ２１の実行に使用できるサーバＳ１内のＣＰＵリソースがあるとして、起動指定されたプロセスＰ２１を実行する。このように、サーバＳ１は、プロセスＰ２１を実行するサーバＳ１内のＣＰＵリソースが不足しておらず、プロセスＰ２１を実行してもプロセスＰ間で競合が起こらない場合に、プロセスＰ２１を実行することができる。
【００４８】
一方、総和が限界ＣＰＵ使用率を超える場合、サーバＳ１は、プロセスＰ２１の実行に使用できるサーバＳ１内のＣＰＵリソースが不足しているとして、起動指定されたプロセスＰ２１をキューに登録して、実行を保留する。このように、サーバＳ１は、プロセスＰ２１を実行するサーバＳ１内のＣＰＵリソースが不足し、プロセスＰ２１を実行するとプロセスＰ間で競合が起きる場合には、プロセスＰ２１の実行を保留することができる。
【００４９】
（異常プロセス停止処理）
次に、図６を用いて、サーバＳによって実行される異常プロセス停止処理について説明する。異常プロセス停止処理は、サーバＳの実行中プロセスＰの中に、プロセスＰ間通信時の待機時間が平均通信時間より長い、待機時間が異常なプロセスＰがあるか否かを判断する処理であり、待機時間が異常なプロセスＰがあれば実行を停止する処理である。異常プロセス停止処理により、サーバＳは、待機時間が異常なプロセスＰを停止させ、待機時間が異常なプロセスＰに使用されていたＣＰＵリソースを他のプロセスＰの実行に使用可能にすることができる。
【００５０】
図６は、異常プロセス停止処理の一例を示す説明図である。なお、図１で説明した箇所と同様の箇所についての説明は省略する。
【００５１】
（１）まず、サーバＳ１は、実行中プロセスＰの中から、親プロセスＰからの指示待ち状態である子プロセスＰを選択する。図６の例では、サーバＳ１は、親プロセスＰになるプロセスＰ１０からの指示待ち状態であるプロセスＰ１１を選択している。
【００５２】
（２）次に、サーバＳ１は、プロセスＰ１１に関するアプリケーションテーブル３００の平均通信時間項目の平均通信時間と待機時間打ち切り定数項目の定数とを乗算した値をしきい値として算出する。しきい値は、プロセスＰ１１がプロセスＰ１０からの指示を待つ待機時間が正常か否かを判断する指標となる値である。定数は、プロセスＰ１１の平均通信時間より待機時間がどの程度長くなれば異常とするかを示す値である。そして、サーバＳ１は、指示待ち状態であるプロセスＰ１１の待機時間が、算出したしきい値を超えているか否かを判断する。
【００５３】
（３）ここで、サーバＳ１は、待機時間がしきい値を超えている場合、プロセスＰ１１の待機時間が異常であると判断し、プロセスＰ１１を停止して、プロセスＰ１１をキューに登録する。待機時間がしきい値を超える場合とは、例えば、ＣＰＵリソースの不足によりプロセスＰ１０の処理に異常が起きており、プロセスＰ１１に指示が送信されていない場合が挙げられる。また、待機時間がしきい値を超える場合とは、例えば、ＣＰＵリソースの不足によりプロセスＰ１１の処理に異常が起きている場合が挙げられる。これにより、サーバＳ１は、プロセスＰ１１を停止して、サーバＳ１内でプロセスＰ１１に使用されていたＣＰＵリソースを使用可能にすることができる。
【００５４】
（保留プロセス実行処理）
次に、図７を用いて、サーバＳによって実行される保留プロセス実行処理について説明する。保留プロセス実行処理は、起動指定プロセス実行処理により実行が保留された保留中のプロセスＰを実行するか否かを判断する処理であり、実行すると判断された場合に保留中のプロセスＰを実行する処理である。
【００５５】
保留プロセス実行処理により、サーバＳは、異常プロセス停止処理により使用可能にされたＣＰＵリソースを、保留中のプロセスＰの処理に使用して、ＣＰＵリソースを効率よく使用することができる。なお、保留プロセス実行処理により、サーバＳは、後述する並列処理数適正化処理により使用可能にされたＣＰＵリソースを、保留中のプロセスＰの処理に使用して、ＣＰＵリソースを効率よく使用することもできる。
【００５６】
図７は、保留プロセス実行処理の一例を示す説明図である。なお、図１で説明した箇所と同様の箇所についての説明は省略する。
【００５７】
（１）まず、サーバＳ１は、実行が保留されてキューに登録されたプロセスＰ２１の実行に使用できるサーバＳ１内のＣＰＵリソースがあるか否かを判断する。具体的には、サーバＳ１は、アプリケーションテーブル３００の処理時平均ＣＰＵ使用率項目から、キューに登録されたプロセスＰ２１と実行中プロセスＰ３１とのそれぞれの処理時平均ＣＰＵ使用率を取得する。そして、サーバＳ１は、取得したそれぞれのプロセスＰの処理時平均ＣＰＵ使用率の総和を算出する。これにより、サーバＳ１においてプロセスＰ２１，Ｐ３１が並列実行された場合のサーバＳ１の平均ＣＰＵ使用率が推定される。
【００５８】
また、サーバＳ１は、マシンテーブル４００の限界ＣＰＵ使用率項目から、サーバＳ１の限界ＣＰＵ使用率を取得する。次に、サーバＳ１は、算出したそれぞれのプロセスＰの処理時平均ＣＰＵ使用率の総和が、取得したサーバＳ１の限界ＣＰＵ使用率を超えるか否かを判断する。
【００５９】
（２）そして、総和が限界ＣＰＵ使用率を超えない場合、サーバＳ１は、プロセスＰ２１の実行に使用できるサーバＳ１内のＣＰＵリソースがあるとして、キューに登録されたプロセスＰ２１を実行する。一方、総和が限界ＣＰＵ使用率を超える場合、サーバＳ１は、プロセスＰ２１の実行に使用できるサーバＳ１内のＣＰＵリソースが不足しているとして、キューに登録されたプロセスＰ２１の実行を保留し続ける。
【００６０】
これにより、サーバＳ１は、異常プロセス停止処理により使用可能にされたＣＰＵリソースを、保留中のプロセスＰ２１の処理に使用して、プロセスＰ２１を実行することができる。結果として、サーバＳ１は、ＣＰＵリソースを効率よく使用することができる。
【００６１】
（並列処理数適正化処理）
次に、図８を用いて、サーバＳによって実行される並列処理数適正化処理について説明する。並列処理数適正化処理は、サーバＳの実行中プロセスＰについて並列処理数を適正化するために、並列処理数が頭打ち並列処理数を超えている場合に実行中プロセスＰを停止する処理である。並列処理数適正化処理により、サーバＳは、実行中プロセスＰを停止して親プロセスＰの並列処理数を１つ減らし、並列処理数を適正化することができる。また、並列処理数適正化処理により、サーバＳは、親プロセスＰの処理の効率化に貢献していない子プロセスＰを停止して、ＣＰＵ使用率を減少させることができる。
【００６２】
図８は、並列処理数適正化処理の一例を示す説明図である。なお、図１で説明した箇所と同様の箇所についての説明は省略する。
【００６３】
（１）まず、サーバＳ１は、実行中プロセスＰの中から子プロセスＰを選択する。例えば、図８では、サーバＳ１は、実行中プロセスＰの中から、プロセスＰ１０の子プロセスＰになるプロセスＰ１１を選択する。
【００６４】
次に、サーバＳ１は、アプリケーションテーブル３００のクラスタリング項目から、プロセスＰ１１がクラスタリングに対応しているか否かを判断する。サーバＳ１は、クラスタリングに対応している場合はプロセスＰ１１を停止しても他のサーバＳがプロセスＰ１１を引き継ぐことができるため、プロセスＰ１１を停止させうると判断して、プロセスＰ１１を並列処理数適正化処理の対象として登録する。
【００６５】
また、サーバＳ１は、実行中プロセスＰの中から選択したプロセスＰ１１とプロセスＰ１０との実通信時間を計測し、計測された実通信時間がしきい値以上になるまで待ってから、プロセスＰ１１を並列処理数適正化処理の対象として登録してもよい。これにより、並列処理数が適正でない場合であっても、プロセスＰ１１の実行が滞りなく行われているうちはプロセスＰ１１を停止させるべきではないとして、プロセスＰ１１を並列処理数適正化処理の対象にしない。
【００６６】
（２）そして、サーバＳ１は、登録されたプロセスＰ１１の親プロセスＰになるプロセスＰ１０の並列処理数を、親プロセスＰになるプロセスＰ１０を実行しているサーバＳ２から取得する。具体的には、サーバＳ１は、プロセスＰ１０の並列処理数を示すプロセスＰ１０のコネクション数「４」を、サーバＳ２から取得する。
【００６７】
（３）次に、サーバＳ１は、アプリケーションテーブル３００の頭打ち並列処理数項目から、プロセスＰ１０の並列処理数の上限になる頭打ち並列処理数「３」を取得する。そして、サーバＳ１は、サーバＳ２から取得した並列処理数「４」が、アプリケーションテーブル３００から取得した頭打ち並列処理数「３」を超えているため、プロセスＰ１０の並列処理数は適正ではないと判断する。
【００６８】
（４）そして、サーバＳ１は、プロセスＰ１０の子プロセスＰになるプロセスＰ１１を停止することで、プロセスＰ１０の並列処理数を１つ少なくする。
【００６９】
これにより、サーバＳ１は、親プロセスＰになるプロセスＰ１０の並列処理数を適正化することができる。また、サーバＳ１は、プロセスＰ１０の処理の効率化に貢献していないプロセスＰ１１を停止して、プロセスＰ１１に使用されていたＣＰＵリソースを使用可能にすることができる。
【００７０】
結果として、サーバＳ１は、他のプロセスＰ（例えば保留中のプロセスＰ２１）の処理に、使用可能にしたＣＰＵリソースを使用することができるようになる。具体的には、サーバＳ１は、図７に示した保留プロセス実行処理を行って、並列処理数適正化処理により使用可能にされたＣＰＵリソースを、保留中のプロセスＰ２１の処理に使用して、プロセスＰ２１を実行する。これにより、サーバＳ１は、ＣＰＵリソースを効率よく使用することができる。
【００７１】
（ＣＰＵ使用率低下タイミング判断処理）
次に、図９〜図１１を用いて、サーバＳによって実行されるＣＰＵ使用率低下タイミング判断処理について説明する。ＣＰＵ使用率低下タイミング判断処理は、プロセスＰ間通信によりサーバＳでのＣＰＵ使用率が非通信時よりも低下した場合に、保留中のプロセスＰを実行するか否かを判断する処理であり、実行すると判断すると保留中のプロセスＰを実行する処理である。ＣＰＵ使用率低下タイミング判断処理により、サーバＳは、プロセスＰ間通信の開始により一時的に使用可能になったＣＰＵリソースを使用して保留中のプロセスＰを実行することができる。
【００７２】
図９は、ＣＰＵ使用率の低下の一例を示す説明図である。ここで、サーバＳで実行中のプロセスＰには、他プロセスＰとのプロセスＰ間通信を行っている状態でＣＰＵ使用率が低下するという性質がある。図９の例では、サーバＳ１で実行中のプロセスＰ１１には、親プロセスＰになるプロセスＰ１０とのプロセスＰ間通信時にＣＰＵ使用率が低下するものとする。
【００７３】
このように、プロセスＰ間通信時にＣＰＵ使用率が低下し、ＣＰＵリソースが使用可能になるため、サーバＳ１は、使用可能になったＣＰＵリソースを他のプロセスＰ（例えばキューに登録された保留中のプロセスＰ２１）の処理に使用できるようになる。結果として、サーバＳ１は、ＣＰＵリソースを効率よく使用できる。図１０および図１１では、サーバＳ１を実行主体にした場合を例に挙げて、プロセスＰ間通信時に保留中のプロセスＰ２１を実行するＣＰＵ使用率低下タイミング判断処理について説明する。
【００７４】
図１０および図１１は、ＣＰＵ使用率低下タイミング判断処理を示す説明図である。なお、図１で説明した箇所と同様の箇所についての説明は省略する。
【００７５】
図１０において、（１）まず、サーバＳ１は、実行中のプロセスＰ１１と親プロセスＰになるプロセスＰ１０との通信の開始を検出する。
【００７６】
（２）次に、サーバＳ１は、アプリケーションテーブル３００の処理時平均ＣＰＵ使用率項目から、キューに登録されたプロセスＰ２１と実行中プロセスＰ３１とのそれぞれの処理時平均ＣＰＵ使用率を取得する。また、サーバＳ１は、アプリケーションテーブル３００の通信時平均ＣＰＵ使用率項目から、通信を開始した実行中プロセスＰ１１の通信時平均ＣＰＵ使用率を取得する。そして、サーバＳ１は、取得したそれぞれのプロセスＰのＣＰＵ使用率の総和を算出する。これにより、サーバＳ１においてプロセスＰ２１，Ｐ３１が並列実行された場合のサーバＳ１の平均ＣＰＵ使用率が推定される。
【００７７】
また、サーバＳ１は、マシンテーブル４００の限界ＣＰＵ使用率項目から、サーバＳの限界ＣＰＵ使用率を取得する。次に、サーバＳ１は、算出したＣＰＵ使用率の総和が、取得したサーバＳの限界ＣＰＵ使用率を超えるか否かを判断する。
【００７８】
（３）そして、サーバＳ１は、ＣＰＵ使用率の総和がサーバＳの限界ＣＰＵ使用率以下である場合、プロセスＰ２１の実行に使用できるサーバＳ１内のＣＰＵリソースがあると判断する。これにより、サーバＳ１は、ＣＰＵリソースの観点からプロセスＰ２１が実行可能か否かを判断することができる。
【００７９】
次に、サーバＳは、プロセスＰ１１が通信を終了する前に、キューに登録されたプロセスＰ２１の実行を開始できるか否かを判断する。これにより、サーバＳは、プロセス間通信により一時的にＣＰＵ使用率が低下している間に、プロセスＰ２１を実行する時間があるか否かを判断することができる。
【００８０】
図１０の例では、サーバＳ１は、アプリケーションテーブル３００からプロセスＰ２１のロード時間を取得し、取得したロード時間がプロセスＰ１１の平均通信時間以下である場合、プロセスＰ２１の実行を開始できると判断する。そして、サーバＳ１は、プロセスＰ２１の実行を開始できると判断した場合、プロセスＰ２１を実行する。
【００８１】
また、サーバＳ１は、平均通信時間の代わりとして、予めプロセスＰ１１の実通信時間を計測しておいてもよい。そして、サーバＳ１は、アプリケーションテーブル３００からプロセスＰ２１のロード時間を取得し、取得したロード時間がプロセスＰ１１の実通信時間以下である場合、プロセスＰ２１の実行を開始できると判断してもよい。これにより、プロセスＰ１１の実通信時間が平均通信時間より短い場合にも、プロセス間通信により一時的にＣＰＵ使用率が低下している間に、プロセスＰ２１を実行する時間があるか否かを判断することができる。
【００８２】
一方、ＣＰＵ使用率の総和がサーバＳの限界ＣＰＵ使用率を超える場合、サーバＳ１は、プロセスＰ２１の実行に使用できるサーバＳ１内のＣＰＵリソースが不足しているとして、キューに登録されたプロセスＰ２１の実行を保留し続ける。また、サーバＳ１は、プロセスＰ１１が通信を終了するまでにプロセスＰ２１の実行を開始できないと判断した場合、キューに登録されたプロセスＰ２１の実行を保留し続ける。サーバＳ１によってプロセスＰ２１が実行された場合、図１１に移行する。
【００８３】
図１１において、（１）まず、サーバＳ１は、アプリケーションテーブル３００の平均通信時間項目から平均通信時間を取得する。次に、サーバＳ１は、プロセスＰ２１の実行開始から、取得した平均通信時間が経過するまで待機する。そして、サーバＳ１は、平均通信時間が経過したことを検出する。これにより、サーバＳ１は、プロセスＰ２１がプロセスＰ間通信を終了してデータ処理を開始するタイミングを検出することができる。
【００８４】
また、サーバＳ１は、平均通信時間の代わりとして、予めプロセスＰ１１の実通信時間を計測しておいてもよい。そして、サーバＳ１は、プロセスＰ２１の実行開始から、計測した実通信時間が経過するまで待機し、実通信時間が経過したことを検出してもよい。これにより、サーバＳ１は、プロセスＰ１１の実通信時間が平均通信時間より短い場合にも、プロセスＰ２１がプロセスＰ間通信を終了してデータ処理を開始するタイミングを検出することができる。プロセスＰ１１の実通信時間としては、プロセスＰ１１が通信を開始してから、通信を終了してデータ処理を開始するまでの時間が計測される。
【００８５】
（２）サーバＳ１は、平均通信時間（または実通信時間）が経過したことを検出すると、プロセスＰ１１が通信を終了してＣＰＵ使用率が上昇することによりプロセスＰ間の競合が起こることを回避すべく、実行中のプロセスＰ２１を停止してキューに登録する。
【００８６】
これにより、サーバＳ１は、プロセスＰ間通信の開始により一時的に使用可能になったＣＰＵリソースを使用して、保留中のプロセスＰ２１を実行することができる。また、サーバＳ１は、プロセスＰ間通信の終了によりＣＰＵリソースが不足する前に、実行したプロセスＰ２１を停止して、プロセスＰ間の競合を回避することができる。結果として、サーバＳ１は、ＣＰＵリソースを効率よく使用することができる。
【００８７】
（サーバＳの機能的構成例）
次に、図１２を用いて、上述した処理を実現するサーバＳの機能的構成例について説明する。
【００８８】
図１２は、サーバＳの機能的構成例を示すブロック図である。サーバＳは、負荷判断部１２０１と、実行部１２０２と、停止部１２０３と、検出部１２０４と、異常判断部１２０５と、選択部１２０６と、取得部１２０７と、並列処理判断部１２０８と、計測部１２０９と、ロード時間判断部１２１０と、起動時間判断部１２１１と、を含む構成である。検出部１２０４〜起動時間判断部１２１１は、具体的には、例えば、図２に示したＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶装置に記憶されたプログラムをＣＰＵｓ２０１に実行させることにより、または、Ｉ／Ｆ２０９により、その機能を実現する。
【００８９】
負荷判断部１２０１は、起動が受け付けられたプロセスＰのデータ処理に関する負荷と実行中プロセスＰのデータ処理に関する負荷との総和が、コンピュータの負荷上限を超えたか否かを判断する。ここで、起動が受け付けられたプロセスＰとは、上述した起動指定されたプロセスＰである。データ処理に関する負荷とは、ＣＰＵ使用率であり、例えば、上述した平均ＣＰＵ使用率や最大ＣＰＵ使用率である。コンピュータの負荷上限とは、予めサーバＳの利用者によって設定されたＣＰＵ使用率の上限であり、上述した限界ＣＰＵ使用率である。また、コンピュータの負荷上限とは、上述した目標ＣＰＵ使用率であってもよい。
【００９０】
これにより、負荷判断部１２０１は、起動指定されたプロセスＰの実行に使用できるＣＰＵリソースがあるか否かを判断することができる。なお、判断結果は、図２に示したＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶装置に記憶される。なお、負荷判断部１２０１は、図５に示した起動指定プロセス実行処理、図７に示した保留プロセス実行処理、図８に示した並列処理数適正化処理、および図９〜図１１に示したＣＰＵ使用率低下タイミング判断処理の実現に用いられる。それぞれの処理における負荷判断部１２０１の動作については後述する。
【００９１】
実行部１２０２は、負荷判断部１２０１によって総和が限界ＣＰＵ使用率を超えていないと判断された場合、起動指定されたプロセスＰの実行に使用できるＣＰＵリソースがあるとして、起動指定されたプロセスＰを実行する。これにより、実行部１２０２は、ＣＰＵリソースが不足しておらず、起動指定されたプロセスＰを実行してもプロセスＰ間で競合が起こらない場合に、起動指定されたプロセスＰを実行することができる。実行部１２０２は、図５に示した起動指定プロセス実行処理、図７に示した保留プロセス実行処理、図８に示した並列処理数適正化処理、および図９〜図１１に示したＣＰＵ使用率低下タイミング判断処理の実現に用いられる。それぞれの処理における実行部１２０２の動作については後述する。
【００９２】
停止部１２０３は、負荷判断部１２０１によって総和が限界ＣＰＵ使用率を超えたと判断された場合、起動指定されたプロセスＰの実行に使用できるＣＰＵリソースが不足しているとして、起動指定されたプロセスＰをキューに登録する。これにより、停止部１２０３は、プロセスＰ間での競合を回避することができる。停止部１２０３は、図５に示した起動指定プロセス実行処理、図６に示した異常プロセス停止処理、図８に示した並列処理数適正化処理、および図９〜図１１に示したＣＰＵ使用率低下タイミング判断処理の実現に用いられる。それぞれの処理における停止部１２０３の動作については後述する。
【００９３】
検出部１２０４は、実行中プロセスＰ群のうち親プロセスＰからの指示待ち状態の実行中プロセスＰを検出する。これにより、検出部１２０４は、待機時間に異常がある可能性のあるプロセスＰを検出して、図６に示した異常プロセス停止処理のトリガを発生させることができる。なお、検出結果は、図２に示したＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶装置に記憶される。検出部１２０４は、図６に示した異常プロセス停止処理の実現に用いられる。異常プロセス停止処理における検出部１２０４の動作については後述する。
【００９４】
異常判断部１２０５は、検出部１２０４によって検出された指示待ち状態の実行中プロセスＰの待機時間が異常か否かを判断する。これにより、異常判断部１２０５は、検出部１２０４によって検出された指示待ち状態の実行中プロセスＰが、停止部１２０３によって実行を停止させるべき待機時間が異常なプロセスＰか否かを判断することができる。なお、判断結果は、図２に示したＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶装置に記憶される。異常判断部１２０５は、図６に示した異常プロセス停止処理の実現に用いられる。異常プロセス停止処理における異常判断部１２０５の動作については後述する。
【００９５】
選択部１２０６は、実行中プロセスＰ群の中からいずれかの実行中プロセスＰを選択する。これにより、選択部１２０６は、並列処理数適正化処理の対象となるプロセスＰを選択することができる。なお、選択結果は、図２に示したＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶装置に記憶される。選択部１２０６は、図８に示した並列処理数適正化処理の実現に用いられる。並列処理数適正化処理における選択部１２０６の動作については後述する。
【００９６】
取得部１２０７は、選択部１２０６によって選択されたいずれかの実行中プロセスＰの親プロセスＰを実行する計算機から、親プロセスＰが通信を行う通信相手のプロセスＰ数を取得する。ここで、計算機とは、例えば、上述したサーバＳである。通信相手のプロセスＰ数とは、親プロセスＰの並列処理数を示す。これにより、取得部１２０７は、並列処理数適正化処理に使用する並列処理数を取得することができる。なお、取得結果は、図２に示したＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶装置に記憶される。取得部１２０７は、図８に示した並列処理数適正化処理の実現に用いられる。並列処理数適正化処理における取得部１２０７の動作については後述する。
【００９７】
並列処理判断部１２０８は、取得部１２０７によって取得された並列処理数が、親プロセスＰを含むソフトウェアに関する並列処理上限数を超えたか否かを判断する。ここで、並列処理上限数とは、例えば上述した頭打ち並列処理数である。これにより、並列処理判断部１２０８は、親プロセスＰの並列処理数が適正か否かを判断することができる。なお、判断結果は、図２に示したＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶装置に記憶される。並列処理判断部１２０８は、図８に示した並列処理数適正化処理の実現に用いられる。並列処理数適正化処理における並列処理判断部１２０８の動作については後述する。
【００９８】
計測部１２０９は、実行中プロセスＰの親プロセスＰとの実通信時間を計測する。ここで、実通信時間とは、サーバＳがプロセスＰ間通信を開始してからプロセスＰ間通信を終了してデータ処理を開始するまでの時間である。これにより、計測部１２０９は、プロセスＰの通信時間が適正か否かを判断する指標として使用される実通信時間を取得することができる。なお、計測結果は、図２に示したＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶装置に記憶される。計測部１２０９は、図８に示した並列処理数適正化処理の実現に用いられる。並列処理数適正化処理における計測部１２０９の動作については後述する。
【００９９】
ロード時間判断部１２１０は、起動指定されたプロセスＰのロード時間が、実行中プロセスＰの平均通信時間（または実行中プロセスＰの実通信時間）を超えるか否かを判断する。ここで、ロード時間とは、プロセスＰの処理の開始にかかる時間である。これにより、ロード時間判断部１２１０は、実行中プロセスＰのプロセスＰ間通信が終了する前に、起動指定されたプロセスＰの処理を開始できるか否かを判断することができる。なお、判断結果は、図２に示したＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶装置に記憶される。ロード時間判断部１２１０は、図９〜図１１に示したＣＰＵ使用率低下タイミング判断処理の実現に用いられる。ＣＰＵ使用率低下タイミング判断処理におけるロード時間判断部１２１０の動作については後述する。
【０１００】
起動時間判断部１２１１は、プロセッサ群のプロセッサ起動時間が、実行中プロセスＰの平均通信時間（または実行中プロセスＰの実通信時間）を超えるか否かを判断する。ここで、プロセッサ群とは、例えば上述したＣＰＵｓ２０１である。プロセッサ起動時間とは、例えば上述したＣＰＵ起動時間である。これにより、起動時間判断部１２１１は、実行中プロセスＰのプロセスＰ間通信が終了する前に、停止されているＣＰＵを起動できるか否かを判断することができる。なお、判断結果は、図２に示したＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶装置に記憶される。起動時間判断部１２１１は、後述する節電時のＣＰＵ使用率低下タイミング判断処理の実現に用いられる。節電時のＣＰＵ使用率低下タイミング判断処理における起動時間判断部１２１１の動作については後述する。
【０１０１】
ここで、図５に示した起動指定プロセス実行処理を実現する機能について説明する。起動指定プロセス実行処理は、負荷判断部１２０１と、実行部１２０２と、停止部１２０３と、によって実現される。
【０１０２】
負荷判断部１２０１は、プロセスＰの起動が受け付けられた場合、起動が受け付けられたプロセスＰのデータ処理に関する負荷と、実行中プロセスＰ群のうち停止部１２０３によって停止していない実行中プロセスＰのデータ処理に関する負荷と、の総和が、コンピュータの負荷上限を超えたか否かを判断する。ここで、起動が受け付けられたプロセスＰとは、上述した起動指定されたプロセスＰである。
【０１０３】
サーバＳ１の負荷判断部１２０１は、具体的には、例えば、図５の（２）において、アプリケーションテーブル３００の処理時平均ＣＰＵ使用率項目から、起動指定されたプロセスＰ２１と実行中プロセスＰ１１，Ｐ３１とのそれぞれの処理時平均ＣＰＵ使用率を取得する。次に、サーバＳ１の負荷判断部１２０１は、取得したそれぞれのプロセスＰの処理時平均ＣＰＵ使用率の総和を算出する。そして、サーバＳ１の負荷判断部１２０１は、マシンテーブル４００の限界ＣＰＵ使用率項目から、サーバＳの限界ＣＰＵ使用率を取得する。
【０１０４】
次に、サーバＳ１の負荷判断部１２０１は、算出したそれぞれのプロセスＰの処理時平均ＣＰＵ使用率の総和が、取得したサーバＳの限界ＣＰＵ使用率を超えるか否かを判断する。これにより、負荷判断部１２０１は、起動指定されたプロセスＰを実行するＣＰＵリソースがあるか否かを判断することができる。
【０１０５】
実行部１２０２は、負荷判断部１２０１によって総和が負荷上限以下であると判断された場合、起動が受け付けられたプロセスＰを実行する。サーバＳ１の実行部１２０２は、具体的には、例えば、図５の（３）において、総和が負荷上限以下であると判断された場合、プロセスＰ２１の実行に使用できるサーバＳ１内のＣＰＵリソースがあるとして、起動指定されたプロセスＰ２１を実行する。これにより、実行部１２０２は、プロセスＰ間の競合が起こらない場合にのみ、起動指定されたプロセスＰを実行することができる。
【０１０６】
停止部１２０３は、負荷判断部１２０１によって総和が負荷上限を超えたと判断された場合、起動が受け付けられたプロセスＰをキューに登録する。サーバＳ１の停止部１２０３は、具体的には、例えば、図５の（３）において、総和が負荷上限を超えたと判断された場合、プロセスＰ２１の実行に使用できるＣＰＵリソースが不足しているとして、起動指定されたプロセスＰ２１をキューに登録する。これにより、停止部１２０３は、ＣＰＵリソースの不足が予測される場合、起動指定されたプロセスＰの実行を保留して、プロセスＰ間での競合を回避することができる。
【０１０７】
次に、図６に示した異常プロセス停止処理を実現する機能について説明する。異常プロセス停止処理は、停止部１２０３と、検出部１２０４と、異常判断部１２０５と、によって実現される。
【０１０８】
検出部１２０４は、実行中プロセスＰ群のうち親プロセスＰからの指示待ち状態の実行中プロセスＰを検出する。サーバＳ１の検出部１２０４は、具体的には、例えば、図６の（１）において、実行中プロセスＰ群（図６ではプロセスＰ１１，Ｐ３１）の中から、親プロセスＰになるプロセスＰ１０からの指示待ち状態であるプロセスＰ１１を検出する。これにより、検出部１２０４は、異常プロセス停止処理の対象になるプロセスＰを検出し、異常プロセス停止処理のトリガを発生させることができる。
【０１０９】
異常判断部１２０５は、検出部１２０４によって検出された指示待ち状態の実行中プロセスＰの待機時間が、指示待ち状態の実行中プロセスＰの平均通信時間に応じたしきい値を経過したか否かを判断する。ここで、平均通信時間に応じたしきい値とは、予め設定された定数と平均通信時間とを乗算して得た値である。
【０１１０】
サーバＳ１の異常判断部１２０５は、具体的には、例えば、図６の（２）において、アプリケーションテーブル３００の平均通信時間項目の平均通信時間と待機時間打ち切り定数項目の定数とを乗算する。そして、サーバＳ１の異常判断部１２０５は、乗算により、プロセスＰ１１がプロセスＰ１０からの指示を待つ待機時間が正常か否かを判断する指標になるしきい値を算出する。そして、異常判断部１２０５は、指示待ち状態であるプロセスＰ１１の待機時間が、算出したしきい値を超えているか否かを判断する。これにより、異常判断部１２０５は、プロセスＰの待機時間が正常か否かを判断することができる。
【０１１１】
停止部１２０３は、異常判断部１２０５によって、指示待ち状態の実行中プロセスＰの待機時間が、指示待ち状態の実行中プロセスＰの平均通信時間に応じたしきい値を経過したと判断された場合、指示待ち状態の実行中プロセスＰの実行を停止させる。サーバＳ１の停止部１２０３は、具体的には、例えば、図６の（３）において、プロセスＰ１１の実行を停止して、プロセスＰ１１をキューに登録する。これにより、停止部１２０３は、処理異常が起きているプロセスＰを停止して、プロセスＰに使用されていたＣＰＵリソースを使用可能にすることができる。
【０１１２】
次に、図７に示した保留プロセス実行処理を実現する機能について説明する。保留プロセス実行処理は、負荷判断部１２０１と、実行部１２０２と、によって実現される。
【０１１３】
負荷判断部１２０１は、停止部１２０３によって実行中プロセスＰの実行が停止された場合、起動が受け付けられたプロセスＰのデータ処理に関する負荷と、実行中プロセスＰ群のうち停止部１２０３によって停止していない実行中プロセスＰのデータ処理に関する負荷と、の総和が、コンピュータの負荷上限を超えたか否かを判断する。
【０１１４】
ここで、停止部１２０３によって実行が停止された実行中プロセスＰとは、例えば、上述した異常プロセス停止処理における停止部１２０３によって停止された指示待ち状態のプロセスＰである。また、停止部１２０３によって実行が停止された実行中プロセスＰとは、例えば、後述する並列処理数適正化処理における停止部１２０３によって停止されたプロセスＰであってもよい。起動が受け付けられたプロセスＰとは、上述したキューに登録されたプロセスＰである。
【０１１５】
サーバＳ１の負荷判断部１２０１は、具体的には、例えば、図７の（１）において、アプリケーションテーブル３００の処理時平均ＣＰＵ使用率項目から、キューに登録されたプロセスＰ２１と実行中プロセスＰ３１とのそれぞれの処理時平均ＣＰＵ使用率を取得する。次に、サーバＳ１の負荷判断部１２０１は、取得したそれぞれのプロセスＰの処理時平均ＣＰＵ使用率の総和を算出する。そして、サーバＳ１の負荷判断部１２０１は、マシンテーブル４００の限界ＣＰＵ使用率項目から、サーバＳの限界ＣＰＵ使用率を取得する。
【０１１６】
次に、サーバＳ１の負荷判断部１２０１は、算出したそれぞれのプロセスＰの処理時平均ＣＰＵ使用率の総和が、取得したサーバＳの限界ＣＰＵ使用率を超えるか否かを判断する。これにより、負荷判断部１２０１は、キューに登録されたプロセスＰを実行するＣＰＵリソースがあるか否かを判断することができる。
【０１１７】
実行部１２０２は、負荷判断部１２０１によって総和が負荷上限以下であると判断された場合、起動が受け付けられたプロセスＰを実行する。サーバＳ１の実行部１２０２は、具体的には、例えば、図７の（２）において、総和が限界ＣＰＵ使用率以下であると判断された場合、プロセスＰ２１の実行に使用できるサーバＳ１内のＣＰＵリソースがあるとして、キューに登録されたプロセスＰ２１を実行する。これにより、実行部１２０２は、プロセスＰ間の競合が起こらない場合にのみ、プロセスＰを実行することができる。
【０１１８】
次に、図８に示した並列処理数適正化処理を実現する機能について説明する。並列処理数適正化処理は、負荷判断部１２０１と、実行部１２０２と、停止部１２０３と、選択部１２０６と、取得部１２０７と、並列処理判断部１２０８と、計測部１２０９と、によって実現される。
【０１１９】
選択部１２０６は、実行中プロセスＰ群の中からいずれかの実行中プロセスＰを選択する。選択部１２０６は、具体的には、例えば、実行中プロセスＰ群のうちＣＰＵ使用時間が短い実行中プロセスＰから順次選択する。サーバＳ１の選択部１２０６は、具体的には、例えば、図８の（１）において、実行中プロセスＰ群（図８ではプロセスＰ１１，Ｐ３１）の中から、プロセスＰ１０の子プロセスＰになるプロセスＰ１１を選択する。
【０１２０】
取得部１２０７は、選択部１２０６によって選択されたいずれかの実行中プロセスＰの親プロセスＰを実行する計算機から、親プロセスＰが通信を行う通信相手のプロセスＰ数を取得する。ここで、親プロセスＰが通信を行う通信相手のプロセスＰ数とは、上述した親プロセスＰの並列処理数である。
【０１２１】
サーバＳ１の取得部１２０７は、具体的には、例えば、図８の（２）において、親プロセスＰになるプロセスＰ１０の並列処理数として、プロセスＰ１０のコネクション数「４」をサーバＳ２から取得する。これにより、取得部１２０７は、並列処理判断部１２０８に取得した並列処理数が適正か否かを判断させることができる。
【０１２２】
ここで、並列処理判断部１２０８は、親プロセスＰの並列処理の効率化のために、実行中の子プロセスＰを停止するか否かを判断する。また、並列処理数適正化処理において、並列処理判断部１２０８は、親プロセスＰの並列処理の効率化のために、親プロセスＰとの実通信時間がしきい値以上である実行中の子プロセスＰについて、停止するか否かを判断してもよい。
【０１２３】
まず、並列処理判断部１２０８によって、親プロセスＰの並列処理の効率化のために、実行中の子プロセスＰを停止するか否かが判断される場合について説明する。この場合、並列処理判断部１２０８は、取得部１２０７によって取得されたプロセスＰ数が、親プロセスＰを含むソフトウェアに関する並列処理上限数を超えたか否かを判断する。親プロセスＰを含むソフトウェアに関する並列処理上限数とは、アプリケーションテーブル３００の頭打ち並列処理数項目の頭打ち並列処理数である。
【０１２４】
サーバＳ１の並列処理判断部１２０８は、具体的には、例えば、図８の（３）において、アプリケーションテーブル３００の頭打ち並列処理数項目から、プロセスＰ１０の並列処理数の上限になる頭打ち並列処理数「３」を取得する。そして、サーバＳ１の並列処理判断部１２０８は、サーバＳ２から取得した並列処理数「４」が、アプリケーションテーブル３００から取得した頭打ち並列処理数「３」を超えていると判断する。これにより、並列処理判断部１２０８は、親プロセスＰの並列処理数が適正であるか否かを判断することができる。
【０１２５】
停止部１２０３は、並列処理判断部１２０８によって並列処理上限数を超えたと判断された場合、いずれかの実行中プロセスＰの実行を停止させる。サーバＳ１の停止部１２０３は、具体的には、例えば、図８の（４）において、プロセスＰ１０の子プロセスＰになるプロセスＰ１１を停止する。これにより、停止部１２０３は、親プロセスＰの並列処理数を少なくして、並列処理数を適正化することができる。また、停止部１２０３は、親プロセスＰの処理の効率化に貢献していない子プロセスＰを停止して、子プロセスＰの実行によって使用されているＣＰＵリソースを使用可能にすることができる。
【０１２６】
次に、並列処理判断部１２０８によって、親プロセスＰの並列処理の効率化のために、親プロセスＰとの実通信時間がしきい値以上である実行中の子プロセスＰについて、停止するか否かが判断される場合について説明する。この場合、計測部１２０９は、実行中プロセスＰの親プロセスＰとの実通信時間を計測する。サーバＳ１の計測部１２０９は、具体的には、例えば、図８の（１）において、プロセスＰ１０とプロセスＰ１１との実通信時間を計測する。
【０１２７】
並列処理判断部１２０８は、さらに、計測部１２０９によって計測された実通信時間が実行中プロセスＰの平均通信時間に応じたしきい値以上であるか否かを判断する。サーバＳ１の並列処理判断部１２０８は、具体的には、例えば、図８の（１）において、プロセスＰ１１についてアプリケーションテーブル３００の平均通信時間項目の平均通信時間と並列処理数打ち切り定数項目の定数とを乗算する。そして、サーバＳ１の並列処理判断部１２０８は、計測した実通信時間が、乗算により得たしきい値を超えているか否かを判断する。これにより、並列処理判断部１２０８は、親プロセスＰの並列処理数が適正でなく、かつ、実通信時間がしきい値以上である場合に、実行中の子プロセスＰを停止すると判断することができる。
【０１２８】
停止部１２０３は、さらに、実通信時間がしきい値以上である場合、実行中プロセスＰの実行を停止させる。サーバＳ１の停止部１２０３は、具体的には、例えば、図８の（４）において、プロセスＰ１０の並列処理数が適正でなく、計測したプロセスＰ１１とプロセスＰ１０との実通信時間がしきい値を超えている場合、プロセスＰ１１を停止する。これにより、停止部１２０３は、親プロセスＰの並列処理数を少なくして、並列処理数を適正化することができる。また、停止部１２０３は、親プロセスＰの処理の効率化に貢献していない子プロセスＰを停止して、子プロセスＰの実行によって使用されているＣＰＵリソースを使用可能にすることができる。
【０１２９】
なお、停止部１２０３によって実行中プロセスＰの実行が停止された場合、上述した保留プロセス実行処理が、負荷判断部１２０１と、実行部１２０２と、によって実行され、キューに登録されたプロセスＰが実行される。
【０１３０】
次に、図９〜図１１に示したＣＰＵ使用率低下タイミング判断処理を実現する機能について説明する。ＣＰＵ使用率低下タイミング判断処理は、負荷判断部１２０１と、実行部１２０２と、停止部１２０３と、ロード時間判断部１２１０と、によって実現される。
【０１３１】
負荷判断部１２０１は、総和が負荷上限を超えたと判断された場合、実行中プロセスＰ群のうち親プロセスＰと通信中のプロセスＰの通信に関する負荷と、実行中プロセスＰのうち通信中でないプロセスＰのデータ処理に関する負荷と、起動が受け付けられたプロセスＰのデータ処理に関する負荷と、の第２の総和が、負荷上限を超えたか否かを判断する。
【０１３２】
サーバＳ１の負荷判断部１２０１は、具体的には、例えば、図１０の（２）において、アプリケーションテーブル３００の処理時平均ＣＰＵ使用率項目から、キューに登録されたプロセスＰ２１と実行中プロセスＰ３１とのそれぞれの処理時平均ＣＰＵ使用率を取得する。次に、サーバＳ１の負荷判断部１２０１は、アプリケーションテーブル３００の通信時平均ＣＰＵ使用率項目から、通信を開始した実行中プロセスＰ１１の通信時平均ＣＰＵ使用率を取得する。そして、サーバＳ１の負荷判断部１２０１は、取得したそれぞれのプロセスＰのＣＰＵ使用率の総和を算出する。
【０１３３】
次に、サーバＳ１の負荷判断部１２０１は、マシンテーブル４００の限界ＣＰＵ使用率項目から、サーバＳの限界ＣＰＵ使用率を取得する。そして、サーバＳ１の負荷判断部１２０１は、算出したＣＰＵ使用率の総和が、取得したサーバＳの限界ＣＰＵ使用率を超えるか否かを判断する。
【０１３４】
実行部１２０２は、負荷判断部１２０１によって第２の総和が負荷上限以下であると判断された場合、起動が受け付けられたプロセスＰを実行する。サーバＳ１の実行部１２０２は、具体的には、例えば、図１０の（３）において、ＣＰＵ使用率の総和がサーバＳの限界ＣＰＵ使用率以下である場合、プロセスＰ２１の実行に使用できるサーバＳ１内のＣＰＵリソースがあるとして、キューに登録されたプロセスＰ２１を実行する。
【０１３５】
ロード時間判断部１２１０は、さらに、起動が受け付けられたプロセスＰが未実行である場合、起動が受け付けられたプロセスＰのロード時間が、実行中プロセスＰの平均通信時間を超えるか否かを判断する。サーバＳ１のロード時間判断部１２１０は、具体的には、例えば、図１０の（３）において、アプリケーションテーブル３００からプロセスＰ２１のロード時間を取得し、取得したロード時間がプロセスＰ１１の平均通信時間を超えるか否かを判断する。これにより、ロード時間判断部１２１０は、実行中プロセスＰが通信を終了する前に、起動指定されたプロセスＰの実行を開始できるか否かを判断することができる。
【０１３６】
また、ロード時間判断部１２１０は、さらに、起動が受け付けられたプロセスＰのロード時間が、実行中プロセスＰの親プロセスＰとの実通信時間を超えるか否かを判断する。サーバＳ１のロード時間判断部１２１０は、具体的には、例えば、図１０の（３）において、アプリケーションテーブル３００からプロセスＰ２１のロード時間を取得し、取得したロード時間が計測部１２０９によって計測された実通信時間を超えるか否かを判断する。これにより、ロード時間判断部１２１０は、実行中プロセスＰが通信を終了する前に、起動指定されたプロセスＰの実行を開始できるか否かを判断することができる。
【０１３７】
また、実行部１２０２は、さらに、ロード時間判断部１２１０によって実行中プロセスＰの平均通信時間（または実通信時間）以下であると判断された場合、起動が受け付けられたプロセスＰを実行する。サーバＳ１の実行部１２０２は、具体的には、例えば、図１０の（３）において、ＣＰＵ使用率の総和がサーバＳの限界ＣＰＵ使用率以下であり、かつ、プロセスＰ２１のロード時間がプロセスＰ１１の平均通信時間以下である場合、プロセスＰ２１を実行する。
【０１３８】
停止部１２０３は、起動が受け付けられたプロセスＰを、実行が開始されてから実行中プロセスＰの平均通信時間経過後に停止させる。サーバＳ１の停止部１２０３は、具体的には、例えば、図１１の（１）および（２）において、アプリケーションテーブル３００の平均通信時間項目から平均通信時間を取得する。次に、サーバＳ１の停止部１２０３は、プロセスＰ２１の実行開始から、取得した平均通信時間が経過するまで待機する。そして、サーバＳ１の停止部１２０３は、平均通信時間が経過したことを検出すると、実行中のプロセスＰ２１を停止してキューに登録する。これにより、停止部１２０３は、プロセスＰ１１が通信を終了してＣＰＵ使用率が上昇することにより、プロセスＰ間の競合が起こることを回避することができる。
【０１３９】
また、停止部１２０３は、起動が受け付けられたプロセスＰを、実行が開始されてから実行中プロセスＰの平均通信時間または実通信時間のうちいずれか短い方の時間の経過後に停止させる。サーバＳ１の停止部１２０３は、具体的には、例えば、図１１の（１）および（２）において、プロセスＰ２１の実行開始から、アプリケーションテーブル３００から取得した平均通信時間または計測部１２０９によって計測された実通信時間が経過するまで待機する。
【０１４０】
そして、サーバＳ１の停止部１２０３は、平均通信時間が経過したことを検出すると、実行中のプロセスＰ２１を停止してキューに登録する。これにより、停止部１２０３は、プロセスＰ１１が通信を終了してＣＰＵ使用率が上昇することにより、プロセスＰ間の競合が起こることを回避することができる。以下では、通常時にサーバＳによって実行されるそれぞれの処理の詳細な処理手順について説明する。
【０１４１】
（起動指定プロセス実行処理の詳細な処理手順）
次に、図１３および図１４を用いて、起動指定プロセス実行処理の詳細な処理手順について説明する。なお、ステップＳ１３０１〜ステップＳ１３０７の処理は、図５においてサーバＳ１が実行した起動指定プロセス実行処理に対応する。
【０１４２】
図１３および図１４は、起動指定プロセス実行処理の詳細な処理手順を示すフローチャートである。図１３において、まず、サーバＳは、プロセスＰの起動指定があったか否かを判定する（ステップＳ１３０１）。ここで、起動指定がない場合（ステップＳ１３０１：Ｎｏ）、サーバＳは、ステップＳ１３０１に戻り、起動指定を待つ。
【０１４３】
一方、起動指定があった場合（ステップＳ１３０１：Ｙｅｓ）、サーバＳは、起動指定されたプロセスＰを含むアプリケーションのアプリ情報を、アプリケーションテーブル３００から取得する（ステップＳ１３０２）。
【０１４４】
次に、サーバＳは、起動指定されたプロセスＰの平均ＣＰＵ使用率と実行中プロセスＰの平均ＣＰＵ使用率との総和（Ｔ１）を算出する（ステップＳ１３０３）。そして、サーバＳは、マシンテーブル４００から、限界ＣＰＵ使用率（ＭＡＸ）を取得する（ステップＳ１３０４）。
【０１４５】
次に、サーバＳは、ステップＳ１３０３で算出した総和（Ｔ１）が、ステップＳ１３０４で取得した限界ＣＰＵ使用率（ＭＡＸ）を超えているか否かを判定する（ステップＳ１３０５）。ここで、超えていない場合（ステップＳ１３０５：Ｎｏ）、サーバＳは、起動指定されたプロセスＰを実行して（ステップＳ１３０６）、起動指定プロセス実行処理を終了する。
【０１４６】
一方、超えている場合（ステップＳ１３０５：Ｙｅｓ）、サーバＳは、起動指定されたプロセスＰをキューに登録して実行を保留する（ステップＳ１３０７）。次に、サーバＳは、実行中プロセスＰの種別を判定する（ステップＳ１３０８）。
【０１４７】
ここで、実行中プロセスＰの種別が「親」である場合（ステップＳ１３０８：親）、実行中プロセスＰを含むアプリケーションのコネクション数（Ｎｃ）を並列処理数（Ｃ）に決定する（ステップＳ１３０９）。そして、図１４のステップＳ１４０１に移行する。
【０１４８】
一方、実行中プロセスＰの種別が「子」である場合（ステップＳ１３０８：子）、実行中プロセスＰを含むアプリケーションのコネクション数（Ｎｃ）を並列処理数（Ｃ）に決定する（ステップＳ１３１０）。そして、図１４のステップＳ１４０１に移行する。
【０１４９】
図１４において、まず、サーバＳは、異常プロセス停止処理を実行する（ステップＳ１４０１）。次に、サーバＳは、並列処理数適正化処理を実行する（ステップＳ１４０２）。そして、サーバＳは、保留中の起動指定されたプロセスＰの平均ＣＰＵ使用率と実行中プロセスＰの平均ＣＰＵ使用率との総和（Ｔ１）を算出する（ステップＳ１４０３）。
【０１５０】
次に、サーバＳは、マシンテーブル４００から、限界ＣＰＵ使用率（ＭＡＸ）を取得する（ステップＳ１４０４）。そして、サーバＳは、ステップＳ１４０３で算出した総和（Ｔ１）が、ステップＳ１４０４で取得した限界ＣＰＵ使用率（ＭＡＸ）を超えているか否かを判定する（ステップＳ１４０５）。
【０１５１】
ここで、超えていない場合（ステップＳ１４０５：Ｎｏ）、サーバＳは、保留中の起動指定されたプロセスＰを実行して（ステップＳ１４０６）、起動指定プロセス実行処理を終了する。
【０１５２】
一方、超えている場合（ステップＳ１４０５：Ｙｅｓ）、サーバＳは、ＣＰＵ使用率低下タイミング判断処理を実行して（ステップＳ１４０７）、起動指定プロセス実行処理を終了する。これにより、サーバＳは、起動指定されたプロセスＰを実行できるＣＰＵリソースがあれば、起動指定されたプロセスＰを実行することができる。また、起動指定されたプロセスＰを実行できるＣＰＵリソースが不足していれば、起動指定されたプロセスＰを保留することができる。
【０１５３】
（異常プロセス停止処理の詳細な処理手順）
次に、図１５を用いて、異常プロセス停止処理の詳細な処理手順について説明する。なお、ステップＳ１５０１〜ステップＳ１５０４の処理は、図６においてサーバＳ１が実行した異常プロセス停止処理に対応する。また、ステップＳ１５０５〜ステップＳ１５０８の処理は、図７においてサーバＳ１が実行した保留プロセス実行処理に対応する。
【０１５４】
図１５は、異常プロセス停止処理の詳細な処理手順を示すフローチャートである。まず、サーバＳは、実行中プロセスＰの中に子プロセスＰがあるか否かを判定する（ステップＳ１５０１）。ここで、子プロセスＰがない場合（ステップＳ１５０１：Ｎｏ）、サーバＳは、ステップＳ１５０５に移行する。
【０１５５】
一方、子プロセスＰがある場合（ステップＳ１５０１：Ｙｅｓ）、サーバＳは、子プロセスＰの中に、親プロセスＰからの指示待ちの状態である子プロセスＰがあるか否かを判定する（ステップＳ１５０２）。ここで、指示待ちの状態である子プロセスＰがない場合（ステップＳ１５０２：Ｎｏ）、サーバＳは、ステップＳ１５０５に移行する。
【０１５６】
一方、指示待ちの状態である子プロセスＰがある場合（ステップＳ１５０２：Ｙｅｓ）、サーバＳは、待機時間がしきい値を経過した子プロセスＰがあるか否かを判定する（ステップＳ１５０３）。しきい値は、子プロセスＰの平均通信時間（ＣＴ）に、アプリケーションテーブル３００の待機時間打ち切り定数項目の定数（ＬＷ）を乗じた値である。ここで、待機時間がしきい値を経過した子プロセスＰがない場合（ステップＳ１５０３：Ｎｏ）、サーバＳは、ステップＳ１５０５に移行する。
【０１５７】
一方、待機時間がしきい値を経過した子プロセスＰがある場合（ステップＳ１５０３：Ｙｅｓ）、サーバＳは、該当する子プロセスＰを停止しキューに登録して（ステップＳ１５０４）、ステップＳ１５０１に戻る。
【０１５８】
ステップＳ１５０５において、サーバＳは、保留中の起動指定されたプロセスＰの平均ＣＰＵ使用率と実行中プロセスＰの平均ＣＰＵ使用率との総和（Ｔ１）を算出する（ステップＳ１５０５）。
【０１５９】
次に、サーバＳは、マシンテーブル４００から、限界ＣＰＵ使用率（ＭＡＸ）を取得する（ステップＳ１５０６）。そして、サーバＳは、ステップＳ１５０５で算出した総和（Ｔ１）が、ステップＳ１５０６で取得した限界ＣＰＵ使用率（ＭＡＸ）を超えているか否かを判定する（ステップＳ１５０７）。
【０１６０】
ここで、超えていない場合（ステップＳ１５０７：Ｎｏ）、サーバＳは、保留中の起動指定されたプロセスＰを実行して（ステップＳ１５０８）、異常プロセス停止処理を終了する。なお、サーバＳは、異常プロセス停止処理の終了とともに、起動指定プロセス実行処理を終了する。
【０１６１】
一方、超えている場合（ステップＳ１５０７：Ｙｅｓ）、サーバＳは、図１４のステップＳ１４０２に移行する。これにより、サーバＳは、待機時間が異常である実行中プロセスＰを停止して、実行中プロセスにより使用されていたＣＰＵリソースを使用可能にすることができる。
【０１６２】
（並列処理数適正化処理の詳細な処理手順）
次に、図１６を用いて、並列処理数適正化処理の詳細な処理手順について説明する。なお、ステップＳ１６０６〜ステップＳ１６１０の処理は、図８においてサーバＳ１が実行した並列処理数適正化処理に対応する。
【０１６３】
図１６は、並列処理数適正化処理の詳細な処理手順を示すフローチャートである。まず、サーバＳは、実行中のプロセスＰの中に、未選択の子プロセスＰがあるか否かを判定する（ステップＳ１６０１）。ここで、未選択の子プロセスＰがない場合（ステップＳ１６０１：Ｎｏ）、サーバＳは、ステップＳ１６０６に移行する。
【０１６４】
一方、未選択の子プロセスＰがある場合（ステップＳ１６０１：Ｙｅｓ）、サーバＳは、未選択の子プロセスＰを選択する（ステップＳ１６０２）。次に、サーバＳは、選択した子プロセスＰのアプリケーション情報を取得する（ステップＳ１６０３）。
【０１６５】
そして、サーバＳは、選択した子プロセスＰがクラスタリングに対応しているか否かを判定する（ステップＳ１６０４）。ここで、クラスタリングに対応していない場合（ステップＳ１６０４：Ｎｏ）、サーバＳは、ステップＳ１６０１に戻る。
【０１６６】
一方、クラスタリングに対応している場合（ステップＳ１６０４：Ｙｅｓ）、サーバＳは、クラスタリングに対応している子プロセスＰを並列処理数適正化処理の対象として登録して（ステップＳ１６０５）、ステップＳ１６０１に戻る。
【０１６７】
ステップＳ１６０６において、サーバＳは、登録された子プロセスＰ群の各子プロセスＰについて、ＣＰＵ使用時間の少ない順にプロセスＰ間通信の開始から、データ処理開始までの時間（Ｗ１）を計測する（ステップＳ１６０６）。
【０１６８】
次に、サーバＳは、登録された子プロセスＰ群の中に、計測された時間（Ｗ１）が、しきい値を超えている子プロセスＰがあるか否かを判定する（ステップＳ１６０７）。しきい値は、子プロセスＰの平均通信時間（ＣＴ）に、アプリケーションテーブル３００の並列処理打ち切り定数項目の定数（ＬＴ）を乗じた値である。ここで、しきい値を超えている子プロセスＰがない場合（ステップＳ１６０７：Ｎｏ）、サーバＳは、図１４のステップＳ１４０３に移行する。
【０１６９】
一方、しきい値を超えている子プロセスＰがある場合（ステップＳ１６０７：Ｙｅｓ）、サーバＳは、該当する子プロセスＰの親プロセスＰを特定し、親プロセスＰのコネクション数（Ｎｃ）を取得する（ステップＳ１６０８）。
【０１７０】
次に、サーバＳは、取得したコネクション数（Ｎｃ）が、頭打ち並列処理数（ＰＲ）を超えているか否かを判定する（ステップＳ１６０９）。ここで、頭打ち並列処理数を超えていない場合（ステップＳ１６０９：Ｎｏ）、サーバＳは、図１４のステップＳ１４０３に移行する。
【０１７１】
一方、頭打ち並列処理数を超えている場合（ステップＳ１６０９：Ｙｅｓ）、サーバＳは、該当する子プロセスＰを停止しキューに登録して（ステップＳ１６１０）、図１４のステップＳ１４０３に移行する。これにより、サーバＳは、実行中のプロセスを中止して、親プロセスの並列処理数を適正化することができる。
【０１７２】
（ＣＰＵ使用率低下タイミング判断処理の詳細な処理手順）
次に、図１７を用いて、ＣＰＵ使用率低下タイミング判断処理の詳細な処理手順について説明する。なお、ステップＳ１７０１〜ステップＳ１７１１の処理は、図１０および図１１においてサーバＳ１が実行したＣＰＵ使用率低下タイミング判断処理に対応する。
【０１７３】
図１７は、ＣＰＵ使用率低下タイミング判断処理の詳細な処理手順を示すフローチャートである。まず、サーバＳは、実行中の子プロセスＰについて、プロセスＰ間通信の開始タイミングを監視する（ステップＳ１７０１）。
【０１７４】
次に、サーバＳは、プロセスＰ間通信を開始した子プロセスＰがあるか否かを判定する（ステップＳ１７０２）。ここで、プロセスＰ間通信を開始した子プロセスＰがない場合（ステップＳ１７０２：Ｎｏ）、サーバＳは、ステップＳ１７０１に戻り、監視を続ける。
【０１７５】
一方、プロセスＰ間通信を開始した子プロセスＰがある場合（ステップＳ１７０２：Ｙｅｓ）、サーバＳは、保留中の起動指定されたプロセスＰの平均ＣＰＵ使用率と、プロセスＰ間通信時の実行中プロセスＰの平均ＣＰＵ使用率と、の総和（Ｔ２）を算出する（ステップＳ１７０３）。
【０１７６】
次に、サーバＳは、マシンテーブル４００から、限界ＣＰＵ使用率（ＭＡＸ）を取得する（ステップＳ１７０４）。そして、サーバＳは、ステップＳ１７０３で算出した総和（Ｔ２）が、ステップＳ１７０４で取得した限界ＣＰＵ使用率（ＭＡＸ）を超えているか否かを判定する（ステップＳ１７０５）。ここで、超えていない場合（ステップＳ１７０５：Ｎｏ）、サーバＳは、ステップＳ１７０１に戻る。
【０１７７】
一方、超えている場合（ステップＳ１７０５：Ｙｅｓ）、サーバＳは、保留中の起動指定されたプロセスＰは未実行か否かを判定する（ステップＳ１７０６）。ここで、保留中の起動指定されたプロセスＰが実行中である場合（ステップＳ１７０６：Ｎｏ）、サーバＳは、ステップＳ１７１１に移行する。
【０１７８】
一方、保留中の起動指定されたプロセスＰが未実行である場合（ステップＳ１７０６：Ｙｅｓ）、サーバＳは、起動指定されたプロセスＰのロード時間（ＬＤ）を取得する（ステップＳ１７０７）。
【０１７９】
次に、サーバＳは、実通信時間（Ｗ１）がロード時間（ＬＤ）を超えており、かつ、平均通信時間（ＣＴ）がロード時間（ＬＤ）を超えているかを判定する（ステップＳ１７０８）。ここで、実通信時間（Ｗ１）がロード時間（ＬＤ）以下であるか、または平均通信時間（ＣＴ）がロード時間（ＬＤ）以下である場合（ステップＳ１７０８：Ｎｏ）、サーバＳは、図１４のステップＳ１４０３に移行する。
【０１８０】
一方、実通信時間（Ｗ１）がロード時間（ＬＤ）を超えており、かつ、平均通信時間（ＣＴ）がロード時間（ＬＤ）を超えている場合（ステップＳ１７０８：Ｙｅｓ）、サーバＳは、起動指定されたプロセスＰを実行する（ステップＳ１７０９）。
【０１８１】
次に、サーバＳは、起動指定されたプロセスＰを実行開始してから、実通信時間（Ｗ１）または平均通信時間（ＣＴ）のいずれか短い方の時間が経過したか否かを判定する（ステップＳ１７１０）。ここで、経過していない場合（ステップＳ１７１０：Ｎｏ）、サーバＳは、ステップＳ１７１０に戻り、時間の経過を待つ。
【０１８２】
一方、経過した場合（ステップＳ１７１０：Ｙｅｓ）、サーバＳは、起動指定されたプロセスＰが終了したか否かを判定する（ステップＳ１７１１）。ここで、終了していない場合（ステップＳ１７１１：Ｎｏ）、サーバＳは、起動指定されたプロセスＰを停止しキューに登録して（ステップＳ１７１２）、ステップＳ１７０１に戻る。
【０１８３】
一方、終了した場合（ステップＳ１７１１：Ｙｅｓ）、サーバＳは、図１４に戻り、起動指定プロセス実行処理を終了する。これにより、サーバＳは、プロセスＰ間通信の開始により一時的に使用可能になったＣＰＵリソースを使用して、保留中のプロセスＰを実行することができる。また、サーバＳは、プロセスＰ間通信の終了によりＣＰＵ使用率が増加して、ＣＰＵリソースが不足する前に、実行したプロセスＰを停止して、プロセスＰ間の競合を回避することができる。
【０１８４】
以上では、通常時のサーバＳによって実行される処理について説明した。以下では、節電時のサーバＳによって実行される処理について説明する。節電時においては、上述した起動指定プロセス実行処理、保留プロセス実行処理、並列処理数適正化処理、およびＣＰＵ使用率低下タイミング判断処理は、異なる処理を行う。
【０１８５】
（節電時の起動指定プロセス実行処理）
まず、図１８を用いて、節電時の起動指定プロセス実行処理について説明する。節電時の起動指定プロセス実行処理は、サーバＳがプロセスＰの起動指定を受け付けると実行され、節電時において起動指定されたプロセスＰを実行するＣＰＵリソースがあるか否かを判断する処理である。そして、節電時の起動指定プロセス実行処理は、ＣＰＵリソースがあれば、起動指定されたプロセスＰを実行する処理である。
【０１８６】
節電時の起動指定プロセス実行処理により、サーバＳは、節電を実施している状態では起動指定されたプロセスＰを実行するＣＰＵリソースが不足するときは、起動指定されたプロセスＰを実行せずにプロセスＰ間の競合を回避することができる。また、サーバＳは、節電を実施している状態でもＣＰＵリソースが不足していないときには、起動指定されたプロセスＰを実行することができる。
【０１８７】
図１８は、節電時の起動指定プロセス実行処理の一例を示す説明図である。なお、図１で説明した箇所と同様の箇所についての説明は省略する。
【０１８８】
（１）まず、サーバＳ１は、プロセスＰ２１の起動指定を受け付ける。
【０１８９】
（２）次に、サーバＳ１は、アプリケーションテーブル３００の処理時平均ＣＰＵ使用率項目から、起動指定されたプロセスＰ２１と実行中プロセスＰ１１，Ｐ３１とのそれぞれの処理時平均ＣＰＵ使用率を取得する。そして、サーバＳ１は、取得したそれぞれのプロセスＰの処理時平均ＣＰＵ使用率の総和を算出する。これにより、サーバＳ１においてプロセスＰ１１，Ｐ２１，Ｐ３１が並列実行された場合のサーバＳ１の平均ＣＰＵ使用率が推定される。
【０１９０】
次に、サーバＳ１は、マシンテーブル４００の目標ＣＰＵ使用率項目から、節電時のサーバＳの目標ＣＰＵ使用率を取得する。そして、サーバＳ１は、算出したそれぞれのプロセスＰの処理時平均ＣＰＵ使用率の総和が、取得したサーバＳ１の目標ＣＰＵ使用率を超えるか否かを判断する。
【０１９１】
（３）そして、総和が目標ＣＰＵ使用率を超えない場合、サーバＳ１は、消費電力を削減した状態でもプロセスＰ２１の実行に使用できるサーバＳ１内のＣＰＵリソースがあるとして、キューに登録されたプロセスＰ２１を実行する。このように、サーバＳ１は、消費電力を削減した状態でも、プロセスＰ２１を実行するサーバＳ１内のＣＰＵリソースが不足しておらず、プロセスＰ２１を実行してもプロセスＰ間で競合が起こらない場合に、プロセスＰ２１を実行することができる。
【０１９２】
一方、総和が目標ＣＰＵ使用率を超える場合、サーバＳ１は、消費電力を削減した状態では、プロセスＰ２１の実行に使用できるサーバＳ１内のＣＰＵリソースが不足しているとして、起動指定されたプロセスＰ２１をキューに登録し、実行を保留する。このように、サーバＳ１は、消費電力を削減した状態では、プロセスＰ２１を実行するサーバＳ１内のＣＰＵリソースが不足し、プロセスＰ２１を実行するとプロセスＰ間で競合が起きる場合には、プロセスＰ２１の実行を保留することができる。
【０１９３】
なお、上述のように、節電時の起動指定プロセス実行処理は、図５に示した通常時の起動指定プロセス実行処理において、ＣＰＵ使用率の上限として使用された限界ＣＰＵ使用率が、目標ＣＰＵ使用率に置き換えられた処理内容である。
【０１９４】
（節電時の保留プロセス実行処理）
次に、節電時の保留プロセス実行処理について説明する。保留プロセス実行処理は、実行が保留され、キューに登録されたプロセスＰを実行するか否かを判断する処理である。保留プロセス実行処理により、サーバＳは、消費電力を削減した状態でもプロセスＰ２１を実行するサーバＳ１内のＣＰＵリソースが不足しておらず、プロセスＰ２１を実行してもプロセスＰ間で競合が起こらない場合に、プロセスＰ２１を実行することができる。
【０１９５】
図１８に示した節電時の起動指定プロセス実行処理と同様に、節電時の保留プロセス実行処理は、図７に示した通常時の保留プロセス実行処理において、ＣＰＵ使用率の上限として使用された限界ＣＰＵ使用率を、目標ＣＰＵ使用率に置き換えた処理内容である。そのため、節電時の保留プロセス実行処理については説明を省略する。
【０１９６】
（節電時の異常プロセス停止処理）
次に、節電時の異常プロセス停止処理について説明する。節電時の異常プロセス停止処理は、サーバＳの実行中プロセスＰの中に、待機時間が異常なプロセスＰがあるか否かを判断する処理であり、待機時間が異常なプロセスＰがあれば実行を停止する処理である。節電時の異常プロセス停止処理により、サーバＳは、待機時間が異常なプロセスＰを停止させ、ＣＰＵ使用率を減少させることができる。
【０１９７】
ここで、節電時の異常プロセス停止処理は、図６に示した異常プロセス停止処理と同様の処理内容であるため、説明を省略する。さらに、節電時の異常プロセス停止処理によりＣＰＵ使用率を減少させても、ＣＰＵ使用率が目標ＣＰＵ使用率を下回らない場合、サーバＳは、ＣＰＵｓ２０１の中のＣＰＵを停止して消費電力を削減してもよい。
【０１９８】
（節電時の並列処理数適正化処理）
次に、節電時の並列処理数適正化処理について説明する。並列処理数適正化処理は、サーバＳの実行中プロセスＰについて並列処理数を適正化するために、並列処理数が頭打ち並列処理数を超えている場合に実行中プロセスＰを停止する処理である。親プロセスＰの並列処理数を適正化する処理である。並列処理数適正化処理により、サーバＳは、実行中プロセスＰを停止して親プロセスＰの並列処理数を１つ減らし、並列処理数を適正化することができる。また、並列処理数適正化処理により、サーバＳは、親プロセスＰの処理の効率化に貢献していない子プロセスＰを停止して、ＣＰＵ使用率を減少させることができる。
【０１９９】
ここで、節電時の並列処理数適正化処理は、図８に示した並列処理数適正化処理と同様の処理内容であるため、説明を省略する。さらに、節電時の異常プロセス停止処理によりＣＰＵ使用率を減少させても、ＣＰＵ使用率が目標ＣＰＵ使用率を下回らない場合、サーバＳは、ＣＰＵｓ２０１の中のＣＰＵを停止して消費電力を削減してもよい。
【０２００】
（節電時のＣＰＵ使用率低下タイミング判断処理）
次に、図１９および図２０を用いて、節電時のＣＰＵ使用率低下タイミング判断処理について説明する。ＣＰＵ使用率低下タイミング判断処理は、サーバＳでのＣＰＵ使用率が低下した場合に、ＣＰＵを停止してＣＰＵリソースを減少させてもプロセスＰの実行に支障がないかを判断する処理である。また、ＣＰＵ使用率低下タイミング判断処理は、プロセスＰの実行に支障がないと判断されると、ＣＰＵを停止して消費電力を削減する処理である。ＣＰＵ使用率低下タイミング判断処理により、サーバＳは、プロセスＰ間通信の開始により一時的にＣＰＵ使用率が低下した場合に、ＣＰＵを停止して消費電力を削減することができる。
【０２０１】
図１９および図２０は、節電時のＣＰＵ使用率低下タイミング判断処理を示す説明図である。なお、図１で説明した箇所と同様の箇所についての説明は省略する。
【０２０２】
図１９において、（１）まず、サーバＳ１は、実行中のプロセスＰ１１と親プロセスＰになるプロセスＰ１０との通信の開始を検出する。
【０２０３】
（２）次に、サーバＳ１は、アプリケーションテーブル３００の処理時平均ＣＰＵ使用率項目から、実行中プロセスＰ３１の処理時平均ＣＰＵ使用率を取得する。また、サーバＳ１は、アプリケーションテーブル３００の通信時平均ＣＰＵ使用率項目から、通信を開始した実行中プロセスＰ１１の通信時平均ＣＰＵ使用率を取得する。そして、サーバＳ１は、取得したそれぞれのプロセスＰのＣＰＵ使用率の総和を算出する。これにより、サーバＳ１においてプロセスＰ２１，Ｐ３１が並列実行された場合のサーバＳ１の平均ＣＰＵ使用率が推定される。
【０２０４】
また、サーバＳ１は、マシンテーブル４００の目標ＣＰＵ使用率項目から、節電時のサーバＳの目標ＣＰＵ使用率を取得する。次に、サーバＳ１は、算出したＣＰＵ使用率の総和が、取得した節電時のサーバＳの目標ＣＰＵ使用率を超えるか否かを判断する。
【０２０５】
（３）そして、サーバＳ１は、算出したＣＰＵ使用率の総和が取得した節電時のサーバＳの目標ＣＰＵ使用率を超える場合、消費電力を削減するために、ＣＰＵｓ２０１の中のＣＰＵを停止してオフラインにする。これにより、サーバＳ１は、ＣＰＵの動作に消費されていた消費電力を削減することができる。一方、サーバＳ１は、算出したＣＰＵ使用率の総和が取得した節電時のサーバＳの目標ＣＰＵ使用率を超えない場合、ＣＰＵｓ２０１の中のＣＰＵを停止しない。サーバＳ１によってＣＰＵが停止された場合、図２０に移行する。
【０２０６】
図２０において、（１）まず、サーバＳ１は、アプリケーションテーブル３００の平均通信時間項目から平均通信時間を取得する。次に、サーバＳ１は、プロセスＰ２１の実行開始から、取得した平均通信時間が経過するまで待機する。そして、サーバＳ１は、平均通信時間が経過したことを検出する。これにより、サーバＳ１は、プロセスＰ２１がプロセスＰ間通信を終了してデータ処理を開始するタイミングを検出することができる。
【０２０７】
また、サーバＳ１は、平均通信時間の代わりとして、予めプロセスＰ１１の実通信時間を計測しておき、プロセスＰ２１の実行開始から、計測した実通信時間が経過するまで待機し、実通信時間が経過したことを検出してもよい。これにより、サーバＳ１は、プロセスＰ１１の実通信時間が平均通信時間より短い場合にも、プロセスＰ２１がプロセスＰ間通信を終了してデータ処理を開始するタイミングを検出することができる。プロセスＰ１１の実通信時間としては、プロセスＰ１１が通信を開始してから、通信を終了してデータ処理を開始するまでの時間が計測される。
【０２０８】
（２）サーバＳ１は、平均通信時間（または実通信時間）が経過したことを検出すると、プロセスＰ１１が通信を終了してＣＰＵ使用率が上昇するのに備えて、停止させたＣＰＵをオンラインにしてＣＰＵリソースを増やす。
【０２０９】
これにより、サーバＳ１は、プロセスＰ間通信の開始により一時的にＣＰＵ使用率が低下したときに、ＣＰＵｓ２０１の中のＣＰＵを停止させてオフラインにして、消費電力を削減することができる。また、サーバＳ１は、プロセスＰ間通信の終了によりＣＰＵ使用率が増加する前に、停止させたＣＰＵをオンラインにして、ＣＰＵリソースの不足を回避することができる。
【０２１０】
（節電時のサーバＳの機能的構成例）
次に、図１２に示したブロック図を用いて、上述した節電時の処理を実現するサーバＳの機能的構成例について説明する。まず、節電時の起動指定プロセス実行処理を実現する機能について説明する。節電時の起動指定プロセス実行処理は、負荷判断部１２０１と、実行部１２０２と、によって実現される。
【０２１１】
負荷判断部１２０１は、起動が受け付けられたプロセスＰのデータ処理に関する負荷と実行中プロセスＰ群のうち停止部１２０３によって停止していない実行中プロセスＰのデータ処理に関する負荷と、の総和を算出する。次に、負荷判断部１２０１は、算出した総和がコンピュータの節電に関する負荷上限を超えたか否かを判断する。ここで、節電に関する負荷上限とは、例えば上述した目標ＣＰＵ使用率である。
【０２１２】
サーバＳ１の負荷判断部１２０１は、具体的には、例えば、図１８の（２）において、アプリケーションテーブル３００の処理時平均ＣＰＵ使用率項目から、起動指定されたプロセスＰ２１と実行中プロセスＰ１１，Ｐ３１とのそれぞれの処理時平均ＣＰＵ使用率を取得する。そして、サーバＳ１の負荷判断部１２０１は、取得したそれぞれのプロセスＰの処理時平均ＣＰＵ使用率の総和を算出する。
【０２１３】
次に、サーバＳ１の負荷判断部１２０１は、マシンテーブル４００の目標ＣＰＵ使用率項目から、節電時のサーバＳの目標ＣＰＵ使用率を取得する。そして、サーバＳ１の負荷判断部１２０１は、算出したそれぞれのプロセスＰの処理時平均ＣＰＵ使用率の総和が、節電時の計算機のＣＰＵ使用率の取得した上限を超えるか否かを判断する。これにより、負荷判断部１２０１は、消費電力を削減した状態で、起動指定されたプロセスＰの実行に使用できるＣＰＵリソースがあるか否かを判断することができる。
【０２１４】
実行部１２０２は、負荷判断部１２０１によって総和が負荷上限以下であると判断された場合、起動が受け付けられたプロセスＰを実行する。サーバＳ１の実行部１２０２は、具体的には、例えば、図１８の（３）において、総和が目標ＣＰＵ使用率以下であると判断された場合、消費電力を削減した状態でも、プロセスＰ２１の実行に使用できるＣＰＵリソースがあると判断する。そして、サーバＳ１の実行部１２０２は、起動指定されたプロセスＰ２１を実行する。これにより、実行部１２０２は、消費電力を削減した状態でも、プロセスＰ間の競合が起こらない場合にのみ、起動指定されたプロセスＰを実行することができる。
【０２１５】
次に、節電時の保留プロセス実行処理を実現する機能について説明する。節電時の保留プロセス実行処理は、負荷判断部１２０１と、実行部１２０２と、によって実現される。
【０２１６】
負荷判断部１２０１は、実行中プロセスＰ群について並列処理判断部１２０８による判断が実行された場合、起動が受け付けられたプロセスＰのデータ処理に関する負荷と実行中プロセスＰ群のうち停止部１２０３によって停止していない実行中プロセスＰのデータ処理に関する負荷と、の総和が、コンピュータの節電に関する負荷上限を超えたか否かを判断する。
【０２１７】
サーバＳ１の負荷判断部１２０１は、具体的には、例えば、アプリケーションテーブル３００の処理時平均ＣＰＵ使用率項目から、キューに登録されたプロセスＰ２１と実行中プロセスＰ１１，Ｐ３１とのそれぞれの処理時平均ＣＰＵ使用率を取得する。そして、サーバＳ１の負荷判断部１２０１は、取得したそれぞれのプロセスＰの処理時平均ＣＰＵ使用率の総和を算出する。
【０２１８】
次に、サーバＳ１の負荷判断部１２０１は、マシンテーブル４００の目標ＣＰＵ使用率項目から、節電時のサーバＳの目標ＣＰＵ使用率を取得する。そして、サーバＳ１の負荷判断部１２０１は、算出したそれぞれのプロセスＰの処理時平均ＣＰＵ使用率の総和が、節電時の計算機のＣＰＵ使用率の取得した上限を超えるか否かを判断する。これにより、負荷判断部１２０１は、消費電力を削減した状態で、キューに登録されたプロセスＰの実行に使用できるＣＰＵリソースがあるか否かを判断することができる。
【０２１９】
実行部１２０２は、負荷判断部１２０１によって総和が負荷上限以下であると判断された場合、起動が受け付けられたプロセスＰを実行する。サーバＳ１の実行部１２０２は、具体的には、例えば、総和が目標ＣＰＵ使用率以下であると判断された場合、消費電力を削減した状態でも、プロセスＰ２１の実行に使用できるＣＰＵリソースがあると判断する。そして、サーバＳ１の実行部１２０２は、キューに登録されたプロセスＰ２１を実行する。これにより、実行部１２０２は、消費電力を削減した状態でも、プロセスＰ間の競合が起こらない場合にのみ、プロセスＰを実行することができる。
【０２２０】
次に、図１９および図２０に示した節電時のＣＰＵ使用率低下タイミング判断処理を実現する機能について説明する。節電時のＣＰＵ使用率低下タイミング判断処理は、負荷判断部１２０１と、停止部１２０３と、起動時間判断部１２１１と、によって実現される。
【０２２１】
負荷判断部１２０１は、総和が負荷上限を超えたと判断された場合、実行中プロセスＰ群のうち親プロセスＰと通信中のプロセスＰの通信に関する負荷と、実行中プロセスＰのうち通信中でないプロセスＰのデータ処理に関する負荷と、の第３の総和が、節電に関する負荷上限を超えたか否かを判断する。
【０２２２】
サーバＳ１の負荷判断部１２０１は、具体的には、例えば、図１９の（２）において、アプリケーションテーブル３００の処理時平均ＣＰＵ使用率項目から、実行中プロセスＰ３１の処理時平均ＣＰＵ使用率を取得する。また、サーバＳ１の負荷判断部１２０１は、アプリケーションテーブル３００の通信時平均ＣＰＵ使用率項目から、通信を開始した実行中プロセスＰ１１の通信時平均ＣＰＵ使用率を取得する。そして、サーバＳ１の負荷判断部１２０１は、取得したそれぞれのプロセスＰのＣＰＵ使用率の総和を算出する。
【０２２３】
また、サーバＳ１の負荷判断部１２０１は、マシンテーブル４００の目標ＣＰＵ使用率項目から、節電時のサーバＳの目標ＣＰＵ使用率を取得する。次に、サーバＳ１の負荷判断部１２０１は、算出したＣＰＵ使用率の総和が、取得した節電時のサーバＳの目標ＣＰＵ使用率を超えるか否かを判断する。これにより、負荷判断部１２０１は、プロセスＰ間通信時にＣＰＵ使用率が低下したときに、ＣＰＵを停止させて、消費電力の削減を行うか否かを判断することができる。
【０２２４】
停止部１２０３は、プロセッサ群のうち、節電に関する負荷上限に応じたプロセッサ数分のプロセッサを停止させる。サーバＳ１の停止部１２０３は、具体的には、例えば、図１９の（３）において、ＣＰＵ使用率の総和が目標ＣＰＵ使用率を超える場合、ＣＰＵｓ２０１の中のＣＰＵを停止してオフラインにする。これにより、停止部１２０３は、消費電力を削減することができる。
【０２２５】
また、停止部１２０３は、さらに、起動時間判断部１２１１によって実行中プロセスＰの平均通信時間（または実通信時間）以下であると判断された場合、節電に関する負荷上限に応じたプロセッサ数分のプロセッサを停止させてもよい。サーバＳ１の停止部１２０３は、具体的には、例えば、図１９の（３）において、ＣＰＵ使用率の総和が目標ＣＰＵ使用率を超え、かつ、ＣＰＵの起動時間がプロセスＰ１１の平均通信時間以下である場合に、ＣＰＵｓ２０１の中のＣＰＵを停止してオフラインにする。これにより、停止部１２０３は、実行中プロセスＰのプロセスＰ間通信が終了する前に停止したＣＰＵを起動できる場合にのみ、ＣＰＵを停止して、消費電力を削減することができる。
【０２２６】
停止部１２０３は、ＣＰＵを停止した場合、さらに、以下の処理を行う。停止部１２０３は、停止したプロセッサを、停止してから実行中プロセスＰの平均通信時間経過後に停止解除する。サーバＳ１の停止部１２０３は、具体的には、例えば、図２０の（１）および（２）において、アプリケーションテーブル３００の平均通信時間項目から平均通信時間を取得する。次に、サーバＳ１の停止部１２０３は、プロセスＰ２１の実行開始から、取得した平均通信時間が経過するまで待機する。そして、サーバＳ１の停止部１２０３は、平均通信時間が経過したことを検出すると、停止させたＣＰＵをオンラインにする。
【０２２７】
また、停止部１２０３は、停止したプロセッサを、停止してから実行中プロセスＰの平均通信時間または実通信時間のうちいずれか短い方の時間の経過後に停止解除してもよい。サーバＳ１の停止部１２０３は、具体的には、例えば、図２０の（１）および（２）において、アプリケーションテーブル３００から取得した平均通信時間と、計測部１２０９によって計測された実通信時間と、のうち、短い方を選択する。
【０２２８】
そして、平均通信時間が選択された場合は、サーバＳ１の停止部１２０３は、プロセスＰ２１の実行開始から、平均通信時間が経過したことを検出すると、停止させたＣＰＵをオンラインにする。また、実通信時間が選択された場合は、サーバＳ１の停止部１２０３は、プロセスＰ２１の実行開始から、実通信時間が経過したことを検出すると、停止させたＣＰＵをオンラインにする。これにより、停止部１２０３は、プロセスＰ間通信の終了によりＣＰＵ使用率が上昇するのに備えて、ＣＰＵリソースを増やして、プロセスＰ間での競合を回避することができる。
【０２２９】
次に、節電時の異常プロセス停止処理および節電時の並列処理数適正化処理を実現する機能について説明する。節電時の異常プロセス停止処理および節電時の並列処理数適正化処理は、図１２を用いて上述した通常時のサーバＳによって実行される異常プロセス停止処理および並列処理数適正化処理と同様のため、説明を省略する。
【０２３０】
ここで、節電時の異常プロセス停止処理および節電時の並列処理数適正化処理の終了後、オフライン処理を実行して、ＣＰＵを停止させてもよい。オフライン処理により、ＣＰＵを停止させることで、消費電力を削減することができる。オフライン処理は、負荷判断部１２０１と、停止部１２０３と、起動時間判断部１２１１と、によって実現される。
【０２３１】
負荷判断部１２０１は、実行中プロセスＰ群について並列処理判断部１２０８による判断が実行された場合、実行中プロセスＰ群のうち停止部１２０３によって停止していない実行中プロセスＰのデータ処理に関する負荷の総和が、コンピュータの節電に関する負荷上限を超えたか否かを判断する。
【０２３２】
サーバＳ１の負荷判断部１２０１は、具体的には、例えば、アプリケーションテーブル３００の処理時平均ＣＰＵ使用率項目から、実行中プロセスＰ１１，Ｐ３１の処理時平均ＣＰＵ使用率を取得する。そして、サーバＳ１の負荷判断部１２０１は、取得したそれぞれのプロセスＰのＣＰＵ使用率の総和を算出する。
【０２３３】
また、サーバＳ１の負荷判断部１２０１は、マシンテーブル４００の目標ＣＰＵ使用率項目から、節電時のサーバＳの目標ＣＰＵ使用率を取得する。次に、サーバＳ１の負荷判断部１２０１は、算出したＣＰＵ使用率の総和が、取得した節電時のサーバＳの目標ＣＰＵ使用率を超えるか否かを判断する。これにより、負荷判断部１２０１は、ＣＰＵを停止させて、消費電力の削減を行うか否かを判断することができる。
【０２３４】
なお、停止部１２０３および起動時間判断部１２１１の機能は、節電時のＣＰＵ使用率低下タイミング判断処理を実現する機能と同様のため、説明を省略する。
【０２３５】
（節電開始処理の詳細な処理手順）
次に、図２１および図２２を用いて、節電開始処理の詳細な処理手順について説明する。
【０２３６】
図２１および図２２は、節電開始処理の詳細な処理手順を示すフローチャートである。図２１において、まず、サーバＳは、現在時刻が節電時間帯に含まれているか否かを判定する（ステップＳ２１０１）。ここで、含まれていない場合（ステップＳ２１０１：Ｎｏ）、サーバＳは、ステップＳ２１０１に戻る。
【０２３７】
一方、含まれている場合（ステップＳ２１０１：Ｙｅｓ）、サーバＳは、現在日時が適用除外日に含まれているか否かを判定する（ステップＳ２１０２）。ここで、含まれている場合（ステップＳ２１０２：Ｙｅｓ）、サーバＳは、ステップＳ２１０１に戻る。
【０２３８】
一方、含まれていない場合（ステップＳ２１０２：Ｎｏ）、サーバＳは、実行中プロセスＰのアプリ情報を、アプリケーションテーブル３００から取得する（ステップＳ２１０３）。次に、サーバＳは、実行中プロセスＰの平均ＣＰＵ使用率の総和（Ｔ１）を算出する（ステップＳ２１０４）。そして、サーバＳは、マシンテーブル４００から、節電時の目標ＣＰＵ使用率（ＳＡＶＥ）を取得する（ステップＳ２１０５）。
【０２３９】
次に、サーバＳは、ステップＳ２１０４で算出した総和（Ｔ１）が、ステップＳ２１０５で取得した目標ＣＰＵ使用率（ＳＡＶＥ）を超えているか否かを判定する（ステップＳ２１０６）。ここで、超えていない場合（ステップＳ２１０６：Ｎｏ）、サーバＳは、オフライン処理を実行して（ステップＳ２１０７）、ステップＳ２１０１に戻る。
【０２４０】
一方、超えている場合（ステップＳ２１０６：Ｙｅｓ）、サーバＳは、実行中プロセスＰの種別を判定する（ステップＳ２１０８）。ここで、実行中プロセスＰの種別が「親」である場合（ステップＳ２１０８：親）、サーバＳは、実行中プロセスＰを含むアプリケーションのコネクション数（Ｎｃ）を並列処理数（Ｃ）に決定する（ステップＳ２１０９）。そして、サーバＳは、図２２のステップＳ２２０１に移行する。
【０２４１】
一方、実行中プロセスＰの種別が「子」である場合（ステップＳ２１０８：子）、サーバＳは、実行中プロセスＰを含むアプリケーションのコネクション数（Ｎｃ）を並列処理数（Ｃ）に決定する（ステップＳ２１１０）。そして、サーバＳは、図２２のステップＳ２２０１に移行する。
【０２４２】
図２２において、まず、サーバＳは、節電時の異常プロセス停止処理を実行する（ステップＳ２２０１）。次に、サーバＳは、節電時の並列処理数適正化処理を実行する（ステップＳ２２０２）。そして、サーバＳは、実行中プロセスＰの平均ＣＰＵ使用率の総和（Ｔ１）を算出する（ステップＳ２２０３）。
【０２４３】
次に、サーバＳは、マシンテーブル４００から、節電時の目標ＣＰＵ使用率（ＳＡＶＥ）を取得する（ステップＳ２２０４）。そして、サーバＳは、ステップＳ２２０３で算出した総和（Ｔ１）が、ステップＳ２２０４で取得した目標ＣＰＵ使用率（ＳＡＶＥ）を超えているか否かを判定する（ステップＳ２２０５）。
【０２４４】
ここで、超えていない場合（ステップＳ２２０５：Ｎｏ）、サーバＳは、オフライン処理を実行する（ステップＳ２２０６）。
【０２４５】
一方、超えている場合（ステップＳ２２０５：Ｙｅｓ）、サーバＳは、節電時のＣＰＵ使用率低下タイミング判断処理を実行して（ステップＳ２２０７）、ステップＳ２１０１に戻る。
【０２４６】
（節電時の異常プロセス停止処理の詳細な処理手順）
次に、図２３を用いて、節電時の異常プロセス停止処理の詳細な処理手順について説明する。
【０２４７】
図２３は、節電時の異常プロセス停止処理の詳細な処理手順を示すフローチャートである。まず、サーバＳは、実行中プロセスＰの中に子プロセスＰがあるか否かを判定する（ステップＳ２３０１）。ここで、子プロセスＰがない場合（ステップＳ２３０１：Ｎｏ）、サーバＳは、ステップＳ２３０５に移行する。
【０２４８】
一方、子プロセスＰがある場合（ステップＳ２３０１：Ｙｅｓ）、サーバＳは、子プロセスＰの中に、親プロセスＰからの指示待ちの状態である子プロセスＰがあるか否かを判定する（ステップＳ２３０２）。ここで、指示待ちの状態である子プロセスＰがない場合（ステップＳ２３０２：Ｎｏ）、サーバＳは、ステップＳ２３０５に移行する。
【０２４９】
一方、指示待ちの状態である子プロセスＰがある場合（ステップＳ２３０２：Ｙｅｓ）、サーバＳは、待機時間がしきい値（ＣＴ×ＬＷ）を経過した子プロセスＰがあるか否かを判定する（ステップＳ２３０３）。ここで、待機時間がしきい値を経過した子プロセスＰがない場合（ステップＳ２３０３：Ｎｏ）、サーバＳは、ステップＳ２３０５に移行する。
【０２５０】
一方、待機時間がしきい値を経過した子プロセスＰがある場合（ステップＳ２３０３：Ｙｅｓ）、サーバＳは、該当する子プロセスＰを停止しキューに登録して（ステップＳ２３０４）、ステップＳ２３０１に戻る。
【０２５１】
ステップＳ２３０５において、サーバＳは、実行中プロセスＰの平均ＣＰＵ使用率の総和（Ｔ１）を算出する（ステップＳ２３０５）。次に、サーバＳは、マシンテーブル４００から、節電時の目標ＣＰＵ使用率（ＳＡＶＥ）を取得する（ステップＳ２３０６）。そして、サーバＳは、ステップＳ２３０５で算出した総和（Ｔ１）が、ステップＳ２３０６で取得した節電時の目標ＣＰＵ使用率（ＳＡＶＥ）を超えているか否かを判定する（ステップＳ２３０７）。
【０２５２】
ここで、超えていない場合（ステップＳ２３０７：Ｎｏ）、サーバＳは、オフライン処理を実行する（ステップＳ２３０８）。一方、超えている場合（ステップＳ２３０７：Ｙｅｓ）、サーバＳは、図２２のステップＳ２２０２に移行する。これにより、サーバＳは、待機時間が異常である実行中プロセスＰを停止して、消費電力を削減することができる。
【０２５３】
（節電時の並列処理数適正化処理の詳細な処理手順）
次に、節電時の並列処理数適正化処理の詳細な処理手順について説明する。ここで、節電時の並列処理数適正化処理の処理内容は、図１６に示した並列処理数適正化処理の処理内容と同様のため、説明を省略する。なお、節電時の並列処理数適正化処理の終了後、サーバＳは、図２２のステップＳ２２０３に移行する。
【０２５４】
（節電時のＣＰＵ使用率低下タイミング判断処理の詳細な処理手順）
次に、図２４を用いて、節電時のＣＰＵ使用率低下タイミング判断処理の詳細な処理手順について説明する。
【０２５５】
図２４は、節電時のＣＰＵ使用率低下タイミング判断処理の詳細な処理手順を示すフローチャートである。まず、サーバＳは、実行中の子プロセスＰについて、プロセスＰ間通信の開始タイミングを監視する（ステップＳ２４０１）。
【０２５６】
次に、サーバＳは、プロセスＰ間通信を開始した子プロセスＰがあるか否かを判定する（ステップＳ２４０２）。ここで、プロセスＰ間通信を開始した子プロセスＰがない場合（ステップＳ２４０２：Ｎｏ）、サーバＳは、ステップＳ２４０１に戻り、監視を続ける。
【０２５７】
一方、プロセスＰ間通信を開始した子プロセスＰがある場合（ステップＳ２４０２：Ｙｅｓ）、サーバＳは、プロセスＰ間通信時の実行中プロセスＰの平均ＣＰＵ使用率の総和（Ｔ３）を算出する（ステップＳ２４０３）。次に、サーバＳは、マシンテーブル４００から、節電時の目標ＣＰＵ使用率（ＳＡＶＥ）を取得する（ステップＳ２４０４）。
【０２５８】
そして、サーバＳは、ステップＳ２４０３で算出した総和（Ｔ３）が、ステップＳ２４０４で取得した節電時の目標ＣＰＵ使用率（ＳＡＶＥ）を超えているか否かを判定する（ステップＳ２４０５）。ここで、超えていない場合（ステップＳ２４０５：Ｎｏ）、サーバＳは、ステップＳ２４０１に戻る。
【０２５９】
一方、超えている場合（ステップＳ２４０５：Ｙｅｓ）、サーバＳは、ＣＰＵ起動時間（ＣＡ）をマシンテーブル４００から取得する（ステップＳ２４０６）。次に、サーバＳは、実通信時間（Ｗ１）がＣＰＵ起動時間（ＣＡ）を超えており、かつ、平均通信時間（ＣＴ）がＣＰＵ起動時間（ＣＡ）を超えているかを判定する（ステップＳ２４０７）。ここで、実通信時間（Ｗ１）がＣＰＵ起動時間（ＣＡ）以下であるか、または平均通信時間（ＣＴ）がＣＰＵ起動時間（ＣＡ）以下である場合（ステップＳ２４０７：Ｎｏ）、サーバＳは、図２２のステップＳ２２０３に移行する。
【０２６０】
一方、実通信時間（Ｗ１）がＣＰＵ起動時間（ＣＡ）を超えており、かつ、平均通信時間（ＣＴ）がＣＰＵ起動時間（ＣＡ）を超えている場合（ステップＳ２４０７：Ｙｅｓ）、サーバＳは、停止させるＣＰＵ数を算出する（ステップＳ２４０８）。
【０２６１】
次に、サーバＳは、停止させるＣＰＵ数分のＣＰＵを停止しオフラインにする（ステップＳ２４０９）。そして、サーバＳは、実通信時間（Ｗ１）または平均通信時間（ＣＴ）のいずれか短い方の時間が経過したか否かを判定する（ステップＳ２４１０）。ここで、経過していない場合（ステップＳ２４１０：Ｎｏ）、サーバＳは、ステップＳ２４１０に戻り、時間の経過を待つ。
【０２６２】
一方、経過した場合（ステップＳ２４１０：Ｙｅｓ）、サーバＳは、停止させたＣＰＵをオンラインにして（ステップＳ２４１１）、図２１のステップＳ２１０１に戻る。これにより、サーバＳは、プロセスＰ間通信時にＣＰＵ使用率が低下した場合、ＣＰＵを停止させて、消費電力を削減することができる。
【０２６３】
（オフライン処理の詳細な処理手順）
次に、図２５を用いて、オフライン処理の詳細な処理手順について説明する。
【０２６４】
図２５は、オフライン処理の詳細な処理手順を示すフローチャートである。まず、サーバＳは、停止させるＣＰＵ数を算出する（ステップＳ２５０１）。次に、サーバＳは、停止させるＣＰＵ数分のＣＰＵを停止しオフラインにする（ステップＳ２５０２）。
【０２６５】
そして、サーバＳは、節電時間が終了したか否かを判定する（ステップＳ２５０３）。ここで、終了していない場合（ステップＳ２５０３：Ｎｏ）、サーバＳは、ステップＳ２５０３に戻り、節電時間の終了を待つ。
【０２６６】
一方、終了した場合（ステップＳ２５０３：Ｙｅｓ）、サーバＳは、停止させたＣＰＵをオンラインにして（ステップＳ２５０４）、図２１のステップＳ２１０１に戻る。これにより、サーバＳは、ＣＰＵを停止させて、消費電力を削減することができる。
【０２６７】
以上説明したように、管理装置になるサーバＳは、実行中プロセスＰの親プロセスＰの並列処理数を取得し、取得した並列処理数が頭打ち並列処理数を超えている場合、実行中プロセスＰを停止する。これにより、サーバＳは、親プロセスＰの並列処理数を適正化することができる。また、サーバＳは、親プロセスＰの処理の効率化に貢献していない実行中プロセスＰを停止して、実行中プロセスＰに使用されていたＣＰＵリソースを使用可能にすることができる。結果として、サーバＳは、使用可能にされたＣＰＵリソースを、保留中のプロセスＰの処理に使用して実行することができるようになり、ＣＰＵリソースを効率よく使用することができる。
【０２６８】
また、サーバＳは、節電時には、実行中プロセスＰを停止させることでＣＰＵ使用率が低下した場合に、ＣＰＵｓ２０１のいずれかのＣＰＵを停止しても実行中プロセスのＣＰＵリソースが不足しないかを判断する。そして、ＣＰＵリソースが不足しないと判断した場合、ＣＰＵを停止して、ＣＰＵの動作に消費されていた消費電力を削減することができる。
【０２６９】
また、サーバＳは、プロセスＰ間通信によりＣＰＵ使用率が低下した場合に、保留中のプロセスＰを実行できるＣＰＵリソースがあるか否かを判定し、ＣＰＵリソースがある場合、保留中のプロセスＰを実行する。これにより、サーバＳは、プロセスＰ間通信の開始により一時的に使用可能になったＣＰＵリソースを使用して、保留中のプロセスＰを実行することができる。
【０２７０】
また、サーバＳは、プロセスを実行してから実行中プロセスの平均通信時間の経過を監視して、プロセスＰ間通信の終了より前に、実行したプロセスを停止して、ＣＰＵリソースを増やす。これにより、サーバＳは、プロセスＰ間通信の終了によりＣＰＵ使用率が増加して、ＣＰＵリソースが不足する前に、実行したプロセスＰを停止して、プロセスＰ間の競合を回避することができる。結果として、サーバＳは、ＣＰＵリソースを効率よく使用することができる。
【０２７１】
また、サーバＳは、節電時には、プロセスＰ間通信によりＣＰＵ使用率が低下した場合に、ＣＰＵｓ２０１のいずれかのＣＰＵを停止しても実行中プロセスのＣＰＵリソースが不足しないかを判断する。そして、サーバＳは、ＣＰＵリソースが不足しないと判断された場合、ＣＰＵを停止して、ＣＰＵの動作に消費されていた消費電力を削減することができる。
【０２７２】
また、サーバＳは、ＣＰＵを停止してから実行中プロセスの平均通信時間（または実通信時間）の経過を監視して、プロセスＰ間通信の終了より前に、ＣＰＵをオンラインにして、ＣＰＵリソースを増やす。これにより、サーバＳは、プロセスＰ間通信の終了によりＣＰＵ使用率が増加しＣＰＵリソースが不足してしまう前に、ＣＰＵをオンラインにして、プロセスＰ間の競合を回避することができる。
【０２７３】
また、サーバＳは、実行中プロセスＰの待機時間がしきい値を超えている場合、実行中プロセスＰの待機時間が異常であると判断し、実行中プロセスＰを停止する。これにより、サーバＳは、待機時間が異常である実行中プロセスＰを停止して、実行中プロセスＰに使用されていたＣＰＵリソースを使用可能にすることができる。結果として、サーバＳは、使用可能にされたＣＰＵリソースを、保留中のプロセスＰの処理に使用して実行することができるようになり、ＣＰＵリソースを効率よく使用することができる。
【０２７４】
また、サーバＳは、節電時には、実行中プロセスＰを停止させることでＣＰＵ使用率が低下した場合、ＣＰＵｓ２０１のいずれかのＣＰＵを停止しても実行中プロセスのＣＰＵリソースが不足しないかを判断する。そして、ＣＰＵリソースが不足しないと判断した場合、ＣＰＵを停止して、ＣＰＵの動作に消費されていた消費電力を削減することができる。
【０２７５】
なお、本実施の形態で説明した管理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本管理プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本管理プログラムは、インターネット等のネットワークを介して配布してもよい。
【０２７６】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０２７７】
（付記１）実行中プロセス群の中からいずれかの実行中プロセスを選択し、
選択されたいずれかの実行中プロセスの親プロセスを実行する計算機から、前記親プロセスが通信を行う通信相手のプロセス数を取得し、
取得されたプロセス数が、前記親プロセスを含むソフトウェアに関する並列処理上限数を超えたか否かを判断し、
前記並列処理上限数を超えたと判断された場合、前記いずれかの実行中プロセスの実行を停止させる、
処理をコンピュータに実行させることを特徴とする管理プログラム。
【０２７８】
（付記２）前記実行中プロセスの前記親プロセスとの実通信時間を計測する処理を前記コンピュータに実行させ、
前記並列処理上限数を超えたか否かを判断する処理は、
さらに、計測された実通信時間が前記実行中プロセスの平均通信時間に応じたしきい値以上であるか否かを判断し、
前記停止させる処理は、
さらに、前記実通信時間が前記しきい値以上である場合、前記実行中プロセスの実行を停止させることを特徴とする付記１に記載の管理プログラム。
【０２７９】
（付記３）前記選択する処理は、
前記実行中プロセス群のうちＣＰＵ使用時間が短い実行中プロセスから順次選択することを特徴とする付記１または２に記載の管理プログラム。
【０２８０】
（付記４）前記実行中プロセス群について前記並列処理上限数を超えたか否かの判断が実行された場合、起動が受け付けられたプロセスのデータ処理に関する負荷と、前記実行中プロセス群のうち停止していない実行中プロセスのデータ処理に関する負荷と、の総和が、前記コンピュータの負荷上限を超えたか否かを判断し、
前記総和が前記負荷上限以下であると判断された場合、前記起動が受け付けられたプロセスを実行する、
処理を前記コンピュータに実行させることを特徴とする付記１〜３のいずれか一つに記載の管理プログラム。
【０２８１】
（付記５）前記負荷上限を超えたか否かを判断する処理は、
前記総和（以下、「第１の総和」）が前記負荷上限を超えたと判断された場合、前記実行中プロセス群のうち前記親プロセスと通信中のプロセスの通信に関する負荷と、前記実行中プロセスのうち前記通信中でないプロセスのデータ処理に関する負荷と、前記起動が受け付けられたプロセスのデータ処理に関する負荷と、の第２の総和が、前記負荷上限を超えたか否かを判断し、
前記実行する処理は、
前記第２の総和が前記負荷上限以下であると判断された場合、前記起動が受け付けられたプロセスを実行することを特徴とする付記４に記載の管理プログラム。
【０２８２】
（付記６）前記起動が受け付けられたプロセスが未実行である場合、前記起動が受け付けられたプロセスのロード時間が、前記実行中プロセスの平均通信時間を超えるか否かを判断する処理を前記コンピュータに実行させ、
前記実行する処理は、
前記実行中プロセスの平均通信時間以下であると判断された場合、前記起動が受け付けられたプロセスを実行することを特徴とする付記５に記載の管理プログラム。
【０２８３】
（付記７）前記ロード時間を判断する処理は、
さらに、前記起動が受け付けられたプロセスのロード時間が、前記実行中プロセスの前記親プロセスとの実通信時間を超えるか否かを判断し、
前記実行する処理は、
前記実通信時間以下であると判断された場合、前記起動が受け付けられたプロセスを実行することを特徴とする付記６に記載の管理プログラム。
【０２８４】
（付記８）前記停止させる処理は、
前記起動が受け付けられたプロセスを、実行が開始されてから前記実行中プロセスの平均通信時間経過後に停止させ、
前記負荷上限を超えたか否かを判断する処理は、
前記起動が受け付けられたプロセスの停止後に、前記第２の総和が前記負荷上限を超えたか否かを判断することを特徴とする付記６または７に記載の管理プログラム。
【０２８５】
（付記９）前記停止させる処理は、
前記起動が受け付けられたプロセスを、実行が開始されてから前記実行中プロセスの平均通信時間または前記実通信時間のうちいずれか短い方の時間の経過後に停止させ、
前記負荷上限を超えたか否かを判断する処理は、
前記起動が受け付けられたプロセスの停止後に、前記第２の総和が前記負荷上限を超えたか否かを判断することを特徴とする付記７に記載の管理プログラム。
【０２８６】
（付記１０）前記実行中プロセス群のうち前記親プロセスからの指示待ち状態の実行中プロセスを検出し、
検出された指示待ち状態の実行中プロセスの待機時間が、前記指示待ち状態の実行中プロセスの平均通信時間に応じたしきい値を経過したか否かを判断する処理を前記コンピュータに実行させ、
前記停止させる処理は、
前記指示待ち状態の実行中プロセスの待機時間が、前記指示待ち状態の実行中プロセスの平均通信時間に応じたしきい値を経過したと判断された場合、前記指示待ち状態の実行中プロセスの実行を停止させることを特徴とする付記１〜９のいずれか一つに記載の管理プログラム。
【０２８７】
（付記１１）前記実行中プロセス群について前記並列処理上限数を超えたか否かの判断が実行された場合、前記実行中プロセス群のうち停止していない実行中プロセスのデータ処理に関する負荷と、の総和が、前記コンピュータの節電に関する負荷上限を超えたか否かを判断し、
前記総和が前記負荷上限以下であると判断された場合、前記起動が受け付けられたプロセスを実行する、
処理を前記コンピュータに実行させることを特徴とする付記１〜３のいずれか一つに記載の管理プログラム。
【０２８８】
（付記１２）前記負荷上限を超えたか否かを判断する処理は、
前記総和（以下、「第１の総和」）が前記負荷上限を超えたと判断された場合、前記実行中プロセス群のうち前記親プロセスと通信中のプロセスの通信に関する負荷と、前記実行中プロセスのうち前記通信中でないプロセスのデータ処理に関する負荷と、の第３の総和が、前記節電に関する負荷上限を超えたか否かを判断し、
前記停止させる処理は、
プロセッサ群のうち、前記節電に関する負荷上限に応じたプロセッサ数分のプロセッサを停止させることを特徴とする付記１１に記載の管理プログラム。
【０２８９】
（付記１３）前記プロセッサ群のプロセッサ起動時間が、前記実行中プロセスの平均通信時間を超えるか否かを判断する処理を前記コンピュータに実行させ、
前記停止させる処理は、
前記実行中プロセスの平均通信時間以下であると判断された場合、前記節電に関する負荷上限に応じたプロセッサ数分のプロセッサを停止させることを特徴とする付記１２に記載の管理プログラム。
【０２９０】
（付記１４）さらに、前記プロセッサ群のプロセッサ起動時間が、前記実行中プロセスの前記親プロセスとの実通信時間を超えるか否かを判断する処理を前記コンピュータに実行させ、
前記停止させる処理は、
前記実通信時間以下であると判断された場合、前記節電に関する負荷上限に応じたプロセッサ数分のプロセッサを停止させることを特徴とする付記１３に記載の管理プログラム。
【０２９１】
（付記１５）前記停止させる処理は、
停止したプロセッサを、停止してから前記実行中プロセスの平均通信時間経過後に停止解除することを特徴とする付記１３または１４に記載の管理プログラム。
【０２９２】
（付記１６）前記停止させる処理は、
停止したプロセッサを、停止してから前記実行中プロセスの平均通信時間または前記実通信時間のうちいずれか短い方の時間の経過後に停止解除することを特徴とする付記１４に記載の管理プログラム。
【０２９３】
（付記１７）実行中プロセス群の中からいずれかの実行中プロセスを選択し、
選択されたいずれかの実行中プロセスの親プロセスを実行する計算機から、前記親プロセスが通信を行う通信相手のプロセス数を取得し、
取得されたプロセス数が、前記親プロセスを含むソフトウェアに関する並列処理上限数を超えたか否かを判断しと、
前記並列処理上限数を超えたと判断された場合、前記いずれかの実行中プロセスの実行を停止させる、
処理をコンピュータが実行することを特徴とする管理方法。
【０２９４】
（付記１８）実行中プロセス群の中からいずれかの実行中プロセスを選択する選択部と、
前記選択部によって選択されたいずれかの実行中プロセスの親プロセスを実行する計算機から、前記親プロセスが通信を行う通信相手のプロセス数を取得する取得部と、
前記取得部によって取得されたプロセス数が、前記親プロセスを含むソフトウェアに関する並列処理上限数を超えたか否かを判断する並列処理判断部と、
前記並列処理判断部によって前記並列処理上限数を超えたと判断された場合、前記いずれかの実行中プロセスの実行を停止させる停止部と、
を備えることを特徴とする管理装置。
【符号の説明】
【０２９５】
Ｓ  サーバ
Ｐ  プロセス
１２０１  負荷判断部
１２０２  実行部
１２０３  停止部
１２０４  検出部
１２０５  異常判断部
１２０６  選択部
１２０７  取得部
１２０８  並列処理判断部
１２０９  計測部
１２１０  ロード時間判断部
１２１１  起動時間判断部
【図１】
0005861402.tif 000002
【図２】
0005861402.tif 000003
【図３】
0005861402.tif 000004
【図４】
0005861402.tif 000005
【図５】
0005861402.tif 000006
【図６】
0005861402.tif 000007
【図７】
0005861402.tif 000008
【図８】
0005861402.tif 000009
【図９】
0005861402.tif 000010
【図１０】
0005861402.tif 000011
【図１１】
0005861402.tif 000012
【図１２】
0005861402.tif 000013
【図１３】
0005861402.tif 000014
【図１４】
0005861402.tif 000015
【図１５】
0005861402.tif 000016
【図１６】
0005861402.tif 000017
【図１７】
0005861402.tif 000018
【図１８】
0005861402.tif 000019
【図１９】
0005861402.tif 000020
【図２０】
0005861402.tif 000021
【図２１】
0005861402.tif 000022
【図２２】
0005861402.tif 000023
【図２３】
0005861402.tif 000024
【図２４】
0005861402.tif 000025
【図２５】
0005861402.tif 000026